diff --git a/.editorconfig b/.editorconfig index 592aef7b7b1..f8ad6ea8e56 100644 --- a/.editorconfig +++ b/.editorconfig @@ -141,7 +141,8 @@ csharp_prefer_simple_using_statement = false:none # IDE006 csharp_using_directive_placement = outside_namespace:suggestion # IDE0065: using directive placement # File header preferences -file_header_template = unset # IDE0073: Require file header +dotnet_diagnostic.IDE0073.severity = warning # IDE0073: Require file header +file_header_template = Licensed to the .NET Foundation under one or more agreements.\nThe .NET Foundation licenses this file to you under the MIT license. # Namespace naming preferences dotnet_style_namespace_match_folder = true:suggestion # IDE0130: Namespace does not match folder structure diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index f8cb2d25c96..3529e471e79 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -5,14 +5,15 @@ runs: steps: - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 - uses: actions/setup-dotnet@v4 with: dotnet-version: | + 9.x 8.x - - run: npm install + - run: npm ci shell: bash working-directory: templates diff --git a/.github/actions/report-failed-tests/action.yml b/.github/actions/report-failed-tests/action.yml deleted file mode 100644 index 44ea07de4e5..00000000000 --- a/.github/actions/report-failed-tests/action.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Report failed tests -description: Report failed tests -runs: - using: "composite" - steps: - - name: Report failed tests - shell: pwsh - run: | - $trxFiles = Get-ChildItem test -Filter *.trx -Recurse - $failedTests = @() - foreach($trxFile in $trxFiles) - { - [xml]$trx = Get-Content $trxFile -Raw - if($trx.TestRun.ResultSummary.outcome -eq 'Failed') - { - $failedTests += $trx.TestRun.Results.UnitTestResult | where { $_.outcome -eq 'Failed' } - } - } - - if($failedTests.Length -gt 0) - { - Write-Output "## Failed Tests" >> $env:GITHUB_STEP_SUMMARY - foreach($failedTest in $failedTests) - { - Write-Output "<details><summary>$($failedTest.testName)</summary><pre>$($failedTest.Output.ErrorInfo.Message)`nStackTrace:`n"$($failedTest.Output.ErrorInfo.StackTrace)"</pre></details>" >> $env:GITHUB_STEP_SUMMARY - } - } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1be8953f9cb..7fbcefc84a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,6 @@ name: ci on: - pull_request_target: + pull_request: branches: [ main, feature/*, hotfix/* ] push: branches: [ main, feature/*, hotfix/* ] @@ -9,7 +9,6 @@ on: jobs: test: runs-on: ${{ matrix.os }} - environment: ci strategy: fail-fast: false matrix: @@ -34,9 +33,9 @@ jobs: - run: dotnet test -c Release -f net8.0 --no-build --collect:"XPlat Code Coverage" --consoleLoggerParameters:"Summary;Verbosity=Minimal" id: test-net80 - - run: dotnet test -c Release -f net6.0 --no-build --collect:"XPlat Code Coverage" --consoleLoggerParameters:"Summary;Verbosity=Minimal" + - run: dotnet test -c Release -f net9.0 --no-build --collect:"XPlat Code Coverage" --consoleLoggerParameters:"Summary;Verbosity=Minimal" if: matrix.os == 'ubuntu-latest' - id: test-net60 + id: test-net90 - run: npm i -g @percy/cli if: matrix.os == 'ubuntu-latest' @@ -73,10 +72,6 @@ jobs: name: dump path: /tmp/coredump* - - name: Report failed tests - if: ${{ failure() && (steps.test-net80.outcome == 'failure' || steps.test-net60.outcome == 'failure') }} - uses: ./.github/actions/report-failed-tests - publish-docs: if: github.event_name == 'push' && github.ref == 'refs/heads/main' needs: [test] diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 727c9c9464c..6ba3f724aba 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -13,11 +13,6 @@ jobs: permissions: packages: write steps: - - uses: actions/setup-dotnet@v4 - with: - dotnet-version: | - 9.x - - uses: actions/checkout@v4 with: fetch-depth: 0 diff --git a/.github/workflows/reports.yml b/.github/workflows/reports.yml new file mode 100644 index 00000000000..88edd1c0b69 --- /dev/null +++ b/.github/workflows/reports.yml @@ -0,0 +1,58 @@ +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 + } diff --git a/Directory.Build.props b/Directory.Build.props index 46f3e4a1dc1..9ec7dd187a7 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,7 +1,7 @@ <Project> <PropertyGroup> <ContinuousIntegrationBuild Condition="'$(GITHUB_ACTIONS)' == 'true'">true</ContinuousIntegrationBuild> - <TargetFrameworks>net6.0;net8.0</TargetFrameworks> + <TargetFrameworks>net8.0;net9.0</TargetFrameworks> <TargetFrameworks Condition="'$(DOCFX_PREVIEW_BUILD)' == 'true'">net8.0;net9.0</TargetFrameworks> <LangVersion>Preview</LangVersion> <ImplicitUsings>enable</ImplicitUsings> @@ -45,13 +45,6 @@ <None Include="$(MSBuildThisFileDirectory)\README.md" Pack="true" PackagePath="\"/> </ItemGroup> - <ItemGroup Condition="'$(ProjectName)' != 'Docfx.Common'"> - <PackageReference Include="PolySharp"> - <PrivateAssets>all</PrivateAssets> - <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> - </PackageReference> - </ItemGroup> - <ItemGroup> <PackageReference Include="Microsoft.SourceLink.GitHub"> <PrivateAssets>all</PrivateAssets> @@ -59,7 +52,6 @@ </PackageReference> </ItemGroup> - <!-- Remove Node.js runtime dependencies that used by playwright --> <Target Name="RemoveNodeJsRuntimes" AfterTargets="CopyPlaywrightFilesToOutput"> <ItemGroup> diff --git a/Directory.Packages.props b/Directory.Packages.props index 637af77e5c6..2ca7cb4b913 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,45 +4,30 @@ <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> </PropertyGroup> <ItemGroup> - <PackageVersion Include="HtmlAgilityPack" Version="1.11.65" /> + <PackageVersion Include="HtmlAgilityPack" Version="1.11.70" /> <PackageVersion Include="ICSharpCode.Decompiler" Version="8.2.0.7535" /> <PackageVersion Include="IgnoresAccessChecksToGenerator" Version="0.7.0" /> - <PackageVersion Include="Jint" Version="4.0.2" /> - <PackageVersion Include="JsonSchema.Net" Version="7.2.2" /> - <PackageVersion Include="Markdig" Version="0.37.0" /> - <PackageVersion Include="Microsoft.Playwright" Version="1.46.0" /> + <PackageVersion Include="Jint" Version="4.1.0" /> + <PackageVersion Include="JsonSchema.Net" Version="7.2.3" /> + <PackageVersion Include="Markdig" Version="0.38.0" /> + <PackageVersion Include="Microsoft.Playwright" Version="1.48.0" /> <PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" /> <PackageVersion Include="Newtonsoft.Json" Version="13.0.3" /> <PackageVersion Include="OneOf" Version="3.0.271" /> <PackageVersion Include="OneOf.SourceGenerator" Version="3.0.271" /> - <PackageVersion Include="PdfPig" Version="0.1.9-alpha-20240904-cd2a8" /> + <PackageVersion Include="PdfPig" Version="0.1.9" /> <PackageVersion Include="PlantUml.Net" Version="1.4.80" /> - <PackageVersion Include="PolySharp" Version="1.14.1" /> <PackageVersion Include="Spectre.Console" Version="0.49.1" /> <PackageVersion Include="Spectre.Console.Cli" Version="0.49.1" /> <PackageVersion Include="Stubble.Core" Version="1.10.8" /> <PackageVersion Include="System.Collections.Immutable" Version="8.0.0" /> <PackageVersion Include="System.Composition" Version="8.0.0" /> <PackageVersion Include="System.Formats.Asn1" Version="8.0.1" /> - <PackageVersion Include="System.Text.Json" Version="8.0.4" /> + <PackageVersion Include="System.Text.Json" Version="8.0.5" /> <PackageVersion Include="YamlDotNet" Version="15.3.0" /> </ItemGroup> - <ItemGroup Condition="'$(TargetFramework)' == 'net6.0'"> - <!-- "17.3.2" is the latest compatible version for .NET 6 --> - <PackageVersion Include="Microsoft.Build" Version="[17.3.2]" /> - <PackageVersion Include="Microsoft.Build.Locator" Version="1.7.8" /> - <PackageVersion Include="Microsoft.CodeAnalysis" Version="[4.8.0]" /> - <PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="[4.8.0]" /> - <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="[4.8.0]" /> - <PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="[4.8.0]" /> - <PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="[4.8.0]" /> - <PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic" Version="[4.8.0]" /> - <PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="[4.8.0]" /> - <PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="[4.8.0]" /> - </ItemGroup> - - <ItemGroup Condition="'$(TargetFramework)' != 'net6.0'"> + <ItemGroup> <PackageVersion Include="Microsoft.CodeAnalysis" Version="4.11.0" /> <PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.11.0" /> <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.11.0" /> @@ -56,12 +41,12 @@ <ItemGroup> <!-- Test only --> <PackageVersion Include="coverlet.collector" Version="6.0.2" /> - <PackageVersion Include="FluentAssertions" Version="6.12.0" /> + <PackageVersion Include="FluentAssertions" Version="6.12.1" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" /> <PackageVersion Include="PublicApiGenerator" Version="11.1.0" /> - <PackageVersion Include="Verify.DiffPlex" Version="3.1.0" /> - <PackageVersion Include="Verify.Xunit" Version="26.4.0" /> + <PackageVersion Include="Verify.DiffPlex" Version="3.1.2" /> + <PackageVersion Include="Verify.Xunit" Version="28.1.3" /> <PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" /> - <PackageVersion Include="xunit" Version="2.9.0" /> + <PackageVersion Include="xunit" Version="2.9.2" /> </ItemGroup> </Project> diff --git a/README.md b/README.md index 39b13d54e90..8b534c0d8f7 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,8 @@ We welcome code contributions through pull requests, issues tagged as **[`help-w ### Prerequisites - Install [Visual Studio 2022 (Community or higher)](https://www.visualstudio.com/) and make sure you have the latest updates. -- Install [.NET SDK](https://dotnet.microsoft.com/download/dotnet) 6.x and 8.x. -- Install NodeJS (20.x.x). +- Install [.NET SDK](https://dotnet.microsoft.com/download/dotnet) 8.x and 9.x. +- Install NodeJS (22.x.x). ### Build and Test diff --git a/docs/docfx.json b/docs/docfx.json index 93a5158b8db..d0df50ec024 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -1,4 +1,5 @@ { + "$schema": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json", "metadata": [ { "src": [ @@ -25,6 +26,11 @@ { "files": [ "**/images/**", "**/media/**", "codesnippet/**" ], "exclude": [ "_site/**", "obj/**" ] + }, + { + "src": "../schemas", + "files": [ "**/*.json" ], + "dest": "schemas" } ], "postProcessors": [ "ExtractSearchIndex" ], diff --git a/docs/docs/config.md b/docs/docs/config.md index 6cb1c099d95..c20536fae04 100644 --- a/docs/docs/config.md +++ b/docs/docs/config.md @@ -51,7 +51,7 @@ Replace [new URL] with the URL that you want to redirect users to. You can use a ## Metadata -Metadata are attributes attached to an file. It helps shape the look and feel of a page and provides extra context to the article. +Metadata are attributes attached to a file. It helps shape the look and feel of a page and provides extra context to the article. To add metadata to an article, use "YAML Front Matter" markdown extension syntax: diff --git a/docs/docs/dotnet-api-docs.md b/docs/docs/dotnet-api-docs.md index a1ff5da1474..a1d81f5be61 100644 --- a/docs/docs/dotnet-api-docs.md +++ b/docs/docs/dotnet-api-docs.md @@ -87,7 +87,7 @@ If your project targets multiple target frameworks, docfx internally builds each }], "dest": "api", "properties": { - "TargetFramework": "net6.0" + "TargetFramework": "net8.0" } }, } diff --git a/docs/docs/publish-azure-devops.md b/docs/docs/publish-azure-devops.md new file mode 100644 index 00000000000..c34beabd4c6 --- /dev/null +++ b/docs/docs/publish-azure-devops.md @@ -0,0 +1,100 @@ +# Deploy to GitHub Pages from Azure DevOps + + +### 1. **Create a GitHub Personal Access Token (PAT)** +You will need a GitHub PAT with repo permissions to allow Azure DevOps to push to the GitHub Pages branch. + +- Go to your GitHub account > **Settings** > **Developer settings** > **Personal Access Tokens**. +- Click on **Generate new token** and select the required repo permissions. +- Save the token somewhere secure as it will be used in the Azure DevOps pipeline. + +### 2. **Create Azure DevOps Pipeline** + +#### a. **Setup DocFX** +Ensure that you have a `docfx.json` configuration file in your repository. This will define how DocFX generates your documentation. + +- Install DocFX locally on your development machine and create the configuration: + + ```bash + docfx init -q + ``` + +This will generate the `docfx.json` file, which you can configure to specify input and output directories, build settings, etc. + +#### b. **Azure Pipelines YAML File** + +Create an Azure DevOps pipeline YAML file (e.g., `azure-pipelines.yml`) in the root of your project to automate the build and deployment. + +Here is a sample pipeline YAML configuration for DocFX: + +```yaml +trigger: + branches: + include: + - main # Trigger on main branch + +pool: + vmImage: 'ubuntu-latest' # Use the latest Ubuntu VM + +variables: + - group: GitHubPAT + +steps: + # Step 1: Install DocFX + - task: UseDotNet@2 + inputs: + packageType: 'sdk' + version: '8.x' # Ensure you have .NET SDK installed + installationPath: $(Agent.ToolsDirectory)/dotnet + + - script: | + dotnet tool install -g docfx + displayName: 'Install DocFX' + + # Step 2: Build the Documentation using DocFX + - script: | + docfx build + displayName: 'Build Documentation' + + # Step 3: Deploy to GitHub Pages + - task: Bash@3 + displayName: 'Deploy to GitHub Pages' + inputs: + targetType: 'inline' + script: | + git config --global user.email "your-email@example.com" + git config --global user.name "Your Name" + git clone --branch gh-pages https://$GITHUB_PAT@github.com/$GITHUB_REPO.git out + rm -rf out/* + cp -r _site/* out/ + cd out + git add --all + git commit -m "Update documentation" + git push origin gh-pages + env: + GITHUB_PAT: $(GITHUB_PAT) # The GitHub Personal Access Token + GITHUB_REPO: your-github-username/your-repo-name # Update with your repo details +``` + +#### c. **Setup Azure Pipeline Variables** + +- Go to **Azure DevOps** > **Pipelines** > **Library**. +- Create a new pipeline variable group called GitHubPAT. +- Add a new variable named GITHUB_PAT and set the value to the GitHub Personal Access Token you created earlier. Mark this variable as secret. + +### 3. **Configure GitHub Pages** + +- Go to your GitHub repository. +- Under **Settings** > **Pages**, set the source branch to gh-pages. + +### 4. **Run the Pipeline** + +- Commit the azure-pipelines.yml file to your repository and trigger the pipeline. +- Azure DevOps will now: + 1. Install DocFX. + 2. Build the documentation. + 3. Deploy the documentation to the gh-pages branch in GitHub. + +### 5. **Access the Documentation** + +After the pipeline finishes, your documentation will be available in the github-pages deployments. \ No newline at end of file diff --git a/docs/docs/toc.yml b/docs/docs/toc.yml index 711c69513ac..7f1b3a150c9 100644 --- a/docs/docs/toc.yml +++ b/docs/docs/toc.yml @@ -14,6 +14,7 @@ - name: Advanced - href: additional-languages.md +- href: ./publish-azure-devops.md - name: Reference - href: ../reference/docfx-json-reference.md diff --git a/docs/index.md b/docs/index.md index 5134ddb7a2f..ee497ffed05 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,7 +8,8 @@ In this section we will build a simple documentation site on your local machine. > Prerequisites > - Familiarity with the command line -> - Install [.NET SDK](https://dotnet.microsoft.com/en-us/download) 6.0 or higher +> - Install [.NET SDK](https://dotnet.microsoft.com/en-us/download) 8.0 or higher +> - Install [Node.js](https://nodejs.org/) v20 or higher Make sure you have [.NET SDK](https://dotnet.microsoft.com/en-us/download) installed, then open a terminal and enter the following command to install the latest docfx: @@ -98,14 +99,16 @@ jobs: You can also use docfx as a NuGet library: ```xml -<PackageReference Include="Docfx.App" Version="2.76.0" /> -<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="4.9.2" /> -<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.9.2" /> +<PackageReference Include="Docfx.App" Version="2.77.0" /> +<!-- the versions of Microsoft.CodeAnalysis.* must match exactly what Docfx.App was built against, not the latest stable version --> +<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="4.10.0" /> +<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.10.0" /> ``` Then build a docset using: ```cs +await Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles("docfx.json"); await Docfx.Docset.Build("docfx.json"); ``` diff --git a/docs/reference/docfx-environment-variables-reference.md b/docs/reference/docfx-environment-variables-reference.md index ad8ed1945bc..2332cabfe31 100644 --- a/docs/reference/docfx-environment-variables-reference.md +++ b/docs/reference/docfx-environment-variables-reference.md @@ -30,5 +30,5 @@ Maximum time in milliseconds to override the default [Playwright timeout](https: ## `PLAYWRIGHT_NODEJS_PATH` -Custom Node.js executable path that will be used by the `docfx pdf' command. +Custom Node.js executable path that will be used by the `docfx pdf` command. By default, docfx automatically detect installed Node.js from `PATH`. diff --git a/docs/reference/docfx-json-reference.md b/docs/reference/docfx-json-reference.md index f0de2c02839..ff1e2dee49b 100644 --- a/docs/reference/docfx-json-reference.md +++ b/docs/reference/docfx-json-reference.md @@ -397,6 +397,13 @@ Specifies an optional set of MSBuild properties used when interpreting project f > [!Note] > Make sure to specify `"TargetFramework": <one of the frameworks>` in your docfx.json when the project is targeting for multiple platforms. +> [!Note] +> When generating metadata from source code files. +> Supported properties are limited to the following. +> - `DefineConstants` +> - `AllowUnsafeBlocks` +> If other properties are specified. These properties are ignored silently. + ### `noRestore` Do not run `dotnet restore` before building the projects. diff --git a/docs/spec/docfx_document_schema.md b/docs/spec/docfx_document_schema.md index 308286fbaf3..2d3919d45bc 100644 --- a/docs/spec/docfx_document_schema.md +++ b/docs/spec/docfx_document_schema.md @@ -36,7 +36,7 @@ This schema exposes two types of fields. Fixed fields, which have a declared nam By convention, the schema file is suffixed with `.schema.json`. ### Data Types -Primitive data types in *THIS schema* are based on [JSON schema Draft 6 4.2 Instance](http://json-schema.org/latest/json-schema-core.html#rfc.section.4.2) +Primitive data types in *THIS schema* are based on [JSON schema](https://json-schema.org/draft/2020-12/json-schema-core) ### Schema For a given field, `*` as the starting character in *Description* cell stands for **required**. diff --git a/docs/tutorial/howto_build_your_own_type_of_documentation_with_custom_plug-in.md b/docs/tutorial/howto_build_your_own_type_of_documentation_with_custom_plug-in.md index 8d70d6af0a0..fb9ec81686d 100644 --- a/docs/tutorial/howto_build_your_own_type_of_documentation_with_custom_plug-in.md +++ b/docs/tutorial/howto_build_your_own_type_of_documentation_with_custom_plug-in.md @@ -15,7 +15,7 @@ Goal and limitation Preparation ----------- -1. Create a new C# class library targeting `net6.0` or later. +1. Create a new C# class library targeting `net8.0` or later. 2. Add NuGet package reference to `System.Composition`, `Docfx.Plugins` and `Docfx.Common`. @@ -57,7 +57,7 @@ Create a document processor 3. Load our rtf file by reading all text: [!Code-csharp[Load](../codesnippet/Rtf/RtfDocumentProcessor.cs?name=Load)] - We use `Dictionary<string, object>` as the data model, similar to how [ConceptualDocumentProcessor](https://github.com/dotnet/docfx/blob/dev/src/Docfx.Build.ConceptualDocuments/ConceptualDocumentProcessor.cs) + We use `Dictionary<string, object>` as the data model, similar to how [ConceptualDocumentProcessor](https://github.com/dotnet/docfx/blob/main/src/Docfx.Build/Conceptual/ConceptualDocumentProcessor.cs) stores the content of markdown files. 4. Implement `Save` method as follows: diff --git a/samples/extensions/build/build.csproj b/samples/extensions/build/build.csproj index c762e1104c0..ff4751c5219 100644 --- a/samples/extensions/build/build.csproj +++ b/samples/extensions/build/build.csproj @@ -2,7 +2,7 @@ <PropertyGroup> <OutputType>Exe</OutputType> - <TargetFramework>net7.0</TargetFramework> + <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> diff --git a/samples/seed/docfx.json b/samples/seed/docfx.json index 67b546abf8c..6dcf2b76192 100644 --- a/samples/seed/docfx.json +++ b/samples/seed/docfx.json @@ -1,4 +1,5 @@ { + "$schema": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json", "metadata": [ { "src": [ diff --git a/samples/seed/dotnet/project/Project.Core/BuildFromProject.Core.csproj b/samples/seed/dotnet/project/Project.Core/BuildFromProject.Core.csproj index a90328379a1..639eaa34ad3 100644 --- a/samples/seed/dotnet/project/Project.Core/BuildFromProject.Core.csproj +++ b/samples/seed/dotnet/project/Project.Core/BuildFromProject.Core.csproj @@ -1,7 +1,7 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>net6.0</TargetFramework> + <TargetFramework>net8.0</TargetFramework> <LangVersion>latest</LangVersion> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> diff --git a/samples/seed/dotnet/project/Project/BuildFromProject.csproj b/samples/seed/dotnet/project/Project/BuildFromProject.csproj index c3271976a56..bfef038c926 100644 --- a/samples/seed/dotnet/project/Project/BuildFromProject.csproj +++ b/samples/seed/dotnet/project/Project/BuildFromProject.csproj @@ -1,7 +1,7 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>net6.0</TargetFramework> + <TargetFramework>net8.0</TargetFramework> <LangVersion>latest</LangVersion> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> diff --git a/samples/seed/dotnet/solution/CatLibrary.Core/CatLibrary.Core.csproj b/samples/seed/dotnet/solution/CatLibrary.Core/CatLibrary.Core.csproj index 6f2aed608ee..9d5a3ce7408 100644 --- a/samples/seed/dotnet/solution/CatLibrary.Core/CatLibrary.Core.csproj +++ b/samples/seed/dotnet/solution/CatLibrary.Core/CatLibrary.Core.csproj @@ -1,5 +1,5 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>net6.0</TargetFramework> + <TargetFramework>net8.0</TargetFramework> </PropertyGroup> -</Project> \ No newline at end of file +</Project> diff --git a/samples/seed/dotnet/solution/CatLibrary/CatLibrary.csproj b/samples/seed/dotnet/solution/CatLibrary/CatLibrary.csproj index a24c9ef8923..f4377e8b0af 100644 --- a/samples/seed/dotnet/solution/CatLibrary/CatLibrary.csproj +++ b/samples/seed/dotnet/solution/CatLibrary/CatLibrary.csproj @@ -1,6 +1,6 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>net6.0</TargetFramework> + <TargetFramework>net8.0</TargetFramework> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> </PropertyGroup> <ItemGroup> diff --git a/schemas/docfx.schema.json b/schemas/docfx.schema.json index 5979ceb1764..956b1c916d8 100644 --- a/schemas/docfx.schema.json +++ b/schemas/docfx.schema.json @@ -5,6 +5,10 @@ "type": "object", "additionalProperties": false, "properties": { + "$schema": { + "type": "string", + "default": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json" + }, "build": { "$ref": "#/$defs/buildConfig" }, diff --git a/schemas/filterconfig.schema.json b/schemas/filterconfig.schema.json index 271942dddf0..ffbadc282d8 100644 --- a/schemas/filterconfig.schema.json +++ b/schemas/filterconfig.schema.json @@ -5,6 +5,10 @@ "type": "object", "additionalProperties": false, "properties": { + "$schema": { + "type": "string", + "default": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/filterconfig.schema.json" + }, "apiRules": { "type": "array", "description": "Include/exclude rules using uid.", diff --git a/schemas/toc.schema.json b/schemas/toc.schema.json index 8bf1a9d7b60..3fdce6ec949 100644 --- a/schemas/toc.schema.json +++ b/schemas/toc.schema.json @@ -4,7 +4,7 @@ "title": "JSON Schema for docfx TOC file.", "anyOf": [ { - "$ref": "#/$defs/tocItem" + "$ref": "#/$defs/rootTocItem" }, { "type": "array", @@ -14,6 +14,101 @@ } ], "$defs": { + "rootTocItem": { + "type": "object", + "additionalProperties": true, + "properties": { + "$schema": { + "type": "string", + "default": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/toc.schema.json" + }, + "uid": { + "type": "string", + "description": "The uid of the article. Can be used instead of href." + }, + "name": { + "type": "string", + "description": "" + }, + "displayName": { + "type": "string", + "description": "An optional display name for the TOC node. When not specified, uses the title metadata or the first Heading 1 element from the referenced article as the display name." + }, + "href": { + "type": "string", + "description": "The path the TOC node leads to. Optional because a node can exist just to parent other nodes." + }, + "originalHref": { + "type": "string", + "description": "" + }, + "tocHref": { + "type": "string", + "description": "" + }, + "originalTocHref": { + "type": "string", + "description": "" + }, + "topicHref": { + "type": "string", + "description": "Specify the topic href of the TOC Item. It is useful when href is linking to a folder or TOC file or tocHref is used." + }, + "originalTopicHref": { + "type": "string", + "description": "" + }, + "includedFrom": { + "type": "string", + "description": "" + }, + "homepage": { + "type": "string", + "description": "(Deprecated)", + "deprecated": true + }, + "originalHomepage": { + "type": "string", + "description": "(Deprecated).", + "deprecated": true + }, + "homepageUid": { + "type": "string", + "description": "(Deprecated).", + "deprecated": true + }, + "topicUid": { + "type": "string", + "description": "Specify the uid of the referenced file. If the value is set, it overwrites the value of topicHref." + }, + "order": { + "type": "integer", + "default": 0, + "description": "Specify the order of toc item, TOCs with a smaller order value are picked first." + }, + "type": { + "type": "string", + "description": "Specify the type of toc item." + }, + "items": { + "type": "array", + "description": "List of TOC items.", + "items": { + "$ref": "#/$defs/tocItem" + } + }, + "expanded": { + "type": "boolean", + "default": false, + "description": "If set to true, Child items are displayed as expanded." + }, + "dropdown": { + "type": "boolean", + "default": false, + "description": "If set to true, Child items are displayed as dropdown on top navigation bar." + } + } + }, "tocItem": { "type": "object", "additionalProperties": true, diff --git a/schemas/xrefmap.schema.json b/schemas/xrefmap.schema.json index c79672c96f0..4d530140206 100644 --- a/schemas/xrefmap.schema.json +++ b/schemas/xrefmap.schema.json @@ -5,6 +5,10 @@ "type": "object", "additionalProperties": true, "properties": { + "$schema": { + "type": "string", + "default": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/xrefmap.schema.json" + }, "sorted": { "type": "boolean", "default": false, diff --git a/src/Docfx.App/Config/FileMetadataPairs.cs b/src/Docfx.App/Config/FileMetadataPairs.cs index 7e3ea1b73c9..7390e638ad1 100644 --- a/src/Docfx.App/Config/FileMetadataPairs.cs +++ b/src/Docfx.App/Config/FileMetadataPairs.cs @@ -8,7 +8,8 @@ namespace Docfx; /// </summary> /// <see cref="BuildJsonConfig.FileMetadata"/> /// <see cref="MergeJsonItemConfig.FileMetadata"/> -[Newtonsoft.Json.JsonConverter(typeof(FileMetadataPairsConverter))] +[Newtonsoft.Json.JsonConverter(typeof(FileMetadataPairsConverter.NewtonsoftJsonConverter))] +[System.Text.Json.Serialization.JsonConverter(typeof(FileMetadataPairsConverter.SystemTextJsonConverter))] internal class FileMetadataPairs { // Order matters, the latter one overrides the former one @@ -28,9 +29,9 @@ public IReadOnlyList<FileMetadataPairsItem> Items /// <summary> /// Initializes a new instance of the <see cref="FileMetadataPairs"/> class. /// </summary> - public FileMetadataPairs(List<FileMetadataPairsItem> items) + public FileMetadataPairs(IEnumerable<FileMetadataPairsItem> items) { - _items = items; + _items = items.ToList(); } /// <summary> diff --git a/src/Docfx.App/Config/FileMetadataPairsConverter.NewtonsoftJson.cs b/src/Docfx.App/Config/FileMetadataPairsConverter.NewtonsoftJson.cs new file mode 100644 index 00000000000..c407fde2110 --- /dev/null +++ b/src/Docfx.App/Config/FileMetadataPairsConverter.NewtonsoftJson.cs @@ -0,0 +1,63 @@ +// 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; + +internal partial class FileMetadataPairsConverter +{ + /// <summary> + /// JsonConverter for FileMetadataPairs + /// </summary> + internal class NewtonsoftJsonConverter : JsonConverter + { + /// <inheritdoc/> + public override bool CanConvert(Type objectType) + { + return objectType == typeof(FileMetadataPairs); + } + + /// <inheritdoc/> + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + IEnumerable<JToken> jItems; + if (reader.TokenType == JsonToken.StartObject) + { + jItems = JContainer.Load(reader); + } + else throw new JsonReaderException($"{reader.TokenType} is not a valid {objectType.Name}."); + return new FileMetadataPairs(jItems.Select(ParseItem).ToList()); + } + + /// <inheritdoc/> + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteStartObject(); + foreach (var item in ((FileMetadataPairs)value).Items) + { + writer.WritePropertyName(item.Glob.Raw); + writer.WriteRawValue(JsonUtility.Serialize(item.Value)); + } + writer.WriteEndObject(); + } + + private static FileMetadataPairsItem ParseItem(JToken item) + { + if (item.Type == JTokenType.Property) + { + JProperty jProperty = item as JProperty; + var pattern = jProperty.Name; + var rawValue = jProperty.Value; + return new FileMetadataPairsItem(pattern, rawValue); + } + else + { + throw new JsonReaderException($"Unsupported value {item} (type: {item.Type})."); + } + } + } +} diff --git a/src/Docfx.App/Config/FileMetadataPairsConverter.SystemTextJson.cs b/src/Docfx.App/Config/FileMetadataPairsConverter.SystemTextJson.cs new file mode 100644 index 00000000000..5d294a0e691 --- /dev/null +++ b/src/Docfx.App/Config/FileMetadataPairsConverter.SystemTextJson.cs @@ -0,0 +1,78 @@ +// 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; + +#nullable enable + +namespace Docfx; + +internal partial class FileMetadataPairsConverter +{ + /// <summary> + /// JsonConverter for FileMetadataPairs + /// </summary> + internal class SystemTextJsonConverter : JsonConverter<FileMetadataPairs> + { + public override FileMetadataPairs Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType != JsonTokenType.StartObject) + { + throw new JsonException($"{reader.TokenType} is not a valid {typeToConvert.Name}."); + } + + using var document = JsonDocument.ParseValue(ref reader); + var properties = document.RootElement.EnumerateObject(); + var items = properties.Select(x => new FileMetadataPairsItem(x.Name, ToInferredType(x.Value))).ToArray(); + return new FileMetadataPairs(items); + } + + public override void Write(Utf8JsonWriter writer, FileMetadataPairs value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + foreach (var item in value.Items) + { + writer.WritePropertyName(item.Glob.Raw); + writer.WriteRawValue(JsonUtility.Serialize(item.Value)); + } + writer.WriteEndObject(); + } + + /// <summary> + /// Convert JsonElement to .NET object. + /// </summary> + private static object? ToInferredType(JsonElement elem) + { + switch (elem.ValueKind) + { + case JsonValueKind.Null: + return null; + case JsonValueKind.True: + return true; + case JsonValueKind.False: + return false; + case JsonValueKind.String when elem.TryGetDateTime(out DateTime datetime): + return datetime; + case JsonValueKind.String: + return elem.GetString(); + case JsonValueKind.Array: + return elem.EnumerateArray().Select(ToInferredType).ToArray(); + case JsonValueKind.Object: + var properties = elem.EnumerateObject(); + return properties.ToDictionary(x => x.Name, x => ToInferredType(x.Value)); + case JsonValueKind.Number when elem.TryGetInt32(out int intValue): + return intValue; + case JsonValueKind.Number when elem.TryGetInt64(out long longValue): + return longValue; + case JsonValueKind.Number: + return elem.GetDouble(); + case JsonValueKind.Undefined: + default: + throw new JsonException($"JsonValueKind({elem.ValueKind}) is not supported."); + } + } + } +} diff --git a/src/Docfx.App/Config/FileMetadataPairsConverter.cs b/src/Docfx.App/Config/FileMetadataPairsConverter.cs index cdebbaff91b..71dcc5f3458 100644 --- a/src/Docfx.App/Config/FileMetadataPairsConverter.cs +++ b/src/Docfx.App/Config/FileMetadataPairsConverter.cs @@ -11,51 +11,6 @@ namespace Docfx; /// <summary> /// JsonConverter for FileMetadataPairs /// </summary> -internal class FileMetadataPairsConverter : JsonConverter +internal partial class FileMetadataPairsConverter { - /// <inheritdoc/> - public override bool CanConvert(Type objectType) - { - return objectType == typeof(FileMetadataPairs); - } - - /// <inheritdoc/> - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - var value = reader.Value; - IEnumerable<JToken> jItems; - if (reader.TokenType == JsonToken.StartObject) - { - jItems = JContainer.Load(reader); - } - else throw new JsonReaderException($"{reader.TokenType} is not a valid {objectType.Name}."); - return new FileMetadataPairs(jItems.Select(ParseItem).ToList()); - } - - /// <inheritdoc/> - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - writer.WriteStartObject(); - foreach (var item in ((FileMetadataPairs)value).Items) - { - writer.WritePropertyName(item.Glob.Raw); - writer.WriteRawValue(JsonUtility.Serialize(item.Value)); - } - writer.WriteEndObject(); - } - - private static FileMetadataPairsItem ParseItem(JToken item) - { - if (item.Type == JTokenType.Property) - { - JProperty jProperty = item as JProperty; - var pattern = jProperty.Name; - var rawValue = jProperty.Value; - return new FileMetadataPairsItem(pattern, rawValue); - } - else - { - throw new JsonReaderException($"Unsupported value {item} (type: {item.Type})."); - } - } } diff --git a/src/Docfx.App/Config/FileMetadataPairsItem.cs b/src/Docfx.App/Config/FileMetadataPairsItem.cs index f434b0221a9..5f5af6e8555 100644 --- a/src/Docfx.App/Config/FileMetadataPairsItem.cs +++ b/src/Docfx.App/Config/FileMetadataPairsItem.cs @@ -1,6 +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 System.Text.Json.Serialization; using Docfx.Common; using Docfx.Glob; @@ -20,6 +22,7 @@ internal class FileMetadataPairsItem /// <summary> /// JObject, no need to transform it to object as the metadata value will not be used but only to be serialized /// </summary> + [System.Text.Json.Serialization.JsonConverter(typeof(JsonElementConverter))] public object Value { get; } /// <summary> @@ -31,3 +34,16 @@ public FileMetadataPairsItem(string pattern, object value) Value = ConvertToObjectHelper.ConvertJObjectToObject(value); } } + +internal class JsonElementConverter : JsonConverter<JsonElement> +{ + public override JsonElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } + + public override void Write(Utf8JsonWriter writer, JsonElement value, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } +} diff --git a/src/Docfx.App/Config/ListWithStringFallback.cs b/src/Docfx.App/Config/ListWithStringFallback.cs index 4ece161d789..788626707ed 100644 --- a/src/Docfx.App/Config/ListWithStringFallback.cs +++ b/src/Docfx.App/Config/ListWithStringFallback.cs @@ -6,13 +6,14 @@ namespace Docfx; /// <summary> /// ListWithStringFallback. /// </summary> -[Newtonsoft.Json.JsonConverter(typeof(ListWithStringFallbackConverter))] +[Newtonsoft.Json.JsonConverter(typeof(ListWithStringFallbackConverter.NewtonsoftJsonConverter))] +[System.Text.Json.Serialization.JsonConverter(typeof(ListWithStringFallbackConverter.SystemTextJsonConverter))] internal class ListWithStringFallback : List<string> { /// <summary> /// Initializes a new instance of the <see cref="ListWithStringFallback"/> class. /// </summary> - public ListWithStringFallback() : base() + public ListWithStringFallback() { } diff --git a/src/Docfx.App/Config/ListWithStringFallbackConverter.NewtonsoftJson.cs b/src/Docfx.App/Config/ListWithStringFallbackConverter.NewtonsoftJson.cs new file mode 100644 index 00000000000..c41baf9818c --- /dev/null +++ b/src/Docfx.App/Config/ListWithStringFallbackConverter.NewtonsoftJson.cs @@ -0,0 +1,72 @@ +// 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 ListWithStringFallbackConverter +{ + /// <summary> + /// JsonConverter for <see cref="ListWithStringFallback"/>. + /// </summary> + internal class NewtonsoftJsonConverter : JsonConverter + { + /// <inheritdoc/> + public override bool CanConvert(Type objectType) + { + return objectType == typeof(FileMapping); + } + + /// <inheritdoc/> + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var model = new ListWithStringFallback(); + var value = reader.Value; + IEnumerable<JToken> jItems; + if (reader.TokenType == JsonToken.StartArray) + { + jItems = JArray.Load(reader); + } + else if (reader.TokenType == JsonToken.StartObject) + { + jItems = JContainer.Load(reader); + } + else if (reader.TokenType == JsonToken.String) + { + jItems = JRaw.Load(reader); + } + else + { + jItems = JObject.Load(reader); + } + + if (jItems is JValue) + { + model.Add(jItems.ToString()); + } + else + { + foreach (var item in jItems) + { + model.Add(item.ToString()); + } + } + + return model; + } + + /// <inheritdoc/> + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteStartArray(); + foreach (var item in (ListWithStringFallback)value) + { + serializer.Serialize(writer, item); + } + writer.WriteEndArray(); + } + } +} diff --git a/src/Docfx.App/Config/ListWithStringFallbackConverter.SystemTextJson.cs b/src/Docfx.App/Config/ListWithStringFallbackConverter.SystemTextJson.cs new file mode 100644 index 00000000000..219ec035958 --- /dev/null +++ b/src/Docfx.App/Config/ListWithStringFallbackConverter.SystemTextJson.cs @@ -0,0 +1,56 @@ +// 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; + + +internal partial class ListWithStringFallbackConverter +{ + /// <summary> + /// JsonConverter for <see cref="ListWithStringFallback"/>. + /// </summary> + internal class SystemTextJsonConverter : JsonConverter<ListWithStringFallback> + { + public override ListWithStringFallback Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var tokenType = reader.TokenType; + switch (tokenType) + { + case JsonTokenType.String: + { + var value = reader.GetString(); + return new ListWithStringFallback([value]); + } + case JsonTokenType.StartArray: + { + var items = JsonSerializer.Deserialize<string[]>(ref reader, options); + return new ListWithStringFallback(items); + } + case JsonTokenType.StartObject: + { + using var document = JsonDocument.ParseValue(ref reader); + JsonElement root = document.RootElement; + var values = root.EnumerateObject().Select(x=>x.ToString()); + return new ListWithStringFallback(values); + } + default: + throw new JsonException($"TokenType({reader.TokenType}) is not supported."); + } + } + + public override void Write(Utf8JsonWriter writer, ListWithStringFallback value, JsonSerializerOptions options) + { + writer.WriteStartArray(); + foreach (var item in value) + { + writer.WriteStringValue(item); + } + writer.WriteEndArray(); + } + } +} diff --git a/src/Docfx.App/Config/ListWithStringFallbackConverter.cs b/src/Docfx.App/Config/ListWithStringFallbackConverter.cs index 47c117f6274..12188991a86 100644 --- a/src/Docfx.App/Config/ListWithStringFallbackConverter.cs +++ b/src/Docfx.App/Config/ListWithStringFallbackConverter.cs @@ -6,63 +6,7 @@ namespace Docfx; -/// <summary> -/// JsonConverter for <see cref="ListWithStringFallback"/>. -/// </summary> -internal class ListWithStringFallbackConverter : JsonConverter -{ - /// <inheritdoc/> - public override bool CanConvert(Type objectType) - { - return objectType == typeof(FileMapping); - } - - /// <inheritdoc/> - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - var model = new ListWithStringFallback(); - var value = reader.Value; - IEnumerable<JToken> jItems; - if (reader.TokenType == JsonToken.StartArray) - { - jItems = JArray.Load(reader); - } - else if (reader.TokenType == JsonToken.StartObject) - { - jItems = JContainer.Load(reader); - } - else if (reader.TokenType == JsonToken.String) - { - jItems = JRaw.Load(reader); - } - else - { - jItems = JObject.Load(reader); - } - - if (jItems is JValue) - { - model.Add(jItems.ToString()); - } - else - { - foreach (var item in jItems) - { - model.Add(item.ToString()); - } - } - return model; - } - - /// <inheritdoc/> - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - writer.WriteStartArray(); - foreach (var item in (ListWithStringFallback)value) - { - serializer.Serialize(writer, item); - } - writer.WriteEndArray(); - } +internal partial class ListWithStringFallbackConverter +{ } diff --git a/src/Docfx.App/Config/MergeJsonConfig.cs b/src/Docfx.App/Config/MergeJsonConfig.cs index 4596c28c8e7..e06432eded5 100644 --- a/src/Docfx.App/Config/MergeJsonConfig.cs +++ b/src/Docfx.App/Config/MergeJsonConfig.cs @@ -6,7 +6,8 @@ namespace Docfx; /// <summary> /// MergeJsonConfig. /// </summary> -[Newtonsoft.Json.JsonConverter(typeof(MergeJsonConfigConverter))] +[Newtonsoft.Json.JsonConverter(typeof(MergeJsonConfigConverter.NewtonsoftJsonConverter))] +[System.Text.Json.Serialization.JsonConverter(typeof(MergeJsonConfigConverter.SystemTextJsonConverter))] internal class MergeJsonConfig : List<MergeJsonItemConfig> { /// <summary> diff --git a/src/Docfx.App/Config/MergeJsonConfigConverter.NewtonsoftJson.cs b/src/Docfx.App/Config/MergeJsonConfigConverter.NewtonsoftJson.cs new file mode 100644 index 00000000000..344c352c61f --- /dev/null +++ b/src/Docfx.App/Config/MergeJsonConfigConverter.NewtonsoftJson.cs @@ -0,0 +1,68 @@ +// 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 MergeJsonConfigConverter +{ + /// <summary> + /// JsonConverter for <see cref="MergeJsonConfig"/>. + /// </summary> + internal class NewtonsoftJsonConverter : JsonConverter + { + /// <inheritdoc/> + public override bool CanConvert(Type objectType) + { + return objectType == typeof(MergeJsonConfig); + } + + /// <inheritdoc/> + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var model = new MergeJsonConfig(); + var value = reader.Value; + IEnumerable<JToken> jItems; + if (reader.TokenType == JsonToken.StartArray) + { + jItems = JArray.Load(reader); + } + else if (reader.TokenType == JsonToken.String) + { + jItems = JRaw.Load(reader); + } + else + { + jItems = JObject.Load(reader); + } + + if (jItems is JValue one) + { + model.Add(serializer.Deserialize<MergeJsonItemConfig>(one.CreateReader())); + } + else if (jItems is JObject) + { + model.Add(serializer.Deserialize<MergeJsonItemConfig>(((JToken)jItems).CreateReader())); + } + else + { + foreach (var item in jItems) + { + MergeJsonItemConfig itemModel = serializer.Deserialize<MergeJsonItemConfig>(item.CreateReader()); + model.Add(itemModel); + } + } + + return model; + } + + /// <inheritdoc/> + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + 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 new file mode 100644 index 00000000000..90ebe522bd1 --- /dev/null +++ b/src/Docfx.App/Config/MergeJsonConfigConverter.SystemTextJson.cs @@ -0,0 +1,50 @@ +// 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 System.Text.Json.Serialization; +using YamlDotNet.Serialization; + +namespace Docfx; + +internal partial class MergeJsonConfigConverter +{ + /// <summary> + /// JsonConverter for <see cref="MergeJsonConfig"/>. + /// </summary> + internal class SystemTextJsonConverter : JsonConverter<MergeJsonConfig> + { + public override MergeJsonConfig Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var model = new MergeJsonConfig(); + + var tokenType = reader.TokenType; + + switch (tokenType) + { + case JsonTokenType.StartArray: + { + var items = JsonSerializer.Deserialize<MergeJsonItemConfig[]>(ref reader, options); + return new MergeJsonConfig(items); + } + case JsonTokenType.StartObject: + { + var item = JsonSerializer.Deserialize<MergeJsonItemConfig>(ref reader, options); + return new MergeJsonConfig(item); + } + default: + throw new JsonException($"TokenType({tokenType}) is not supported."); + } + } + + public override void Write(Utf8JsonWriter writer, MergeJsonConfig value, JsonSerializerOptions options) + { + writer.WriteStartArray(); + foreach (var item in value) + { + JsonSerializer.Serialize(writer, item, options); + } + writer.WriteEndArray(); + } + } +} diff --git a/src/Docfx.App/Config/MergeJsonConfigConverter.cs b/src/Docfx.App/Config/MergeJsonConfigConverter.cs index 3081ff85504..64d4e815013 100644 --- a/src/Docfx.App/Config/MergeJsonConfigConverter.cs +++ b/src/Docfx.App/Config/MergeJsonConfigConverter.cs @@ -9,56 +9,6 @@ namespace Docfx; /// <summary> /// JsonConverter for <see cref="MergeJsonConfig"/>. /// </summary> -internal class MergeJsonConfigConverter : JsonConverter +internal partial class MergeJsonConfigConverter { - /// <inheritdoc/> - public override bool CanConvert(Type objectType) - { - return objectType == typeof(MergeJsonConfig); - } - - /// <inheritdoc/> - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - var model = new MergeJsonConfig(); - var value = reader.Value; - IEnumerable<JToken> jItems; - if (reader.TokenType == JsonToken.StartArray) - { - jItems = JArray.Load(reader); - } - else if (reader.TokenType == JsonToken.String) - { - jItems = JRaw.Load(reader); - } - else - { - jItems = JObject.Load(reader); - } - - if (jItems is JValue one) - { - model.Add(serializer.Deserialize<MergeJsonItemConfig>(one.CreateReader())); - } - else if (jItems is JObject) - { - model.Add(serializer.Deserialize<MergeJsonItemConfig>(((JToken)jItems).CreateReader())); - } - else - { - foreach (var item in jItems) - { - MergeJsonItemConfig itemModel = serializer.Deserialize<MergeJsonItemConfig>(item.CreateReader()); - model.Add(itemModel); - } - } - - return model; - } - - /// <inheritdoc/> - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - serializer.Serialize(writer, ((MergeJsonConfig)value).ToArray()); - } } diff --git a/src/Docfx.App/Docfx.App.csproj b/src/Docfx.App/Docfx.App.csproj index 609196c0de2..12db285be2e 100644 --- a/src/Docfx.App/Docfx.App.csproj +++ b/src/Docfx.App/Docfx.App.csproj @@ -1,7 +1,8 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <EnablePackageValidation>true</EnablePackageValidation> - <PackageValidationBaselineVersion>2.70.0</PackageValidationBaselineVersion> + <!-- TODO: Enable package validation after v2.78.0 packages are published --> + <EnablePackageValidation>false</EnablePackageValidation> + <PackageValidationBaselineVersion>2.78.0</PackageValidationBaselineVersion> <Description>Docfx published as a library for extensibility and advanced customization</Description> </PropertyGroup> @@ -15,7 +16,7 @@ <InternalsVisibleTo Include="docfx.Tests" /> <InternalsVisibleTo Include="docfx.Snapshot.Tests" /> </ItemGroup> - + <ItemGroup> <InternalsAssemblyName Include="UglyToad.PdfPig" /> </ItemGroup> diff --git a/src/Docfx.App/Helpers/DocumentBuilderWrapper.cs b/src/Docfx.App/Helpers/DocumentBuilderWrapper.cs index b7eb555a8ce..2bafb81bef6 100644 --- a/src/Docfx.App/Helpers/DocumentBuilderWrapper.cs +++ b/src/Docfx.App/Helpers/DocumentBuilderWrapper.cs @@ -15,7 +15,7 @@ internal static class DocumentBuilderWrapper { private static readonly Assembly[] s_pluginAssemblies = LoadPluginAssemblies(AppContext.BaseDirectory).ToArray(); - public static void BuildDocument(BuildJsonConfig config, BuildOptions options, TemplateManager templateManager, string baseDirectory, string outputDirectory, string templateDirectory) + public static void BuildDocument(BuildJsonConfig config, BuildOptions options, TemplateManager templateManager, string baseDirectory, string outputDirectory, string templateDirectory, CancellationToken cancellationToken) { var postProcessorNames = config.PostProcessors.ToImmutableArray(); var metadata = config.GlobalMetadata?.ToImmutableDictionary(); @@ -23,7 +23,7 @@ public static void BuildDocument(BuildJsonConfig config, BuildOptions options, T // Ensure "_enableSearch" adds the right post processor if (metadata != null && metadata.TryGetValue("_enableSearch", out object value)) { - if (value is bool isSearchable && isSearchable && !postProcessorNames.Contains("ExtractSearchIndex")) + if (value is true && !postProcessorNames.Contains("ExtractSearchIndex")) { postProcessorNames = postProcessorNames.Add("ExtractSearchIndex"); } @@ -39,7 +39,7 @@ public static void BuildDocument(BuildJsonConfig config, BuildOptions options, T using var builder = new DocumentBuilder(s_pluginAssemblies.Concat(pluginAssemblies), postProcessorNames); var parameters = ConfigToParameter(config, options, templateManager, baseDirectory, outputDirectory, templateDirectory); - builder.Build(parameters, outputDirectory); + builder.Build(parameters, outputDirectory, cancellationToken); } private static IEnumerable<Assembly> LoadPluginAssemblies(string pluginDirectory) diff --git a/src/Docfx.App/Helpers/MetadataMerger.cs b/src/Docfx.App/Helpers/MetadataMerger.cs index 029862bb0e9..2dee2e496f3 100644 --- a/src/Docfx.App/Helpers/MetadataMerger.cs +++ b/src/Docfx.App/Helpers/MetadataMerger.cs @@ -31,11 +31,11 @@ public void Merge(MetadataMergeParameters parameters) } parameters.Metadata ??= ImmutableDictionary<string, object>.Empty; - Directory.CreateDirectory(parameters.OutputBaseDir); - Logger.LogInfo("Start merge metadata..."); - MergePageViewModel(parameters); - MergeToc(parameters); - Logger.LogInfo("Merge metadata completed."); + Directory.CreateDirectory(parameters.OutputBaseDir); + Logger.LogInfo("Start merge metadata..."); + MergePageViewModel(parameters); + MergeToc(parameters); + Logger.LogInfo("Merge metadata completed."); } private void MergePageViewModel(MetadataMergeParameters parameters) @@ -67,7 +67,7 @@ private void MergePageViewModel(MetadataMergeParameters parameters) })); foreach (var m in models) { - m.File = (RelativePath)m.FileAndType.DestinationDir + (((RelativePath)m.File) - (RelativePath)m.FileAndType.SourceDir); + m.File = (RelativePath)m.FileAndType.DestinationDir + ((RelativePath)m.File - (RelativePath)m.FileAndType.SourceDir); Console.WriteLine($"File:{m.OriginalFileAndType.File} from:{m.FileAndType.SourceDir} to:{m.FileAndType.DestinationDir} => {m.File}"); } foreach (var m in models) @@ -88,7 +88,7 @@ from f in tocFiles select YamlUtility.Deserialize<List<TocItemViewModel>>(f.File)); CopyMetadataToToc(vm); YamlUtility.Serialize( - ((RelativePath)tocFiles[0].DestinationDir + (((RelativePath)tocFiles[0].File) - (RelativePath)tocFiles[0].SourceDir)).ToString(), + ((RelativePath)tocFiles[0].DestinationDir + ((RelativePath)tocFiles[0].File - (RelativePath)tocFiles[0].SourceDir)).ToString(), vm, YamlMime.TableOfContent); } diff --git a/src/Docfx.App/PdfBuilder.cs b/src/Docfx.App/PdfBuilder.cs index d2b84c90093..fdb1312dc36 100644 --- a/src/Docfx.App/PdfBuilder.cs +++ b/src/Docfx.App/PdfBuilder.cs @@ -201,7 +201,7 @@ async Task<byte[]> PrintHeaderFooterCore() { await page.GotoAsync("about:blank"); - PagePdfOptions options = new PagePdfOptions + var options = new PagePdfOptions { DisplayHeaderFooter = true, HeaderTemplate = headerTemplate, @@ -583,7 +583,7 @@ private static bool TryGetPlaywrightPageFormat(PageSize pageSize, out string? pa pageFormat = pageSize.ToString(); return true; - // Following format is not supported format by playwright. + // Following format is not supported format by playwright. // It need to use Width/Height settings. case PageSize.A7: case PageSize.A8: diff --git a/src/Docfx.App/RunBuild.cs b/src/Docfx.App/RunBuild.cs index 33706794ffd..5501ae9e856 100644 --- a/src/Docfx.App/RunBuild.cs +++ b/src/Docfx.App/RunBuild.cs @@ -16,7 +16,7 @@ internal static class RunBuild /// <summary> /// Build document with specified settings. /// </summary> - public static string Exec(BuildJsonConfig config, BuildOptions options, string configDirectory, string outputDirectory = null) + public static string Exec(BuildJsonConfig config, BuildOptions options, string configDirectory, string outputDirectory = null, CancellationToken cancellationToken = default) { var stopwatch = Stopwatch.StartNew(); if (config.Template == null || config.Template.Count == 0) @@ -36,7 +36,7 @@ public static string Exec(BuildJsonConfig config, BuildOptions options, string c { var templateManager = new TemplateManager(config.Template, config.Theme, configDirectory); - DocumentBuilderWrapper.BuildDocument(config, options, templateManager, baseDirectory, outputFolder, null); + DocumentBuilderWrapper.BuildDocument(config, options, templateManager, baseDirectory, outputFolder, null, cancellationToken); templateManager.ProcessTheme(outputFolder, true); } diff --git a/src/Docfx.Build.Common/Docfx.Build.Common.csproj b/src/Docfx.Build.Common/Docfx.Build.Common.csproj index 59b08eb754b..206ccd57b0e 100644 --- a/src/Docfx.Build.Common/Docfx.Build.Common.csproj +++ b/src/Docfx.Build.Common/Docfx.Build.Common.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\Docfx.Common\Docfx.Common.csproj" /> <ProjectReference Include="..\Docfx.DataContracts.Common\Docfx.DataContracts.Common.csproj" /> diff --git a/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/BaseModelAttributeHandler.cs b/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/BaseModelAttributeHandler.cs index 847a3da6406..1178c9062bf 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 != null && currentPropInfo.Attr != null; + return currentPropInfo is {Attr: not null}; } /// <summary> diff --git a/src/Docfx.Build.Common/ModelAttributeHandlers/ReflectionHelper.cs b/src/Docfx.Build.Common/ModelAttributeHandlers/ReflectionHelper.cs index 41667a65bbb..1a04794eccc 100644 --- a/src/Docfx.Build.Common/ModelAttributeHandlers/ReflectionHelper.cs +++ b/src/Docfx.Build.Common/ModelAttributeHandlers/ReflectionHelper.cs @@ -36,7 +36,7 @@ public static object CreateInstance(Type type, Type[] typeArguments, Type[] argu ArgumentNullException.ThrowIfNull(arguments); var func = _createInstanceCache.GetOrAdd( - Tuple.Create(type, typeArguments ?? Type.EmptyTypes, argumentTypes), + Tuple.Create(type, typeArguments ?? [], argumentTypes), GetCreateInstanceFunc); return func(arguments); } @@ -150,7 +150,7 @@ public static IEnumerable<PropertyInfo> GetPublicProperties(Type type) { if (!type.IsVisible) { - return Enumerable.Empty<PropertyInfo>(); + return []; } return GetProperties(type, BindingFlags.Public | BindingFlags.Instance); } diff --git a/src/Docfx.Build.Common/Reference/OverwriteDocumentModel.cs b/src/Docfx.Build.Common/Reference/OverwriteDocumentModel.cs index 7d412822293..8ac8f568cbb 100644 --- a/src/Docfx.Build.Common/Reference/OverwriteDocumentModel.cs +++ b/src/Docfx.Build.Common/Reference/OverwriteDocumentModel.cs @@ -81,7 +81,7 @@ public class OverwriteDocumentModel [YamlIgnore] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public ImmutableArray<string> Dependency { get; set; } = ImmutableArray<string>.Empty; + public ImmutableArray<string> Dependency { get; set; } = []; public T ConvertTo<T>() where T : class { diff --git a/src/Docfx.Build.Common/YamlHtmlPart.cs b/src/Docfx.Build.Common/YamlHtmlPart.cs index cfc5d680e56..62e6649e4fb 100644 --- a/src/Docfx.Build.Common/YamlHtmlPart.cs +++ b/src/Docfx.Build.Common/YamlHtmlPart.cs @@ -21,9 +21,9 @@ public class YamlHtmlPart public int EndLine { get; set; } - public ImmutableArray<string> LinkToFiles { get; set; } = ImmutableArray<string>.Empty; + public ImmutableArray<string> LinkToFiles { get; set; } = []; - public ImmutableHashSet<string> LinkToUids { get; set; } = ImmutableHashSet<string>.Empty; + public ImmutableHashSet<string> LinkToUids { get; set; } = []; public ImmutableDictionary<string, object> YamlHeader { get; set; } = ImmutableDictionary<string, object>.Empty; diff --git a/src/Docfx.Build.ManagedReference/ApplyPlatformVersion.cs b/src/Docfx.Build.ManagedReference/ApplyPlatformVersion.cs index 96532b18507..9135d8c370a 100644 --- a/src/Docfx.Build.ManagedReference/ApplyPlatformVersion.cs +++ b/src/Docfx.Build.ManagedReference/ApplyPlatformVersion.cs @@ -27,9 +27,8 @@ public override IEnumerable<FileModel> Prebuild(ImmutableList<FileModel> models, } var page = m.Content as PageViewModel; if (page?.Metadata != null && - page.Metadata.TryGetValue("platform", out object value)) + page.Metadata.Remove("platform", out object value)) { - page.Metadata.Remove("platform"); var list = GetPlatformVersionFromMetadata(value); if (list != null) { diff --git a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiBuildOutput.cs b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiBuildOutput.cs index 48a62fcfb5c..d3087ea9a83 100644 --- a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiBuildOutput.cs +++ b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiBuildOutput.cs @@ -188,7 +188,7 @@ public class ApiBuildOutput public static ApiBuildOutput FromModel(PageViewModel model) { - if (model == null || model.Items == null || model.Items.Count == 0) + if (model?.Items == null || model.Items.Count == 0) { return null; } diff --git a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiReferenceBuildOutput.cs b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiReferenceBuildOutput.cs index 454bb7ea717..14416d04deb 100644 --- a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiReferenceBuildOutput.cs +++ b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiReferenceBuildOutput.cs @@ -173,17 +173,28 @@ public class ApiReferenceBuildOutput [ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] + [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] public Dictionary<string, object> Metadata { get; set; } = new(); [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public CompositeDictionary MetadataJson => - CompositeDictionary + [System.Text.Json.Serialization.JsonInclude] + public CompositeDictionary MetadataJson + { + get + { + return CompositeDictionary .CreateBuilder() .Add(string.Empty, Metadata) .Create(); + } + private init + { + // init or getter is required for deserialize data with System.Text.Json. + } + } private bool _needExpand = true; @@ -289,7 +300,7 @@ public void Expand(Dictionary<string, ApiReferenceBuildOutput> references, strin public static List<ApiLanguageValuePair> GetSpecNames(string xref, string[] supportedLanguages, SortedList<string, List<SpecViewModel>> specs = null) { - if (specs != null && specs.Count > 0) + if (specs is {Count: > 0}) { return (from spec in specs where supportedLanguages.Contains(spec.Key) diff --git a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiSyntaxBuildOutput.cs b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiSyntaxBuildOutput.cs index 7dd160477b4..3c639142027 100644 --- a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiSyntaxBuildOutput.cs +++ b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiSyntaxBuildOutput.cs @@ -13,7 +13,7 @@ public class ApiSyntaxBuildOutput [YamlMember(Alias = "content")] [JsonProperty("content")] [JsonPropertyName("content")] - public List<ApiLanguageValuePair> Content { get; set; } = new List<ApiLanguageValuePair>(); + public List<ApiLanguageValuePair> Content { get; set; } = []; [YamlMember(Alias = "parameters")] [JsonProperty("parameters")] diff --git a/src/Docfx.Build.ManagedReference/Docfx.Build.ManagedReference.csproj b/src/Docfx.Build.ManagedReference/Docfx.Build.ManagedReference.csproj index 2977ffe9aa8..b9e1c1dbcd6 100644 --- a/src/Docfx.Build.ManagedReference/Docfx.Build.ManagedReference.csproj +++ b/src/Docfx.Build.ManagedReference/Docfx.Build.ManagedReference.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\Docfx.Build.Common\Docfx.Build.Common.csproj" /> <ProjectReference Include="..\Docfx.Common\Docfx.Common.csproj" /> diff --git a/src/Docfx.Build.ManagedReference/FillReferenceInformation.cs b/src/Docfx.Build.ManagedReference/FillReferenceInformation.cs index 018aede6bce..1935a7a605b 100644 --- a/src/Docfx.Build.ManagedReference/FillReferenceInformation.cs +++ b/src/Docfx.Build.ManagedReference/FillReferenceInformation.cs @@ -112,11 +112,11 @@ private void TraceSourceInfo(PageViewModel model, string file) private static IEnumerable<string> GetUidsToFill(PageViewModel pageViewModel) { - return (from i in pageViewModel.Items - from c in (i.Children ?? Enumerable.Empty<string>()) - .Concat(i.ExtensionMethods ?? Enumerable.Empty<string>()) - .Concat(i.InheritedMembers ?? Enumerable.Empty<string>()) - select c); + return from i in pageViewModel.Items + from c in (i.Children ?? Enumerable.Empty<string>()) + .Concat(i.ExtensionMethods ?? Enumerable.Empty<string>()) + .Concat(i.InheritedMembers ?? Enumerable.Empty<string>()) + select c; } #endregion diff --git a/src/Docfx.Build.ManagedReference/MergeManagedReferenceDocument.cs b/src/Docfx.Build.ManagedReference/MergeManagedReferenceDocument.cs index 44986ce5d21..acf4e8e7c7a 100644 --- a/src/Docfx.Build.ManagedReference/MergeManagedReferenceDocument.cs +++ b/src/Docfx.Build.ManagedReference/MergeManagedReferenceDocument.cs @@ -42,7 +42,6 @@ public override IEnumerable<FileModel> Prebuild(ImmutableList<FileModel> models, return m; } processedUid.Add(mainUid); - var vm = (PageViewModel)m.Content; m.Content = MergeCore( mainUid, m, @@ -169,10 +168,7 @@ private static void MergeReferencesCore( { foreach (var pair in mergeFrom) { - if (!mergeTo.ContainsKey(pair.Key)) - { - mergeTo[pair.Key] = pair.Value; - } + mergeTo.TryAdd(pair.Key, pair.Value); } } diff --git a/src/Docfx.Build.ManagedReference/SplitClassPageToMemberLevel.cs b/src/Docfx.Build.ManagedReference/SplitClassPageToMemberLevel.cs index 8910a97fa99..874bfb5ec06 100644 --- a/src/Docfx.Build.ManagedReference/SplitClassPageToMemberLevel.cs +++ b/src/Docfx.Build.ManagedReference/SplitClassPageToMemberLevel.cs @@ -46,14 +46,10 @@ public override IEnumerable<FileModel> Prebuild(ImmutableList<FileModel> models, var result = SplitModelToOverloadLevel(model, modelsDict, dupeModels); if (result != null) { - if (treeMapping.ContainsKey(result.Uid)) + if (!treeMapping.TryAdd(result.Uid, Tuple.Create(model.OriginalFileAndType, result.TreeItems))) { Logger.LogWarning($"Model with the UID {result.Uid} already exists. '{model.OriginalFileAndType?.FullPath ?? model.FileAndType.FullPath}' is ignored."); } - else - { - treeMapping.Add(result.Uid, Tuple.Create(model.OriginalFileAndType, result.TreeItems)); - } } else { @@ -66,9 +62,8 @@ public override IEnumerable<FileModel> Prebuild(ImmutableList<FileModel> models, foreach (var dupeModel in dupeModels) { - if (modelsDict.TryGetValue(dupeModel.File, out var dupe)) + if (modelsDict.Remove(dupeModel.File, out var dupe)) { - modelsDict.Remove(dupeModel.File); RenewDupeFileModels(dupe, newFilePaths, modelsDict); } RenewDupeFileModels(dupeModel, newFilePaths, modelsDict); @@ -116,11 +111,10 @@ private static string GetUniqueFilePath(string dupePath, string newFileName, Dic { // new file path already exist and have suffix newFileName += $"_{suffix}"; - suffix++; } else { - // new file path already exist but doesn't have suffix (special case) + // new file path already exist but doesn't have suffix (special case) newFileName += "_1"; newFilePaths[newFilePath] = 2; } diff --git a/src/Docfx.Build.OperationLevelRestApi/SplitRestApiToOperationLevel.cs b/src/Docfx.Build.OperationLevelRestApi/SplitRestApiToOperationLevel.cs index 5eb21b8a427..b108f10f8cb 100644 --- a/src/Docfx.Build.OperationLevelRestApi/SplitRestApiToOperationLevel.cs +++ b/src/Docfx.Build.OperationLevelRestApi/SplitRestApiToOperationLevel.cs @@ -185,10 +185,7 @@ private static Dictionary<string, object> MergeChildMetadata(RestApiRootItemView foreach (var pair in root.Metadata) { // Child metadata wins for the same key - if (!result.ContainsKey(pair.Key)) - { - result[pair.Key] = pair.Value; - } + result.TryAdd(pair.Key, pair.Value); } return result; } diff --git a/src/Docfx.Build.OverwriteDocuments/Docfx.Build.OverwriteDocuments.csproj b/src/Docfx.Build.OverwriteDocuments/Docfx.Build.OverwriteDocuments.csproj index e462efbb22e..833f41fb3c0 100644 --- a/src/Docfx.Build.OverwriteDocuments/Docfx.Build.OverwriteDocuments.csproj +++ b/src/Docfx.Build.OverwriteDocuments/Docfx.Build.OverwriteDocuments.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <PackageReference Include="Markdig" /> </ItemGroup> diff --git a/src/Docfx.Build.OverwriteDocuments/OverwriteUtility.cs b/src/Docfx.Build.OverwriteDocuments/OverwriteUtility.cs index 84018ab2d59..275874b7e5e 100644 --- a/src/Docfx.Build.OverwriteDocuments/OverwriteUtility.cs +++ b/src/Docfx.Build.OverwriteDocuments/OverwriteUtility.cs @@ -23,7 +23,7 @@ public static List<OPathSegment> ParseOPath(string OPathString) throw new ArgumentException("OPathString cannot be null or empty.", nameof(OPathString)); } - if (OPathString.EndsWith("/", StringComparison.Ordinal)) + if (OPathString.EndsWith('/')) { throw new ArgumentException($"{OPathString} is not a valid OPath"); } @@ -39,7 +39,7 @@ public static List<OPathSegment> ParseOPath(string OPathString) throw new ArgumentException($"{OPathString} is not a valid OPath"); } - if (!match.Value.EndsWith("/", StringComparison.Ordinal) && match.Groups["key"].Success) + if (!match.Value.EndsWith('/') && match.Groups["key"].Success) { throw new ArgumentException($"{OPathString} is not a valid OPath"); } @@ -76,33 +76,34 @@ public static string GetUidWrapper(string uid) public static void AddOrUpdateFragmentEntity(this Dictionary<string, MarkdownFragment> fragments, string uid, Dictionary<string, object> metadata = null) { - if (!fragments.ContainsKey(uid)) + if (!fragments.TryGetValue(uid, out var value)) { - fragments.Add(uid, new MarkdownFragment + value = new MarkdownFragment { Uid = uid, Properties = new Dictionary<string, MarkdownProperty>(), Metadata = metadata - }); + }; + fragments.Add(uid, value); } - fragments[uid].Metadata = MergeMetadata(fragments[uid].Metadata, metadata); - fragments[uid].Touched = true; + + value.Metadata = MergeMetadata(value.Metadata, metadata); + value.Touched = true; } public static void AddOrUpdateFragmentProperty(this MarkdownFragment fragment, string oPath, string content = null, Dictionary<string, object> metadata = null) { - if (!fragment.Properties.ContainsKey(oPath)) + if (!fragment.Properties.TryGetValue(oPath, out var property)) { - fragment.Properties[oPath] = new MarkdownProperty - { - OPath = oPath - }; + fragment.Properties[oPath] = property = new MarkdownProperty { OPath = oPath}; } - if (string.IsNullOrEmpty(fragment.Properties[oPath].Content)) + + if (string.IsNullOrEmpty(property.Content)) { - fragment.Properties[oPath].Content = string.IsNullOrWhiteSpace(content) ? string.Empty : content.Trim('\n', '\r'); + property.Content = string.IsNullOrWhiteSpace(content) ? string.Empty : content.Trim('\n', '\r'); } - fragment.Properties[oPath].Touched = true; + + property.Touched = true; fragment.Metadata = MergeMetadata(fragment.Metadata, metadata); } @@ -156,10 +157,7 @@ private static Dictionary<string, object> MergeMetadata(Dictionary<string, objec { foreach (var pair in right) { - if (!left.ContainsKey(pair.Key)) - { - left[pair.Key] = right[pair.Key]; - } + left.TryAdd(pair.Key, pair.Value); } } return left; diff --git a/src/Docfx.Build.RestApi/BuildRestApiDocument.cs b/src/Docfx.Build.RestApi/BuildRestApiDocument.cs index 75d60adb8d8..479fa53a900 100644 --- a/src/Docfx.Build.RestApi/BuildRestApiDocument.cs +++ b/src/Docfx.Build.RestApi/BuildRestApiDocument.cs @@ -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 jValue && jValue.Type == JTokenType.String) + 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/Docfx.Build.RestApi.csproj b/src/Docfx.Build.RestApi/Docfx.Build.RestApi.csproj index 7ab4ee053c2..7703e8c6c3b 100644 --- a/src/Docfx.Build.RestApi/Docfx.Build.RestApi.csproj +++ b/src/Docfx.Build.RestApi/Docfx.Build.RestApi.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\Docfx.Build.Common\Docfx.Build.Common.csproj" /> <ProjectReference Include="..\Docfx.Common\Docfx.Common.csproj" /> diff --git a/src/Docfx.Build.RestApi/RestApiDocumentProcessor.cs b/src/Docfx.Build.RestApi/RestApiDocumentProcessor.cs index a21c9c1dec0..fe922ad87a2 100644 --- a/src/Docfx.Build.RestApi/RestApiDocumentProcessor.cs +++ b/src/Docfx.Build.RestApi/RestApiDocumentProcessor.cs @@ -211,7 +211,7 @@ private static bool IsSwaggerFile(string filePath) if (jObject.TryGetValue("swagger", out JToken swaggerValue)) { var swaggerString = (string)swaggerValue; - if (swaggerString != null && swaggerString.Equals("2.0")) + if (swaggerString is "2.0") { return true; } @@ -256,12 +256,10 @@ private static Dictionary<string, object> MergeMetadata(IDictionary<string, obje var result = new Dictionary<string, object>(item); foreach (var pair in overwriteItems.OrderBy(item => item.Key)) { - if (result.ContainsKey(pair.Key)) + if (!result.TryAdd(pair.Key, pair.Value)) { Logger.LogWarning($"Metadata \"{pair.Key}\" inside rest api is overwritten."); } - - result[pair.Key] = pair.Value; } return result; } diff --git a/src/Docfx.Build.RestApi/RestApiHelper.cs b/src/Docfx.Build.RestApi/RestApiHelper.cs index 7235523ce8d..96258dc939e 100644 --- a/src/Docfx.Build.RestApi/RestApiHelper.cs +++ b/src/Docfx.Build.RestApi/RestApiHelper.cs @@ -48,7 +48,7 @@ public static SwaggerFormattedReference FormatReferenceFullPath(string reference } // Not decode for JSON String Representation - if (reference.StartsWith("/", StringComparison.Ordinal)) + if (reference.StartsWith('/')) { return new SwaggerFormattedReference { diff --git a/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerJsonBuilder.cs b/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerJsonBuilder.cs index ef230d10eb9..871b936684f 100644 --- a/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerJsonBuilder.cs +++ b/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerJsonBuilder.cs @@ -247,10 +247,7 @@ private SwaggerObjectBase ResolveReferences(SwaggerObjectBase swaggerBase, strin } var swaggerObject = ResolveSwaggerObject(resolvedObject); - if (!swaggerObject.Dictionary.ContainsKey(InternalRefNameKey)) - { - swaggerObject.Dictionary.Add(InternalRefNameKey, new SwaggerValue { Token = swagger.ReferenceName }); - } + swaggerObject.Dictionary.TryAdd(InternalRefNameKey, new SwaggerValue { Token = swagger.ReferenceName }); swagger.Reference = swaggerObject; refStack.Pop(); } @@ -259,9 +256,9 @@ private SwaggerObjectBase ResolveReferences(SwaggerObjectBase swaggerBase, strin case SwaggerObjectType.Object: { var swagger = (SwaggerObject)swaggerBase; - foreach (var key in swagger.Dictionary.Keys.ToList()) + foreach (var pair in swagger.Dictionary.ToList()) { - swagger.Dictionary[key] = ResolveReferences(swagger.Dictionary[key], swaggerPath, refStack); + swagger.Dictionary[pair.Key] = ResolveReferences(pair.Value, swaggerPath, refStack); } return swagger; } diff --git a/src/Docfx.Build.SchemaDriven/ApplyOverwriteFragments.cs b/src/Docfx.Build.SchemaDriven/ApplyOverwriteFragments.cs index 1bd0ba8ac27..fd2c9e40cb1 100644 --- a/src/Docfx.Build.SchemaDriven/ApplyOverwriteFragments.cs +++ b/src/Docfx.Build.SchemaDriven/ApplyOverwriteFragments.cs @@ -64,7 +64,6 @@ public override void Build(FileModel model, IHostService host) $"Unable to parse markdown fragments: {ex.Message}", line: ex.Position == -1 ? null : (ex.Position + 1).ToString(), code: WarningCodes.Overwrite.InvalidMarkdownFragments); - return; } catch (DocumentException de) { diff --git a/src/Docfx.Build.SchemaDriven/Models/JsonPointer.cs b/src/Docfx.Build.SchemaDriven/Models/JsonPointer.cs index 5b1284e1ea1..99bb7ddba2d 100644 --- a/src/Docfx.Build.SchemaDriven/Models/JsonPointer.cs +++ b/src/Docfx.Build.SchemaDriven/Models/JsonPointer.cs @@ -49,7 +49,7 @@ public JsonPointer GetParentPointer() public static bool TryCreate(string raw, out JsonPointer pointer) { pointer = null; - if (raw != null && raw.Length > 0 && raw[0] != '/') + if (raw is {Length: > 0} && raw[0] != '/') { return false; } diff --git a/src/Docfx.Build.SchemaDriven/OverwriteApplier.cs b/src/Docfx.Build.SchemaDriven/OverwriteApplier.cs index 6284264e381..3524d0cc96d 100644 --- a/src/Docfx.Build.SchemaDriven/OverwriteApplier.cs +++ b/src/Docfx.Build.SchemaDriven/OverwriteApplier.cs @@ -84,7 +84,7 @@ public object BuildOverwriteWithSchema(FileModel owModel, OverwriteDocumentModel dynamic overwriteObject = ConvertToObjectHelper.ConvertToDynamic(overwrite.Metadata); overwriteObject.uid = overwrite.Uid; var overwriteModel = new FileModel(owModel.FileAndType, overwriteObject, owModel.OriginalFileAndType); - var context = (((IDictionary<string, object>)(owModel.Properties)).TryGetValue("MarkdigMarkdownService", out var service)) + var context = ((IDictionary<string, object>)owModel.Properties).TryGetValue("MarkdigMarkdownService", out var service) ? new ProcessContext(_host, overwriteModel, null, (MarkdigMarkdownService)service) : new ProcessContext(_host, overwriteModel); if (_overwriteModelType == OverwriteModelType.Classic) @@ -115,8 +115,8 @@ public object BuildOverwriteWithSchema(FileModel owModel, OverwriteDocumentModel }; } - owModel.LinkToUids = owModel.LinkToUids.Union((context.UidLinkSources).Keys); - owModel.LinkToFiles = owModel.LinkToFiles.Union((context.FileLinkSources).Keys); + owModel.LinkToUids = owModel.LinkToUids.Union(context.UidLinkSources.Keys); + owModel.LinkToFiles = owModel.LinkToFiles.Union(context.FileLinkSources.Keys); owModel.FileLinkSources = owModel.FileLinkSources.Merge(context.FileLinkSources); owModel.UidLinkSources = owModel.UidLinkSources.Merge(context.UidLinkSources); owModel.Uids = owModel.Uids.AddRange(context.Uids); diff --git a/src/Docfx.Build.SchemaDriven/Processors/FileInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/FileInterpreter.cs index 9f21a5f35e7..d67f99742ed 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 != null && schema.ContentType == ContentType.File; + return schema is {ContentType: ContentType.File}; } public object Interpret(BaseSchema schema, object value, IProcessContext context, string path) @@ -48,7 +48,7 @@ public object Interpret(BaseSchema schema, object value, IProcessContext context relPath = (currentFile + relPath).GetPathFromWorkingFolder(); if (_exportFileLink) { - (context.FileLinkSources).AddFileLinkSource(new LinkSourceInfo + context.FileLinkSources.AddFileLinkSource(new LinkSourceInfo { Target = relPath, SourceFile = originalFile.File diff --git a/src/Docfx.Build.SchemaDriven/Processors/HrefInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/HrefInterpreter.cs index d20c08f188c..afe370d804d 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 != null && schema.ContentType == ContentType.Href; + return schema is {ContentType: ContentType.Href}; } public object Interpret(BaseSchema schema, object value, IProcessContext context, string path) @@ -44,7 +44,7 @@ public object Interpret(BaseSchema schema, object value, IProcessContext context } // "/" is also considered as absolute to us - if (uri.IsAbsoluteUri || val.StartsWith("/", StringComparison.Ordinal)) + if (uri.IsAbsoluteUri || val.StartsWith('/')) { return Helper.RemoveHostName(val, _siteHostName); } @@ -60,7 +60,7 @@ public object Interpret(BaseSchema schema, object value, IProcessContext context relPath = (currentFile + relPath.UrlDecode()).GetPathFromWorkingFolder(); if (_exportFileLink) { - (context.FileLinkSources).AddFileLinkSource(new LinkSourceInfo + context.FileLinkSources.AddFileLinkSource(new LinkSourceInfo { Target = relPath, Anchor = UriUtility.GetFragment(val), diff --git a/src/Docfx.Build.SchemaDriven/Processors/MarkdownAstInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/MarkdownAstInterpreter.cs index 497851514e7..6f70df20a95 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/MarkdownAstInterpreter.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/MarkdownAstInterpreter.cs @@ -40,9 +40,9 @@ private static string MarkupCore(MarkdownDocument document, IProcessContext cont var host = context.Host; var mr = context.MarkdigMarkdownService.Render(document); - (context.FileLinkSources).Merge(mr.FileLinkSources); - (context.UidLinkSources).Merge(mr.UidLinkSources); - (context.Dependency).UnionWith(mr.Dependency); + context.FileLinkSources.Merge(mr.FileLinkSources); + context.UidLinkSources.Merge(mr.UidLinkSources); + context.Dependency.UnionWith(mr.Dependency); return mr.Html; } } diff --git a/src/Docfx.Build.SchemaDriven/Processors/MarkdownInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/MarkdownInterpreter.cs index a4c928497d7..2ac605ee96e 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 != null && schema.ContentType == ContentType.Markdown; + return schema is {ContentType: ContentType.Markdown}; } public object Interpret(BaseSchema schema, object value, IProcessContext context, string path) @@ -32,9 +32,9 @@ private static string MarkupCore(string content, IProcessContext context, string var host = context.Host; var mr = host.Markup(content, context.GetOriginalContentFile(path), false); - (context.FileLinkSources).Merge(mr.FileLinkSources); - (context.UidLinkSources).Merge(mr.UidLinkSources); - (context.Dependency).UnionWith(mr.Dependency); + context.FileLinkSources.Merge(mr.FileLinkSources); + context.UidLinkSources.Merge(mr.UidLinkSources); + context.Dependency.UnionWith(mr.Dependency); if (mr.Html.StartsWith("<p")) mr.Html = mr.Html.Insert(mr.Html.IndexOf(">"), " jsonPath=\"" + path + "\""); diff --git a/src/Docfx.Build.SchemaDriven/Processors/Merger.cs b/src/Docfx.Build.SchemaDriven/Processors/Merger.cs index 0b730355a3f..3b6dadf990f 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/Merger.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/Merger.cs @@ -131,7 +131,7 @@ private static void ThrowError(string message) private static bool TestKey(object source, object overrides, BaseSchema schema) { - if (overrides == null || overrides == null) + if (overrides == null || source == null) { return false; } diff --git a/src/Docfx.Build.SchemaDriven/Processors/ProcessContext.cs b/src/Docfx.Build.SchemaDriven/Processors/ProcessContext.cs index f58039757f9..4fe3d6bc2fd 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/ProcessContext.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/ProcessContext.cs @@ -58,7 +58,7 @@ public ProcessContext(IHostService hs, FileModel fm, IDocumentBuildContext bc, M XRefSpecs = new List<XRefSpec>(); ExternalXRefSpecs = new List<XRefSpec>(); Metadata = new Dictionary<string, object>(); - if (((IDictionary<string, object>)(fm.Properties)).TryGetValue("PathProperties", out var properties)) + if (((IDictionary<string, object>)fm.Properties).TryGetValue("PathProperties", out var properties)) { var pathProperties = properties as Dictionary<string, Dictionary<string, object>>; PathProperties = pathProperties ?? throw new ArgumentException($"PathProperties is expecting a dictionary however is a {pathProperties.GetType()}"); diff --git a/src/Docfx.Build.SchemaDriven/Processors/XrefInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/XrefInterpreter.cs index a865871c960..e4c0f1618f3 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 != null && schema.ContentType == ContentType.Xref; + return schema is {ContentType: ContentType.Xref}; } public object Interpret(BaseSchema schema, object value, IProcessContext context, string path) diff --git a/src/Docfx.Build.SchemaDriven/ValidateFragmentsHandler.cs b/src/Docfx.Build.SchemaDriven/ValidateFragmentsHandler.cs index 2a21076f632..4d4aa003a70 100644 --- a/src/Docfx.Build.SchemaDriven/ValidateFragmentsHandler.cs +++ b/src/Docfx.Build.SchemaDriven/ValidateFragmentsHandler.cs @@ -37,9 +37,10 @@ public void HandleProperty(string propertyKey, YamlMappingNode node, Dictionary< return; } var opath = oPathPrefix + propertyKey; - if (!fragments[uid].Properties.ContainsKey(opath)) + var fragment = fragments[uid]; + if (!fragment.Properties.ContainsKey(opath)) { - if (string.IsNullOrEmpty(oPathPrefix) && fragments[uid].Metadata?.ContainsKey(opath) == true) + if (string.IsNullOrEmpty(oPathPrefix) && fragment.Metadata?.ContainsKey(opath) == true) { return; } diff --git a/src/Docfx.Build.TagLevelRestApi/Docfx.Build.TagLevelRestApi.csproj b/src/Docfx.Build.TagLevelRestApi/Docfx.Build.TagLevelRestApi.csproj index bc0232bfbde..4b814009b09 100644 --- a/src/Docfx.Build.TagLevelRestApi/Docfx.Build.TagLevelRestApi.csproj +++ b/src/Docfx.Build.TagLevelRestApi/Docfx.Build.TagLevelRestApi.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\..\src\Docfx.Build.Common\Docfx.Build.Common.csproj" /> <ProjectReference Include="..\..\src\Docfx.Common\Docfx.Common.csproj" /> diff --git a/src/Docfx.Build.TagLevelRestApi/SplitRestApiToTagLevel.cs b/src/Docfx.Build.TagLevelRestApi/SplitRestApiToTagLevel.cs index de7e7fc5852..dacd4b03c3a 100644 --- a/src/Docfx.Build.TagLevelRestApi/SplitRestApiToTagLevel.cs +++ b/src/Docfx.Build.TagLevelRestApi/SplitRestApiToTagLevel.cs @@ -191,10 +191,7 @@ private static Dictionary<string, object> MergeTagMetadata(RestApiRootItemViewMo foreach (var pair in root.Metadata) { // Tag metadata wins for the same key - if (!result.ContainsKey(pair.Key)) - { - result[pair.Key] = pair.Value; - } + result.TryAdd(pair.Key, pair.Value); } return result; } diff --git a/src/Docfx.Build.UniversalReference/Docfx.Build.UniversalReference.csproj b/src/Docfx.Build.UniversalReference/Docfx.Build.UniversalReference.csproj index 1d1773babfd..491bb4ce54a 100644 --- a/src/Docfx.Build.UniversalReference/Docfx.Build.UniversalReference.csproj +++ b/src/Docfx.Build.UniversalReference/Docfx.Build.UniversalReference.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\Docfx.Build.Common\Docfx.Build.Common.csproj" /> <ProjectReference Include="..\Docfx.Common\Docfx.Common.csproj" /> diff --git a/src/Docfx.Build/ApiPage/ApiPageProcessor.cs b/src/Docfx.Build/ApiPage/ApiPageProcessor.cs index f74ec18b902..115bdd30127 100644 --- a/src/Docfx.Build/ApiPage/ApiPageProcessor.cs +++ b/src/Docfx.Build/ApiPage/ApiPageProcessor.cs @@ -46,7 +46,7 @@ public FileModel Load(FileAndType file, ImmutableDictionary<string, object> meta foreach (var (key, value) in data.metadata.OrderBy(item => item.Key)) content[key] = value.Value; } - + content["title"] = data.title; content["content"] = ApiPageHtmlTemplate.Render(data, Markup).ToString(); content["yamlmime"] = "ApiPage"; diff --git a/src/Docfx.Build/CompilePhaseHandler.cs b/src/Docfx.Build/CompilePhaseHandler.cs index e6ad1537014..71da01dbaf2 100644 --- a/src/Docfx.Build/CompilePhaseHandler.cs +++ b/src/Docfx.Build/CompilePhaseHandler.cs @@ -39,7 +39,7 @@ public void Handle(List<HostService> hostServices, int maxParallelism) _restructions.AddRange(hostService.TableOfContentRestructions); } } - }, maxParallelism); + }, maxParallelism, Context.CancellationToken); DistributeTocRestructions(hostServices); @@ -49,7 +49,7 @@ public void Handle(List<HostService> hostServices, int maxParallelism) Build(hostService, maxParallelism); } - hostServices.RunAll(Postbuild, maxParallelism); + hostServices.RunAll(Postbuild, maxParallelism, Context.CancellationToken); } private void Prepare(List<HostService> hostServices, int maxParallelism) @@ -66,7 +66,8 @@ private void Prepare(List<HostService> hostServices, int maxParallelism) { m.LocalPathFromRoot ??= StringExtension.ToDisplayPath(Path.Combine(m.BaseDir, m.File)); }, - maxParallelism); + maxParallelism, + Context.CancellationToken); } } @@ -83,7 +84,7 @@ private void DistributeTocRestructions(List<HostService> hostServices) } } - private static void Prebuild(HostService hostService) + private void Prebuild(HostService hostService) { RunBuildSteps( hostService.Processor.BuildSteps, @@ -99,7 +100,7 @@ private static void Prebuild(HostService hostService) }); } - private static void Build(HostService hostService, int maxParallelism) + private void Build(HostService hostService, int maxParallelism) { hostService.Models.RunAll( m => @@ -124,10 +125,11 @@ private static void Build(HostService hostService, int maxParallelism) }); } }, - maxParallelism); + maxParallelism, + Context.CancellationToken); } - private static void Postbuild(HostService hostService) + private void Postbuild(HostService hostService) { hostService.Reload(hostService.Models); @@ -140,12 +142,14 @@ private static void Postbuild(HostService hostService) }); } - private static void RunBuildSteps(IEnumerable<IDocumentBuildStep> buildSteps, Action<IDocumentBuildStep> action) + private void RunBuildSteps(IEnumerable<IDocumentBuildStep> buildSteps, Action<IDocumentBuildStep> action) { if (buildSteps != null) { foreach (var buildStep in buildSteps.OrderBy(static step => step.BuildOrder)) { + Context.CancellationToken.ThrowIfCancellationRequested(); + action(buildStep); } } diff --git a/src/Docfx.Build/Conceptual/WordCounter.cs b/src/Docfx.Build/Conceptual/WordCounter.cs index 4efb8208626..45b7377d8f6 100644 --- a/src/Docfx.Build/Conceptual/WordCounter.cs +++ b/src/Docfx.Build/Conceptual/WordCounter.cs @@ -8,13 +8,7 @@ namespace Docfx.Build.ConceptualDocuments; internal static class WordCounter { private static readonly string[] ExcludeNodeXPaths = ["//title"]; - -#if NET8_0_OR_GREATER private static readonly System.Buffers.SearchValues<char> SpecialChars = System.Buffers.SearchValues.Create(".?!;:,()[]"); -#else - private static readonly string SpecialChars = ".?!;:,()[]"; -#endif - private static readonly char[] DelimiterChars = [' ', '\t', '\n']; public static long CountWord(string html) diff --git a/src/Docfx.Build/Docfx.Build.csproj b/src/Docfx.Build/Docfx.Build.csproj index 0bc80e8884a..c097f058543 100644 --- a/src/Docfx.Build/Docfx.Build.csproj +++ b/src/Docfx.Build/Docfx.Build.csproj @@ -18,7 +18,7 @@ <PackageReference Include="Jint" /> <PackageReference Include="Stubble.Core" /> <PackageReference Include="OneOf" /> - <PackageReference Include="OneOf.SourceGenerator" /> + <PackageReference Include="OneOf.SourceGenerator" PrivateAssets="All" /> </ItemGroup> </Project> diff --git a/src/Docfx.Build/DocumentBuildContext.cs b/src/Docfx.Build/DocumentBuildContext.cs index b3da3dfb121..9f8e0ac58f0 100644 --- a/src/Docfx.Build/DocumentBuildContext.cs +++ b/src/Docfx.Build/DocumentBuildContext.cs @@ -16,13 +16,7 @@ public sealed class DocumentBuildContext : IDocumentBuildContext private readonly ConcurrentDictionary<string, TocInfo> _tableOfContents = new(FilePathComparer.OSPlatformSensitiveStringComparer); private readonly Task<IXRefContainerReader> _reader; - public DocumentBuildContext(string buildOutputFolder) - : this(buildOutputFolder, Enumerable.Empty<FileAndType>(), ImmutableArray<string>.Empty, ImmutableArray<string>.Empty, 1, Directory.GetCurrentDirectory(), string.Empty, null, null) { } - - public DocumentBuildContext(string buildOutputFolder, IEnumerable<FileAndType> allSourceFiles, ImmutableArray<string> externalReferencePackages, ImmutableArray<string> xrefMaps, int maxParallelism, string baseFolder, string versionName, ApplyTemplateSettings applyTemplateSetting, string rootTocPath) - : this(buildOutputFolder, allSourceFiles, externalReferencePackages, xrefMaps, maxParallelism, baseFolder, versionName, applyTemplateSetting, rootTocPath, null, null) { } - - public DocumentBuildContext(DocumentBuildParameters parameters) + public DocumentBuildContext(DocumentBuildParameters parameters, CancellationToken cancellationToken) { BuildOutputFolder = Path.Combine(Path.GetFullPath(EnvironmentContext.BaseDirectory), parameters.OutputBaseDir); VersionName = parameters.VersionName; @@ -34,9 +28,10 @@ public DocumentBuildContext(DocumentBuildParameters parameters) if (parameters.XRefMaps.Length > 0) { + // Note: `_reader` task is processed asyncronously and await is called later. So OperationCancellationException is not thrown by this lines. _reader = new XRefCollection( from u in parameters.XRefMaps - select new Uri(u, UriKind.RelativeOrAbsolute)).GetReaderAsync(parameters.Files.DefaultBaseDir, parameters.MarkdownEngineParameters?.FallbackFolders); + select new Uri(u, UriKind.RelativeOrAbsolute)).GetReaderAsync(parameters.Files.DefaultBaseDir, parameters.MarkdownEngineParameters?.FallbackFolders, cancellationToken); } RootTocPath = parameters.RootTocPath; @@ -48,15 +43,24 @@ from u in parameters.XRefMaps if (!string.IsNullOrEmpty(versionDir)) { versionDir = versionDir.Replace('\\', '/'); - if (!versionDir.EndsWith("/", StringComparison.Ordinal)) + if (!versionDir.EndsWith('/')) { versionDir += "/"; } } VersionFolder = versionDir; + CancellationToken = cancellationToken; } - public DocumentBuildContext( + #region Constructors that used by test code. + + internal DocumentBuildContext(string buildOutputFolder) + : this(buildOutputFolder, [], [], [], 1, Directory.GetCurrentDirectory(), string.Empty, null, null) { } + + private DocumentBuildContext(string buildOutputFolder, IEnumerable<FileAndType> allSourceFiles, ImmutableArray<string> externalReferencePackages, ImmutableArray<string> xrefMaps, int maxParallelism, string baseFolder, string versionName, ApplyTemplateSettings applyTemplateSetting, string rootTocPath) + : this(buildOutputFolder, allSourceFiles, externalReferencePackages, xrefMaps, maxParallelism, baseFolder, versionName, applyTemplateSetting, rootTocPath, null, null) { } + + private DocumentBuildContext( string buildOutputFolder, IEnumerable<FileAndType> allSourceFiles, ImmutableArray<string> externalReferencePackages, @@ -91,13 +95,14 @@ from u in xrefMaps if (!string.IsNullOrEmpty(versionFolder)) { versionFolder = versionFolder.Replace('\\', '/'); - if (!versionFolder.EndsWith("/", StringComparison.Ordinal)) + if (!versionFolder.EndsWith('/')) { versionFolder += "/"; } } VersionFolder = versionFolder; } + #endregion public string BuildOutputFolder { get; } @@ -109,7 +114,7 @@ from u in xrefMaps public ApplyTemplateSettings ApplyTemplateSettings { get; set; } - public ImmutableArray<string> ExternalReferencePackages { get; } = ImmutableArray<string>.Empty; + public ImmutableArray<string> ExternalReferencePackages { get; } = []; public ImmutableDictionary<string, FileAndType> AllSourceFiles { get; } @@ -129,6 +134,8 @@ from u in xrefMaps public ICustomHrefGenerator HrefGenerator { get; } + public CancellationToken CancellationToken { get; } = CancellationToken.None; + internal ConcurrentBag<ManifestItem> ManifestItems { get; } = new(); private ConcurrentDictionary<string, XRefSpec> ExternalXRefSpec { get; } = new(); @@ -150,9 +157,10 @@ public void ReportExternalXRefSpec(XRefSpec spec) public void ResolveExternalXRefSpec() { - Task.WaitAll( + Task.WaitAll([ Task.Run(ResolveExternalXRefSpecForSpecs), - Task.Run(ResolveExternalXRefSpecForNoneSpecsAsync)); + Task.Run(ResolveExternalXRefSpecForNoneSpecsAsync) + ], CancellationToken); } private void ResolveExternalXRefSpecForSpecs() @@ -205,7 +213,7 @@ private List<string> ResolveByExternalReferencePackages(List<string> uidList, Co var oldSpecCount = externalXRefSpec.Count; var list = new List<string>(); - using (var externalReferences = new ExternalReferencePackageCollection(ExternalReferencePackages, MaxParallelism)) + using (var externalReferences = new ExternalReferencePackageCollection(ExternalReferencePackages, MaxParallelism, CancellationToken)) { foreach (var uid in uidList) { @@ -401,7 +409,7 @@ public XRefSpec GetXrefSpec(string uid) if (ExternalReferencePackages.Length > 0) { - using (var externalReferences = new ExternalReferencePackageCollection(ExternalReferencePackages, MaxParallelism)) + using (var externalReferences = new ExternalReferencePackageCollection(ExternalReferencePackages, MaxParallelism, CancellationToken)) { xref = GetExternalReference(externalReferences, uid); } @@ -429,13 +437,9 @@ public IImmutableList<string> GetTocFileKeySet(string key) public void RegisterToc(string tocFileKey, string fileKey) { -#if NET7_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(fileKey); ArgumentException.ThrowIfNullOrEmpty(tocFileKey); -#else - if (string.IsNullOrEmpty(fileKey)) throw new ArgumentNullException(nameof(fileKey)); - if (string.IsNullOrEmpty(tocFileKey)) throw new ArgumentNullException(nameof(tocFileKey)); -#endif + TocMap.AddOrUpdate( fileKey, new HashSet<string>(FilePathComparer.OSPlatformSensitiveRelativePathComparer) { tocFileKey }, diff --git a/src/Docfx.Build/DocumentBuildParameters.cs b/src/Docfx.Build/DocumentBuildParameters.cs index 84a1a33b355..2356909b93e 100644 --- a/src/Docfx.Build/DocumentBuildParameters.cs +++ b/src/Docfx.Build/DocumentBuildParameters.cs @@ -13,13 +13,13 @@ public class DocumentBuildParameters public string OutputBaseDir { get; set; } - public ImmutableArray<string> XRefMaps { get; set; } = ImmutableArray<string>.Empty; + public ImmutableArray<string> XRefMaps { get; set; } = []; public ImmutableDictionary<string, object> Metadata { get; set; } = ImmutableDictionary<string, object>.Empty; public FileMetadata FileMetadata { get; set; } - public ImmutableArray<string> PostProcessors { get; set; } = ImmutableArray<string>.Empty; + public ImmutableArray<string> PostProcessors { get; set; } = []; public TemplateManager TemplateManager { get; set; } diff --git a/src/Docfx.Build/DocumentBuilder.cs b/src/Docfx.Build/DocumentBuilder.cs index ede13a86dd3..6b9c3f72813 100644 --- a/src/Docfx.Build/DocumentBuilder.cs +++ b/src/Docfx.Build/DocumentBuilder.cs @@ -39,10 +39,12 @@ public void Build(DocumentBuildParameters parameter) Build(new DocumentBuildParameters[] { parameter }, parameter.OutputBaseDir); } - public void Build(IList<DocumentBuildParameters> parameters, string outputDirectory) + public void Build(IList<DocumentBuildParameters> parameters, string outputDirectory, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(parameters); + cancellationToken.ThrowIfCancellationRequested(); + if (parameters.Count == 0) { throw new ArgumentException("Parameters are empty.", nameof(parameters)); @@ -119,7 +121,7 @@ public void Build(IList<DocumentBuildParameters> parameters, string outputDirect MetadataValidators = MetadataValidators.ToList(), Processors = Processors, }; - manifests.Add(builder.Build(parameter, markdownService)); + manifests.Add(builder.Build(parameter, markdownService, cancellationToken)); } } if (noContentFound) @@ -157,7 +159,7 @@ public void Build(IList<DocumentBuildParameters> parameters, string outputDirect .Create(); generatedManifest.Files.Sort((a, b) => (a.SourceRelativePath ?? "").CompareTo(b.SourceRelativePath ?? "")); - JsonUtility.Serialize("manifest.json", generatedManifest, Formatting.Indented); + JsonUtility.Serialize("manifest.json", generatedManifest, indented: true); EnvironmentContext.FileAbstractLayerImpl = null; diff --git a/src/Docfx.Build/FileCollection.cs b/src/Docfx.Build/FileCollection.cs index 43a98f54a07..48b557d0ee3 100644 --- a/src/Docfx.Build/FileCollection.cs +++ b/src/Docfx.Build/FileCollection.cs @@ -61,11 +61,11 @@ public void Add(DocumentType type, string baseDir, IEnumerable<string> files, st throw new ArgumentException("DestinationDir must start with BaseDir, or relative path.", nameof(destinationDir)); } } - if (!string.IsNullOrEmpty(sourceDir) && !sourceDir.EndsWith("/", StringComparison.Ordinal)) + if (!string.IsNullOrEmpty(sourceDir) && !sourceDir.EndsWith('/')) { sourceDir += "/"; } - if (!string.IsNullOrEmpty(destinationDir) && !destinationDir.EndsWith("/", StringComparison.Ordinal)) + if (!string.IsNullOrEmpty(destinationDir) && !destinationDir.EndsWith('/')) { destinationDir += "/"; } diff --git a/src/Docfx.Build/FileMetadata.cs b/src/Docfx.Build/FileMetadata.cs index 8314c0255b3..928e646fb08 100644 --- a/src/Docfx.Build/FileMetadata.cs +++ b/src/Docfx.Build/FileMetadata.cs @@ -11,7 +11,7 @@ public sealed class FileMetadata : Dictionary<string, ImmutableArray<FileMetadat { public string BaseDir { get; } - public FileMetadata(string baseDir) : base() + public FileMetadata(string baseDir) { BaseDir = baseDir; } diff --git a/src/Docfx.Build/HostServiceCreator.cs b/src/Docfx.Build/HostServiceCreator.cs index fb6aea1c646..72c28812338 100644 --- a/src/Docfx.Build/HostServiceCreator.cs +++ b/src/Docfx.Build/HostServiceCreator.cs @@ -59,14 +59,15 @@ public virtual (FileModel model, bool valid) Load( { return (processor.Load(file, fileMeta), true); } + catch (DocumentException) + { + return (null, false); + } catch (Exception e) { - if (e is not DocumentException) - { - Logger.LogError( - $"Unable to load file '{file.File}' via processor '{processor.Name}': {e.Message}", - code: ErrorCodes.Build.InvalidInputFile); - } + Logger.LogError( + $"Unable to load file '{file.File}' via processor '{processor.Name}': {e.Message}", + code: ErrorCodes.Build.InvalidInputFile); return (null, false); } } @@ -97,7 +98,9 @@ bool NeedApplyMetadata() { invalidFiles.Add(file.File); } - }, _context.MaxParallelism); + }, + _context.MaxParallelism, + _context.CancellationToken); return (models.OrderBy(m => m.File, StringComparer.Ordinal).ToArray(), invalidFiles); } diff --git a/src/Docfx.Build/LinkPhaseHandler.cs b/src/Docfx.Build/LinkPhaseHandler.cs index 2419be3382e..5957e92252d 100644 --- a/src/Docfx.Build/LinkPhaseHandler.cs +++ b/src/Docfx.Build/LinkPhaseHandler.cs @@ -55,7 +55,7 @@ private IEnumerable<ManifestItemWithContext> ExportManifest(HostService hostServ m.BaseDir = Context.BuildOutputFolder; if (m.FileAndType.SourceDir != m.FileAndType.DestinationDir) { - m.File = (RelativePath)m.FileAndType.DestinationDir + (((RelativePath)m.File) - (RelativePath)m.FileAndType.SourceDir); + m.File = (RelativePath)m.FileAndType.DestinationDir + ((RelativePath)m.File - (RelativePath)m.FileAndType.SourceDir); } m.File = Path.Combine(Context.VersionFolder ?? string.Empty, m.File); var result = hostService.Processor.Save(m); @@ -77,7 +77,7 @@ private IEnumerable<ManifestItemWithContext> ExportManifest(HostService hostServ } } } - }); + }, Context.CancellationToken); return manifestItems; } @@ -136,7 +136,7 @@ private void CheckFileLink(FileModel model, HostService hostService, SaveResult Logger.LogWarning($"Invalid file link:({fileLink}).", code: WarningCodes.Build.InvalidFileLink); } } - }); + }, Context.CancellationToken); } private void HandleUids(SaveResult result) diff --git a/src/Docfx.Build/ManifestProcessor.cs b/src/Docfx.Build/ManifestProcessor.cs index b27302e681a..e135b74a317 100644 --- a/src/Docfx.Build/ManifestProcessor.cs +++ b/src/Docfx.Build/ManifestProcessor.cs @@ -87,7 +87,8 @@ private void NormalizeToObject() } } }, - _context.MaxParallelism); + _context.MaxParallelism, + _context.CancellationToken); } private void FeedOptions() @@ -113,7 +114,8 @@ private void FeedOptions() } } }, - _context.MaxParallelism); + _context.MaxParallelism, + _context.CancellationToken); } private void UpdateHref() @@ -130,7 +132,8 @@ private void UpdateHref() m.Item.Content = m.FileModel.Content; } }, - _context.MaxParallelism); + _context.MaxParallelism, + _context.CancellationToken); } private void ApplySystemMetadata() @@ -171,7 +174,8 @@ private void ApplySystemMetadata() } } }, - _context.MaxParallelism); + _context.MaxParallelism, + _context.CancellationToken); _globalMetadata["_shared"] = sharedObjects; } diff --git a/src/Docfx.Build/ManifestUtility.cs b/src/Docfx.Build/ManifestUtility.cs index af6cf763f4f..bbad03dea0e 100644 --- a/src/Docfx.Build/ManifestUtility.cs +++ b/src/Docfx.Build/ManifestUtility.cs @@ -40,8 +40,8 @@ public static Manifest MergeManifest(List<Manifest> manifests) ArgumentNullException.ThrowIfNull(manifests); var xrefMaps = (from manifest in manifests - where manifest.Xrefmap != null - select manifest.Xrefmap).ToList(); + where manifest.Xrefmap != null + select manifest.Xrefmap).ToList(); var manifestGroupInfos = (from manifest in manifests from g in manifest.Groups ?? Enumerable.Empty<ManifestGroupInfo>() select g).ToList(); diff --git a/src/Docfx.Build/OneOfJsonConverterFactory.cs b/src/Docfx.Build/OneOfJsonConverterFactory.cs index 33e16fe6f01..9c4e48ad146 100644 --- a/src/Docfx.Build/OneOfJsonConverterFactory.cs +++ b/src/Docfx.Build/OneOfJsonConverterFactory.cs @@ -3,8 +3,8 @@ using System.Diagnostics; using System.Reflection; -using System.Text.Json.Serialization; using System.Text.Json; +using System.Text.Json.Serialization; using OneOf; #nullable enable @@ -47,7 +47,6 @@ private class OneOfJsonConverter<T> : JsonConverter<T> where T : IOneOf } catch (JsonException) { - continue; } } diff --git a/src/Docfx.Build/PostProcessors/ExtractSearchIndex.cs b/src/Docfx.Build/PostProcessors/ExtractSearchIndex.cs index 4a910a85ed9..1882c91b598 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; @@ -46,7 +46,7 @@ public ImmutableDictionary<string, object> PrepareMetadata(ImmutableDictionary<s return metadata; } - public Manifest Process(Manifest manifest, string outputFolder) + public Manifest Process(Manifest manifest, string outputFolder, CancellationToken cancellationToken = default) { if (outputFolder == null) { @@ -67,6 +67,8 @@ from output in item.Output Logger.LogInfo($"Extracting index data from {htmlFiles.Count} html files"); foreach ((string relativePath, Dictionary<string, object> metadata) in htmlFiles) { + cancellationToken.ThrowIfCancellationRequested(); + var filePath = Path.Combine(outputFolder, relativePath); var html = new HtmlDocument(); Logger.LogDiagnostic($"Extracting index data from {filePath}"); @@ -90,8 +92,7 @@ from output in item.Output } } } - - JsonUtility.Serialize(indexDataFilePath, indexData, Formatting.Indented); + JsonUtility.Serialize(indexDataFilePath, indexData, indented: true); // add index.json to manifest as resource file var manifestItem = new ManifestItem diff --git a/src/Docfx.Build/PostProcessors/HtmlPostProcessor.cs b/src/Docfx.Build/PostProcessors/HtmlPostProcessor.cs index a51bd936707..a052eaed954 100644 --- a/src/Docfx.Build/PostProcessors/HtmlPostProcessor.cs +++ b/src/Docfx.Build/PostProcessors/HtmlPostProcessor.cs @@ -13,6 +13,8 @@ namespace Docfx.Build.Engine; sealed class HtmlPostProcessor : IPostProcessor { + private static readonly UTF8Encoding Utf8EncodingWithoutBom = new(false); + public List<IHtmlDocumentHandler> Handlers { get; } = new(); private bool _handlerInitialized; @@ -39,7 +41,7 @@ public ImmutableDictionary<string, object> PrepareMetadata(ImmutableDictionary<s return metadata; } - public Manifest Process(Manifest manifest, string outputFolder) + public Manifest Process(Manifest manifest, string outputFolder, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(manifest); ArgumentNullException.ThrowIfNull(outputFolder); @@ -58,6 +60,8 @@ where output.Key.Equals(".html", StringComparison.OrdinalIgnoreCase) OutputFile = output.Value.RelativePath, }) { + cancellationToken.ThrowIfCancellationRequested(); + if (!EnvironmentContext.FileAbstractLayer.Exists(tuple.OutputFile)) { continue; @@ -79,7 +83,7 @@ where output.Key.Equals(".html", StringComparison.OrdinalIgnoreCase) } using (var stream = EnvironmentContext.FileAbstractLayer.Create(tuple.OutputFile)) { - document.Save(stream, Encoding.UTF8); + document.Save(stream, Utf8EncodingWithoutBom); } } foreach (var handler in Handlers) diff --git a/src/Docfx.Build/PostProcessors/PostProcessorsManager.cs b/src/Docfx.Build/PostProcessors/PostProcessorsManager.cs index 7e953208a91..39d13341092 100644 --- a/src/Docfx.Build/PostProcessors/PostProcessorsManager.cs +++ b/src/Docfx.Build/PostProcessors/PostProcessorsManager.cs @@ -34,11 +34,11 @@ public ImmutableDictionary<string, object> PrepareMetadata(ImmutableDictionary<s return updatedMetadata; } - public void Process(Manifest manifest, string outputFolder) + public void Process(Manifest manifest, string outputFolder, CancellationToken cancellationToken = default) { foreach (var postProcessor in _postProcessors) { - manifest = postProcessor.Processor.Process(manifest, outputFolder) ?? + manifest = postProcessor.Processor.Process(manifest, outputFolder, cancellationToken) ?? throw new DocfxException($"Post processor {postProcessor.ContractName} should not return null manifest"); // To make sure post processor won't generate duplicate output files diff --git a/src/Docfx.Build/PostProcessors/SitemapGenerator.cs b/src/Docfx.Build/PostProcessors/SitemapGenerator.cs index b4b2d0d0f22..141a63c792f 100644 --- a/src/Docfx.Build/PostProcessors/SitemapGenerator.cs +++ b/src/Docfx.Build/PostProcessors/SitemapGenerator.cs @@ -26,14 +26,14 @@ public ImmutableDictionary<string, object> PrepareMetadata(ImmutableDictionary<s return metadata; } - public Manifest Process(Manifest manifest, string outputFolder) + public Manifest Process(Manifest manifest, string outputFolder, CancellationToken cancellationToken = default) { if (string.IsNullOrEmpty(manifest.Sitemap?.BaseUrl)) { return manifest; } - if (!manifest.Sitemap.BaseUrl.EndsWith("/", StringComparison.Ordinal)) + if (!manifest.Sitemap.BaseUrl.EndsWith('/')) { manifest.Sitemap.BaseUrl += '/'; } @@ -105,7 +105,7 @@ private static SitemapElementOptions GetOptions(SitemapOptions rootOptions, stri } else { - if (!options.BaseUrl.EndsWith("/", StringComparison.Ordinal)) + if (!options.BaseUrl.EndsWith('/')) { options.BaseUrl += '/'; } diff --git a/src/Docfx.Build/ResourceFiles/IResourceFileConfig.cs b/src/Docfx.Build/ResourceFiles/IResourceFileConfig.cs index 470299c0dee..63585db7823 100644 --- a/src/Docfx.Build/ResourceFiles/IResourceFileConfig.cs +++ b/src/Docfx.Build/ResourceFiles/IResourceFileConfig.cs @@ -1,4 +1,7 @@ -namespace Docfx.Build.ResourceFiles; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Docfx.Build.ResourceFiles; public interface IResourceFileConfig { diff --git a/src/Docfx.Build/ResourceFiles/ResourceDocumentProcessor.cs b/src/Docfx.Build/ResourceFiles/ResourceDocumentProcessor.cs index 683d7044e3c..f3d5d736fd6 100644 --- a/src/Docfx.Build/ResourceFiles/ResourceDocumentProcessor.cs +++ b/src/Docfx.Build/ResourceFiles/ResourceDocumentProcessor.cs @@ -43,7 +43,7 @@ public override FileModel Load(FileAndType file, ImmutableDictionary<string, obj { return new FileModel(file, new Dictionary<string, object>()) { - Uids = ImmutableArray<UidDefinition>.Empty, + Uids = [], LocalPathFromRoot = PathUtility.MakeRelativePath( EnvironmentContext.BaseDirectory, EnvironmentContext.FileAbstractLayer.GetPhysicalPath(file.File)), diff --git a/src/Docfx.Build/SingleDocumentBuilder.cs b/src/Docfx.Build/SingleDocumentBuilder.cs index eaba1cf50fb..f1cf5ee4aa5 100644 --- a/src/Docfx.Build/SingleDocumentBuilder.cs +++ b/src/Docfx.Build/SingleDocumentBuilder.cs @@ -2,6 +2,7 @@ // 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; @@ -16,7 +17,10 @@ class SingleDocumentBuilder : IDisposable public IEnumerable<IDocumentProcessor> Processors { get; set; } public IEnumerable<IInputMetadataValidator> MetadataValidators { get; set; } - public static ImmutableList<FileModel> Build(IDocumentProcessor processor, DocumentBuildParameters parameters, IMarkdownService markdownService) + public static ImmutableList<FileModel> Build( + IDocumentProcessor processor, + DocumentBuildParameters parameters, + IMarkdownService markdownService) { var hostServiceCreator = new HostServiceCreator(null); var hostService = hostServiceCreator.CreateHostService( @@ -32,7 +36,7 @@ public static ImmutableList<FileModel> Build(IDocumentProcessor processor, Docum return hostService.Models; } - public Manifest Build(DocumentBuildParameters parameters, IMarkdownService markdownService) + public Manifest Build(DocumentBuildParameters parameters, IMarkdownService markdownService, CancellationToken cancellationToken) { ArgumentNullException.ThrowIfNull(parameters); @@ -52,14 +56,14 @@ public Manifest Build(DocumentBuildParameters parameters, IMarkdownService markd Directory.CreateDirectory(parameters.OutputBaseDir); - var context = new DocumentBuildContext(parameters); + var context = new DocumentBuildContext(parameters, cancellationToken); // Start building document... var templateProcessor = parameters.TemplateManager?.GetTemplateProcessor(context, parameters.MaxParallelism) ?? new TemplateProcessor(new EmptyResourceReader(), context, 16); var hostServiceCreator = new HostServiceCreator(context); - var hostServices = GetInnerContexts(parameters, Processors, templateProcessor, hostServiceCreator, markdownService); + var hostServices = GetInnerContexts(parameters, Processors, templateProcessor, hostServiceCreator, markdownService, cancellationToken); templateProcessor.CopyTemplateResources(context.ApplyTemplateSettings); @@ -86,9 +90,14 @@ private List<HostService> GetInnerContexts( IEnumerable<IDocumentProcessor> processors, TemplateProcessor templateProcessor, HostServiceCreator creator, - IMarkdownService markdownService) + IMarkdownService markdownService, + CancellationToken cancellationToken) { - var files = (from file in parameters.Files.EnumerateFiles().AsParallel().WithDegreeOfParallelism(parameters.MaxParallelism) + cancellationToken.ThrowIfCancellationRequested(); + + var files = (from file in parameters.Files.EnumerateFiles().AsParallel() + .WithDegreeOfParallelism(parameters.MaxParallelism) + .WithCancellation(cancellationToken) from p in (from processor in processors let priority = processor.GetProcessingPriority(file) where priority != ProcessingPriority.NotSupported @@ -114,7 +123,9 @@ orderby ps.Key descending try { - return (from processor in processors.AsParallel().WithDegreeOfParallelism(parameters.MaxParallelism) + return (from processor in processors.AsParallel() + .WithDegreeOfParallelism(parameters.MaxParallelism) + .WithCancellation(cancellationToken) join item in toHandleItems.AsParallel() on processor equals item.Key into g from item in g.DefaultIfEmpty() where item != null && item.Any(s => s.Type != DocumentType.Overwrite) // when normal file exists then processing is needed @@ -138,9 +149,14 @@ select creator.CreateHostService( private static string ExportXRefMap(DocumentBuildParameters parameters, DocumentBuildContext context) { Logger.LogVerbose("Exporting xref map..."); + + context.CancellationToken.ThrowIfCancellationRequested(); + var xrefMap = new XRefMap { - References = (from xref in context.XRefSpecMap.Values.AsParallel().WithDegreeOfParallelism(parameters.MaxParallelism) + References = (from xref in context.XRefSpecMap.Values.AsParallel() + .WithDegreeOfParallelism(parameters.MaxParallelism) + .WithCancellation(context.CancellationToken) select new XRefSpec(xref) { Href = context.UpdateHref(xref.Href, RelativePath.WorkingFolder) diff --git a/src/Docfx.Build/SystemMetadataGenerator.cs b/src/Docfx.Build/SystemMetadataGenerator.cs index 792c19d4222..b02e44bd223 100644 --- a/src/Docfx.Build/SystemMetadataGenerator.cs +++ b/src/Docfx.Build/SystemMetadataGenerator.cs @@ -34,7 +34,7 @@ public SystemMetadata Generate(InternalManifestItem item) attrs.Key = ((RelativePath)key).RemoveWorkingFolder(); var file = (RelativePath)(item.FileWithoutExtension + item.Extension); - attrs.Rel = (RelativePath.Empty).MakeRelativeTo(file); + attrs.Rel = RelativePath.Empty.MakeRelativeTo(file); var fileWithoutWorkingFolder = file.RemoveWorkingFolder(); attrs.Path = fileWithoutWorkingFolder; diff --git a/src/Docfx.Build/TableOfContents/MarkdownTocReader.cs b/src/Docfx.Build/TableOfContents/MarkdownTocReader.cs index b44e42053dc..0f91c0b7acd 100644 --- a/src/Docfx.Build/TableOfContents/MarkdownTocReader.cs +++ b/src/Docfx.Build/TableOfContents/MarkdownTocReader.cs @@ -1,4 +1,7 @@ -using System.Text.RegularExpressions; +// 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.RegularExpressions; using Docfx.Common; using Docfx.DataContracts.Common; using Docfx.Plugins; diff --git a/src/Docfx.Build/TableOfContents/TocDocumentProcessor.cs b/src/Docfx.Build/TableOfContents/TocDocumentProcessor.cs index 85edc54ffdb..79172edce58 100644 --- a/src/Docfx.Build/TableOfContents/TocDocumentProcessor.cs +++ b/src/Docfx.Build/TableOfContents/TocDocumentProcessor.cs @@ -91,7 +91,7 @@ private void UpdateTocItemHref(TocItemViewModel toc, FileModel model, IDocumentB toc.OriginalTopicHref = null; includedFrom = toc.IncludedFrom ?? includedFrom; - if (toc.Items != null && toc.Items.Count > 0) + if (toc.Items is {Count: > 0}) { foreach (var item in toc.Items) { diff --git a/src/Docfx.Build/TableOfContents/TocHelper.cs b/src/Docfx.Build/TableOfContents/TocHelper.cs index 5ff08517a92..caadd3b1829 100644 --- a/src/Docfx.Build/TableOfContents/TocHelper.cs +++ b/src/Docfx.Build/TableOfContents/TocHelper.cs @@ -46,14 +46,7 @@ internal static List<FileModel> ResolveToc(ImmutableList<FileModel> models) public static TocItemViewModel LoadSingleToc(string file) { -#if NET7_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(file); -#else - if (string.IsNullOrEmpty(file)) - { - throw new ArgumentNullException(nameof(file)); - } -#endif if (!EnvironmentContext.FileAbstractLayer.Exists(file)) { diff --git a/src/Docfx.Build/TableOfContents/TocResolver.cs b/src/Docfx.Build/TableOfContents/TocResolver.cs index 74461c237db..6ea34f31a3b 100644 --- a/src/Docfx.Build/TableOfContents/TocResolver.cs +++ b/src/Docfx.Build/TableOfContents/TocResolver.cs @@ -122,12 +122,12 @@ private TocItemInfo ResolveItemCore(TocItemInfo wrapper, Stack<FileAndType> stac { case HrefType.AbsolutePath: case HrefType.RelativeFile: - if (item.Items != null && item.Items.Count > 0) + if (item.Items is {Count: > 0}) { item.Items = new List<TocItemViewModel>(from i in item.Items - select ResolveItem(new TocItemInfo(file, i), stack) into r - where r != null - select r.Content); + select ResolveItem(new TocItemInfo(file, i), stack) into r + where r != null + select r.Content); if (string.IsNullOrEmpty(item.TopicHref) && string.IsNullOrEmpty(item.TopicUid)) { var defaultItem = GetDefaultHomepageItem(item); @@ -347,7 +347,7 @@ private static string NormalizeHref(string href, RelativePath relativeToFile) private TocItemViewModel GetDefaultHomepageItem(TocItemViewModel toc) { - if (toc == null || toc.Items == null) + if (toc?.Items == null) { return null; } diff --git a/src/Docfx.Build/TableOfContents/TocRestructureUtility.cs b/src/Docfx.Build/TableOfContents/TocRestructureUtility.cs index c22f925242f..ead7255750e 100644 --- a/src/Docfx.Build/TableOfContents/TocRestructureUtility.cs +++ b/src/Docfx.Build/TableOfContents/TocRestructureUtility.cs @@ -28,7 +28,7 @@ private static void RestructureCore(TocItemViewModel item, List<TocItemViewModel } } - if (item.Items != null && item.Items.Count > 0) + if (item.Items is {Count: > 0}) { var parentItems = new List<TocItemViewModel>(item.Items); foreach (var i in item.Items) diff --git a/src/Docfx.Build/TemplateProcessors/Preprocessors/JintProcessorHelper.cs b/src/Docfx.Build/TemplateProcessors/Preprocessors/JintProcessorHelper.cs index 69db15b0e49..5ff49f798cb 100644 --- a/src/Docfx.Build/TemplateProcessors/Preprocessors/JintProcessorHelper.cs +++ b/src/Docfx.Build/TemplateProcessors/Preprocessors/JintProcessorHelper.cs @@ -23,7 +23,7 @@ public static JsValue ConvertObjectToJsValue(Jint.Engine engine, object raw) { // allow Jint to take ownership of the array var elements = new JsValue[list.Count]; - for (int i = 0; i < (uint) elements.Length; i++) + for (int i = 0; i < (uint)elements.Length; i++) { elements[i] = ConvertObjectToJsValue(engine, list[i]); } diff --git a/src/Docfx.Build/TemplateProcessors/Preprocessors/PreprocessorWithResourcePool.cs b/src/Docfx.Build/TemplateProcessors/Preprocessors/PreprocessorWithResourcePool.cs index 97e7a8665a2..b696c3fbfe8 100644 --- a/src/Docfx.Build/TemplateProcessors/Preprocessors/PreprocessorWithResourcePool.cs +++ b/src/Docfx.Build/TemplateProcessors/Preprocessors/PreprocessorWithResourcePool.cs @@ -67,13 +67,16 @@ public object TransformModel(object model) { return lease.Resource.TransformModel(model); } + catch (JavaScriptException ex) + { + throw BuildException(ex.GetJavaScriptErrorString()); + } catch (Exception ex) { - string message = ex is JavaScriptException jsException - ? jsException.GetJavaScriptErrorString() - : ex.Message; - - throw new InvalidPreprocessorException($"Error running Transform function inside template preprocessor: {message}"); + throw BuildException(ex.Message); } + + Exception BuildException(string message) => + new InvalidPreprocessorException($"Error running Transform function inside template preprocessor: {message}"); } } diff --git a/src/Docfx.Build/TemplateProcessors/Template.cs b/src/Docfx.Build/TemplateProcessors/Template.cs index eeb48b51fd3..83315ee2338 100644 --- a/src/Docfx.Build/TemplateProcessors/Template.cs +++ b/src/Docfx.Build/TemplateProcessors/Template.cs @@ -116,7 +116,7 @@ public string Transform(object model) /// <param name="template"></param> private IEnumerable<TemplateResourceInfo> ExtractDependentResources(string templateName) { - if (Renderer == null || Renderer.Dependencies == null) + if (Renderer?.Dependencies == null) { yield break; } diff --git a/src/Docfx.Build/TemplateProcessors/TemplateManager.cs b/src/Docfx.Build/TemplateProcessors/TemplateManager.cs index 760989cb1f8..0cb5d0836a2 100644 --- a/src/Docfx.Build/TemplateProcessors/TemplateManager.cs +++ b/src/Docfx.Build/TemplateProcessors/TemplateManager.cs @@ -78,21 +78,16 @@ private IEnumerable<string> GetTemplateDirectories(IEnumerable<string> names) public void ProcessTheme(string outputDirectory, bool overwrite) { - if (_themes != null && _themes.Count > 0) + if (_themes is {Count: > 0}) { TryExportResourceFiles(_themes, outputDirectory, overwrite); Logger.LogInfo($"Theme(s) {_themes.ToDelimitedString()} applied."); } } - private bool TryExportResourceFiles(IEnumerable<string> resourceNames, string outputDirectory, bool overwrite, string? regexFilter = null) + private bool TryExportResourceFiles(List<string> resourceNames, string outputDirectory, bool overwrite, string? regexFilter = null) { -#if NET7_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(outputDirectory); -#else - if (string.IsNullOrEmpty(outputDirectory)) - throw new ArgumentNullException(nameof(outputDirectory)); -#endif if (!resourceNames.Any()) return false; diff --git a/src/Docfx.Build/TemplateProcessors/TemplateModelTransformer.cs b/src/Docfx.Build/TemplateProcessors/TemplateModelTransformer.cs index 217e60765d1..57483f41930 100644 --- a/src/Docfx.Build/TemplateProcessors/TemplateModelTransformer.cs +++ b/src/Docfx.Build/TemplateProcessors/TemplateModelTransformer.cs @@ -38,7 +38,7 @@ public TemplateModelTransformer(DocumentBuildContext context, TemplateCollection /// <returns></returns> internal ManifestItem Transform(InternalManifestItem item) { - if (item == null || item.Content == null) + if (item?.Content == null) { throw new ArgumentNullException(nameof(item), "Content for item.Model should not be null!"); } @@ -59,7 +59,6 @@ internal ManifestItem Transform(InternalManifestItem item) Version = _context.VersionName, Group = _context.GroupInfo?.Name, }; - var outputDirectory = _settings.OutputFolder ?? Directory.GetCurrentDirectory(); // 1. process resource if (item.ResourceFile != null) @@ -92,7 +91,7 @@ internal ManifestItem Transform(InternalManifestItem item) var extension = template.Extension; string outputFile = item.FileWithoutExtension + extension; - object viewModel = null; + object viewModel; try { viewModel = template.TransformModel(model); @@ -260,7 +259,7 @@ private static string ExportModel(object model, string modelFileRelativePath, Ex var outputFolder = settings.OutputFolder ?? string.Empty; var modelPath = Path.GetFullPath(Path.Combine(outputFolder, settings.PathRewriter(modelFileRelativePath))); - JsonUtility.Serialize(modelPath, model, Formatting.Indented); + JsonUtility.Serialize(modelPath, model, indented: true); return StringExtension.ToDisplayPath(modelPath); } diff --git a/src/Docfx.Build/TemplateProcessors/TemplateProcessor.cs b/src/Docfx.Build/TemplateProcessors/TemplateProcessor.cs index 6e2f4680c11..b4e9c8f30a5 100644 --- a/src/Docfx.Build/TemplateProcessors/TemplateProcessor.cs +++ b/src/Docfx.Build/TemplateProcessors/TemplateProcessor.cs @@ -44,21 +44,15 @@ public TemplateProcessor(ResourceFileReader resourceProvider, DocumentBuildConte public TemplateBundle GetTemplateBundle(string documentType) { -#if NET7_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(documentType); -#else - if (string.IsNullOrEmpty(documentType)) throw new ArgumentNullException(nameof(documentType)); -#endif + return _templateCollection[documentType]; } public bool TryGetFileExtension(string documentType, out string fileExtension) { -#if NET7_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(documentType); -#else - if (string.IsNullOrEmpty(documentType)) throw new ArgumentNullException(nameof(documentType)); -#endif + fileExtension = string.Empty; if (_templateCollection.Count == 0) return false; var templateBundle = _templateCollection[documentType]; @@ -104,6 +98,8 @@ private void CopyTemplateResources(string outputDirectory, IEnumerable<TemplateB { foreach (var resourceInfo in templateBundles.SelectMany(s => s.Resources).Distinct()) { + _context.CancellationToken.ThrowIfCancellationRequested(); + var resourceKey = resourceInfo.ResourceKey; try @@ -194,7 +190,8 @@ private List<ManifestItem> ProcessCore(List<InternalManifestItem> items, ApplyTe manifest.Add(transformer.Transform(item)); } }, - _maxParallelism); + _maxParallelism, + _context.CancellationToken); return manifest.ToList(); } diff --git a/src/Docfx.Build/XRefMaps/XRefArchiveBuilder.cs b/src/Docfx.Build/XRefMaps/XRefArchiveBuilder.cs index 515cec49607..61d2f99d36e 100644 --- a/src/Docfx.Build/XRefMaps/XRefArchiveBuilder.cs +++ b/src/Docfx.Build/XRefMaps/XRefArchiveBuilder.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.Threading; using Docfx.Common; namespace Docfx.Build.Engine; @@ -10,7 +11,7 @@ public class XRefArchiveBuilder private readonly object _syncRoot = new(); private readonly XRefMapDownloader _downloader = new(); - public async Task<bool> DownloadAsync(Uri uri, string outputFile) + public async Task<bool> DownloadAsync(Uri uri, string outputFile, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(uri); @@ -24,7 +25,7 @@ public async Task<bool> DownloadAsync(Uri uri, string outputFile) try { using var xa = XRefArchive.Open(outputFile, XRefArchiveMode.Create); - await DownloadCoreAsync(uri, xa); + await DownloadCoreAsync(uri, xa, cancellationToken); } catch (Exception ex) { @@ -36,10 +37,10 @@ public async Task<bool> DownloadAsync(Uri uri, string outputFile) } } - private async Task<string> DownloadCoreAsync(Uri uri, XRefArchive xa) + private async Task<string> DownloadCoreAsync(Uri uri, XRefArchive xa, CancellationToken cancellationToken) { IXRefContainer container; - container = await _downloader.DownloadAsync(uri); + container = await _downloader.DownloadAsync(uri, cancellationToken); if (container is not XRefMap map) { // XRefArchive is not supported by `docfx download`. @@ -52,7 +53,7 @@ private async Task<string> DownloadCoreAsync(Uri uri, XRefArchive xa) // 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 != null && map.References.Count > 0) + if (map.References is {Count: > 0}) { map.References.Sort(XRefSpecUidComparer.Instance); map.Sorted = true; diff --git a/src/Docfx.Build/XRefMaps/XRefCollection.cs b/src/Docfx.Build/XRefMaps/XRefCollection.cs index dbcc34e0499..357a313bb99 100644 --- a/src/Docfx.Build/XRefMaps/XRefCollection.cs +++ b/src/Docfx.Build/XRefMaps/XRefCollection.cs @@ -20,10 +20,10 @@ public XRefCollection(IEnumerable<Uri> uris) public ImmutableList<Uri> Uris { get; set; } - public Task<IXRefContainerReader> GetReaderAsync(string baseFolder, IReadOnlyList<string> fallbackFolders = null) + public Task<IXRefContainerReader> GetReaderAsync(string baseFolder, IReadOnlyList<string> fallbackFolders = null, CancellationToken cancellationToken = default) { var creator = new ReaderCreator(Uris, MaxParallelism, baseFolder, fallbackFolders); - return creator.CreateAsync(); + return creator.CreateAsync(cancellationToken); } private sealed class ReaderCreator @@ -39,13 +39,18 @@ public ReaderCreator(ImmutableList<Uri> uris, int maxParallelism, string baseFol _downloader = new XRefMapDownloader(baseFolder, fallbackFolders, maxParallelism); } - public async Task<IXRefContainerReader> CreateAsync() + public async Task<IXRefContainerReader> CreateAsync(CancellationToken cancellationToken) { - AddToDownloadList(_uris); + AddToDownloadList(_uris, cancellationToken); var dict = new Dictionary<string, IXRefContainer>(); + while (_processing.Any()) { - Task<IXRefContainer> task = await Task.WhenAny(_processing.Keys); + Task<IXRefContainer> task = await Task.WhenAny(_processing.Keys) + .WaitAsync(cancellationToken); + + cancellationToken.ThrowIfCancellationRequested(); + Uri uri = _processing[task]; _processing.Remove(task); try @@ -58,7 +63,8 @@ from r in container.GetRedirections() where r != null select GetUri(uri, r.Href) into u where u != null - select u); + select u, + cancellationToken); } dict[uri.IsAbsoluteUri ? uri.AbsoluteUri : uri.OriginalString] = container; } @@ -97,7 +103,7 @@ private static Uri GetUri(Uri baseUri, string href) return new Uri(baseUri, uri); } - private void AddToDownloadList(IEnumerable<Uri> uris) + private void AddToDownloadList(IEnumerable<Uri> uris, CancellationToken cancellationToken) { foreach (var uri in uris) { @@ -105,13 +111,13 @@ private void AddToDownloadList(IEnumerable<Uri> uris) { if (_set.Add(uri.AbsoluteUri)) { - var task = _downloader.DownloadAsync(uri); + var task = _downloader.DownloadAsync(uri, cancellationToken); _processing[task] = uri; } } else if (_set.Add(uri.OriginalString)) { - var task = _downloader.DownloadAsync(uri); + var task = _downloader.DownloadAsync(uri, cancellationToken); _processing[task] = uri; } } diff --git a/src/Docfx.Build/XRefMaps/XRefMapDownloader.cs b/src/Docfx.Build/XRefMaps/XRefMapDownloader.cs index 567a7ecab4d..5a83901afd8 100644 --- a/src/Docfx.Build/XRefMaps/XRefMapDownloader.cs +++ b/src/Docfx.Build/XRefMaps/XRefMapDownloader.cs @@ -128,7 +128,7 @@ private static async ValueTask<IXRefContainer> ReadLocalFileAsync(string filePat switch (Path.GetExtension(Path.GetFileNameWithoutExtension(filePath)).ToLowerInvariant()) { case ".json": - return await SystemTextJsonUtility.DeserializeAsync<XRefMap>(stream, token); + return await JsonUtility.DeserializeAsync<XRefMap>(stream, token); case ".yml": default: { @@ -141,7 +141,7 @@ private static async ValueTask<IXRefContainer> ReadLocalFileAsync(string filePat case ".json": { using var stream = File.OpenRead(filePath); - return await SystemTextJsonUtility.DeserializeAsync<XRefMap>(stream, token); + return await JsonUtility.DeserializeAsync<XRefMap>(stream, token); } case ".yml": @@ -172,7 +172,7 @@ private static async Task<XRefMap> DownloadFromWebAsync(Uri uri, CancellationTok { case ".json": { - var xrefMap = await SystemTextJsonUtility.DeserializeAsync<XRefMap>(stream, token); + var xrefMap = await JsonUtility.DeserializeAsync<XRefMap>(stream, token); xrefMap.BaseUrl = ResolveBaseUrl(xrefMap, uri); return xrefMap; } diff --git a/src/Docfx.Common/CompositeDictionary.cs b/src/Docfx.Common/CompositeDictionary.cs index 9077f5fdfa2..5415854b216 100644 --- a/src/Docfx.Common/CompositeDictionary.cs +++ b/src/Docfx.Common/CompositeDictionary.cs @@ -13,7 +13,7 @@ public class CompositeDictionary public CompositeDictionary() { - _entries = ImmutableArray<Entry>.Empty; + _entries = []; } private CompositeDictionary(ImmutableArray<Entry> entries) diff --git a/src/Docfx.Common/Docfx.Common.csproj b/src/Docfx.Common/Docfx.Common.csproj index 3c6c3ad494b..0a8bbc436c0 100644 --- a/src/Docfx.Common/Docfx.Common.csproj +++ b/src/Docfx.Common/Docfx.Common.csproj @@ -10,13 +10,13 @@ </ItemGroup> <ItemGroup> - <InternalsVisibleTo Include="Docfx.Build.ManagedReference"/> - <InternalsVisibleTo Include="Docfx.Dotnet"/> + <InternalsVisibleTo Include="docfx.Build" /> + <InternalsVisibleTo Include="Docfx.Dotnet" /> </ItemGroup> <!-- TODO: Following settings will be removed after NewtonsoftJson dependencies are removed. --> <ItemGroup> - <InternalsVisibleTo Include="docfx.Build" /> <InternalsVisibleTo Include="Docfx.Build.Tests" /> + <InternalsVisibleTo Include="docfx.Tests" /> </ItemGroup> </Project> diff --git a/src/Docfx.Common/EntityMergers/IMergeContext.cs b/src/Docfx.Common/EntityMergers/IMergeContext.cs index a439d8a5e36..f9aeae802bf 100644 --- a/src/Docfx.Common/EntityMergers/IMergeContext.cs +++ b/src/Docfx.Common/EntityMergers/IMergeContext.cs @@ -1,4 +1,7 @@ -namespace Docfx.Common.EntityMergers; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Docfx.Common.EntityMergers; public interface IMergeContext { diff --git a/src/Docfx.Common/EntityMergers/IMergeHandler.cs b/src/Docfx.Common/EntityMergers/IMergeHandler.cs index 76b882ac08a..0bc280c4535 100644 --- a/src/Docfx.Common/EntityMergers/IMergeHandler.cs +++ b/src/Docfx.Common/EntityMergers/IMergeHandler.cs @@ -1,4 +1,7 @@ -namespace Docfx.Common.EntityMergers; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Docfx.Common.EntityMergers; public interface IMergeHandler { diff --git a/src/Docfx.Common/EntityMergers/MergeContext.cs b/src/Docfx.Common/EntityMergers/MergeContext.cs index 93960dbf705..514db422613 100644 --- a/src/Docfx.Common/EntityMergers/MergeContext.cs +++ b/src/Docfx.Common/EntityMergers/MergeContext.cs @@ -1,4 +1,7 @@ -namespace Docfx.Common.EntityMergers; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Docfx.Common.EntityMergers; internal sealed class MergeContext : IMergeContext { diff --git a/src/Docfx.Common/EntityMergers/MergePlacement.cs b/src/Docfx.Common/EntityMergers/MergePlacement.cs index 44c92c44ad7..c9af9c9a36e 100644 --- a/src/Docfx.Common/EntityMergers/MergePlacement.cs +++ b/src/Docfx.Common/EntityMergers/MergePlacement.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements.\r +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/Docfx.Common/EntityMergers/ReflectionEntityMerger.cs b/src/Docfx.Common/EntityMergers/ReflectionEntityMerger.cs index 505d307c55b..b18f6f463ec 100644 --- a/src/Docfx.Common/EntityMergers/ReflectionEntityMerger.cs +++ b/src/Docfx.Common/EntityMergers/ReflectionEntityMerger.cs @@ -92,10 +92,10 @@ public void Merge(ref object source, object overrides, IMergeContext context) placement = placementValue switch { - "after" => MergePlacement.After, - "before" => MergePlacement.Before, + "after" => MergePlacement.After, + "before" => MergePlacement.Before, "replace" => MergePlacement.Replace, - _ => MergePlacement.None + _ => MergePlacement.None }; } } @@ -117,8 +117,8 @@ public void Merge(ref object source, object overrides, IMergeContext context) s = placement switch { - MergePlacement.After => $"{s}{o}", - MergePlacement.Before => $"{o}{s}", + MergePlacement.After => $"{s}{o}", + MergePlacement.Before => $"{o}{s}", MergePlacement.Replace => o.ToString() }; @@ -142,9 +142,11 @@ public void Merge(ref object source, object overrides, IMergeContext context) { continue; } - if (o.GetType().IsValueType) + + var type = o.GetType(); + if (type.IsValueType) { - var defaultValue = Activator.CreateInstance(o.GetType()); + var defaultValue = Activator.CreateInstance(type); if (object.Equals(defaultValue, o)) { continue; @@ -173,7 +175,6 @@ public void Merge(ref object source, object overrides, IMergeContext context) case MergeOption.Replace: case MergeOption.ReplaceNullOrDefault: { - var s = prop.Prop.GetValue(source); var o = prop.Prop.GetValue(overrides); if (prop.Option == MergeOption.Replace) { @@ -181,9 +182,11 @@ public void Merge(ref object source, object overrides, IMergeContext context) { continue; } - if (o.GetType().IsValueType) + + var type = o.GetType(); + if (type.IsValueType) { - var defaultValue = Activator.CreateInstance(o.GetType()); + var defaultValue = Activator.CreateInstance(type); if (object.Equals(defaultValue, o)) { continue; diff --git a/src/Docfx.Common/FileAbstractLayer/RealFileReader.cs b/src/Docfx.Common/FileAbstractLayer/RealFileReader.cs index bd53379d61f..d9de5639a03 100644 --- a/src/Docfx.Common/FileAbstractLayer/RealFileReader.cs +++ b/src/Docfx.Common/FileAbstractLayer/RealFileReader.cs @@ -18,8 +18,8 @@ public RealFileReader(string inputFolder) throw new DirectoryNotFoundException($"Directory ({inputFolder}) not found."); } if (inputFolder.Length > 0 && - !inputFolder.EndsWith("\\", StringComparison.Ordinal) && - !inputFolder.EndsWith("/", StringComparison.Ordinal)) + !inputFolder.EndsWith('\\') && + !inputFolder.EndsWith('/')) { inputFolder += "/"; } diff --git a/src/Docfx.Common/FileItems.cs b/src/Docfx.Common/FileItems.cs index c0d470961f3..6258167b28d 100644 --- a/src/Docfx.Common/FileItems.cs +++ b/src/Docfx.Common/FileItems.cs @@ -3,10 +3,11 @@ namespace Docfx; +[System.Text.Json.Serialization.JsonConverter(typeof(FileItemsConverter))] public class FileItems : List<string> { private static readonly IEnumerable<string> Empty = new List<string>(); - public FileItems(string file) : base() + public FileItems(string file) { Add(file); } diff --git a/src/Docfx.Common/FileItemsConverter.cs b/src/Docfx.Common/FileItemsConverter.cs new file mode 100644 index 00000000000..9a92342feee --- /dev/null +++ b/src/Docfx.Common/FileItemsConverter.cs @@ -0,0 +1,38 @@ +// 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 System.Text.Json.Serialization; + +#nullable enable + +namespace Docfx; + +internal class FileItemsConverter : JsonConverter<FileItems> +{ + public override FileItems Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType == JsonTokenType.String) + { + return new FileItems(reader.GetString()); + } + + if (reader.TokenType == JsonTokenType.StartArray) + { + var items = JsonSerializer.Deserialize<string[]>(ref reader, options); + return new FileItems(items); + } + + throw new JsonException("Expected string or array of strings."); + } + + public override void Write(Utf8JsonWriter writer, FileItems value, JsonSerializerOptions options) + { + writer.WriteStartArray(); + foreach (var item in value) + { + writer.WriteStringValue(item); + } + writer.WriteEndArray(); + } +} diff --git a/src/Docfx.Common/FileMapping.cs b/src/Docfx.Common/FileMapping.cs index 3eb53094e04..451e2288289 100644 --- a/src/Docfx.Common/FileMapping.cs +++ b/src/Docfx.Common/FileMapping.cs @@ -24,7 +24,8 @@ namespace Docfx; /// If the Array form contains only one item, it can be shortened to an object /// e.g. <code>projects: ["file1", "file2"]</code> /// </summary> -[Newtonsoft.Json.JsonConverter(typeof(FileMappingConverter))] +[Newtonsoft.Json.JsonConverter(typeof(FileMappingConverter.NewtonsoftJsonConverter))] +[System.Text.Json.Serialization.JsonConverter(typeof(FileMappingConverter.SystemTextJsonConverter))] public class FileMapping { private readonly List<FileMappingItem> _items = new(); @@ -45,7 +46,8 @@ public IReadOnlyList<FileMappingItem> Items /// <summary> /// Initializes a new instance of the <see cref="FileMapping"/> class. /// </summary> - public FileMapping() : base() { } + public FileMapping() + { } /// <summary> /// Initializes a new instance of the <see cref="FileMapping"/> class. @@ -69,7 +71,7 @@ public FileMapping(FileMappingItem item) /// <param name="item"></param> public void Add(FileMappingItem item) { - if (item == null || item.Files == null || item.Files.Count == 0) return; + if (item?.Files == null || item.Files.Count == 0) return; _items.Add(item); } diff --git a/src/Docfx.Common/FileMappingConverter.cs b/src/Docfx.Common/FileMappingConverter.cs deleted file mode 100644 index 5884f0bc9f7..00000000000 --- a/src/Docfx.Common/FileMappingConverter.cs +++ /dev/null @@ -1,58 +0,0 @@ -// 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 class FileMappingConverter : JsonConverter -{ - public override bool CanConvert(Type objectType) - { - return objectType == typeof(FileMapping); - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - var model = new FileMapping(); - var value = reader.Value; - IEnumerable<JToken> jItems; - if (reader.TokenType == JsonToken.StartArray) - { - jItems = JArray.Load(reader); - } - else if (reader.TokenType == JsonToken.String) - { - jItems = JRaw.Load(reader); - } - else - { - jItems = JObject.Load(reader); - } - - if (jItems is JValue) - { - model.Add(FileModelParser.ParseItem(jItems.ToString())); - } - else if (jItems is JObject) - { - model.Add(FileModelParser.ParseItem((JToken)jItems)); - } - else - { - foreach (var item in jItems) - { - FileMappingItem itemModel = FileModelParser.ParseItem(item); - model.Add(itemModel); - } - } - - return model; - } - - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - serializer.Serialize(writer, ((FileMapping)value).Items); - } -} diff --git a/src/Docfx.Common/Git/GitUtility.cs b/src/Docfx.Common/Git/GitUtility.cs index 9bc3587500c..dd3368e15ef 100644 --- a/src/Docfx.Common/Git/GitUtility.cs +++ b/src/Docfx.Common/Git/GitUtility.cs @@ -11,7 +11,7 @@ namespace Docfx.Common.Git; public record GitSource(string Repo, string Branch, string Path, int Line); -public static class GitUtility +public static partial class GitUtility { record Repo(string path, string url, string branch); @@ -51,14 +51,14 @@ record Repo(string path, string url, string branch); public static string? RawContentUrlToContentUrl(string rawUrl) { // GitHub - var url = Regex.Replace( - rawUrl, - @"^https://raw\.githubusercontent\.com/([^/]+)/([^/]+)/([^/]+)/(.+)$", - string.IsNullOrEmpty(s_branch) ? "https://github.com/$1/$2/blob/$3/$4" : $"https://github.com/$1/$2/blob/{s_branch}/$4"); + var url = GitHubUserContentRegex().Replace(rawUrl, string.IsNullOrEmpty(s_branch) ? "https://github.com/$1/$2/blob/$3/$4" : $"https://github.com/$1/$2/blob/{s_branch}/$4"); return ResolveDocfxSourceRepoUrl(url); } + [GeneratedRegex(@"^https://raw\.githubusercontent\.com/([^/]+)/([^/]+)/([^/]+)/(.+)$")] + private static partial Regex GitHubUserContentRegex(); + public static string? GetSourceUrl(GitSource source) { var repo = source.Repo.StartsWith("git") ? GitUrlToHttps(source.Repo) : source.Repo; @@ -155,7 +155,6 @@ static string GitUrlToHttps(string url) } return null; - } static IEnumerable<(string key, string value)> ParseRemoteUrls(string gitRoot) @@ -171,7 +170,7 @@ static string GitUrlToHttps(string url) var line = text.Trim(); if (line.StartsWith("[")) { - var remote = Regex.Replace(line, @"\[remote\s+\""(.+)?\""\]", "$1"); + var remote = RemoteRegex().Replace(line, "$1"); key = remote != line ? remote : ""; } else if (line.StartsWith("url = ") && !string.IsNullOrEmpty(key)) @@ -182,6 +181,8 @@ static string GitUrlToHttps(string url) } } } + [GeneratedRegex(@"\[remote\s+\""(.+)?\""\]")] + private static partial Regex RemoteRegex(); /// <summary> /// Rewrite path if `DOCFX_SOURCE_REPOSITORY_URL` environment variable is specified. @@ -215,7 +216,7 @@ private static string ResolveDocfxSourceRepoUrl(string originalUrl) { // Replace `/{orgName}/{repoName}` and remove `.git` suffix. var builder = new UriBuilder(parsedOriginalUrl); - builder.Path = Regex.Replace(builder.Path.TrimEnd(".git"), "^/[^/]+/[^/]+", $"/{orgName}/{repoName}"); + builder.Path = OrgRepoRegex().Replace(builder.Path.TrimEnd(".git"), $"/{orgName}/{repoName}"); return builder.Uri.ToString(); } @@ -224,4 +225,7 @@ private static string ResolveDocfxSourceRepoUrl(string originalUrl) return originalUrl; } } + + [GeneratedRegex("^/[^/]+/[^/]+")] + private static partial Regex OrgRepoRegex(); } diff --git a/src/Docfx.Common/IItemWithMetadata.cs b/src/Docfx.Common/IItemWithMetadata.cs index 8968a3552a8..d9313405e41 100644 --- a/src/Docfx.Common/IItemWithMetadata.cs +++ b/src/Docfx.Common/IItemWithMetadata.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements.\r +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/Docfx.Common/Json/FileMappingConverter.NewtonsoftJson.cs b/src/Docfx.Common/Json/FileMappingConverter.NewtonsoftJson.cs new file mode 100644 index 00000000000..e232c1be8e0 --- /dev/null +++ b/src/Docfx.Common/Json/FileMappingConverter.NewtonsoftJson.cs @@ -0,0 +1,61 @@ +// 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 +{ + internal class NewtonsoftJsonConverter : JsonConverter + { + public override bool CanConvert(Type objectType) + { + return objectType == typeof(FileMapping); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var model = new FileMapping(); + var value = reader.Value; + IEnumerable<JToken> jItems; + if (reader.TokenType == JsonToken.StartArray) + { + jItems = JArray.Load(reader); + } + else if (reader.TokenType == JsonToken.String) + { + jItems = JRaw.Load(reader); + } + else + { + jItems = JObject.Load(reader); + } + + if (jItems is JValue) + { + model.Add(FileModelParser.ParseItem(jItems.ToString())); + } + else if (jItems is JObject) + { + model.Add(FileModelParser.ParseItem((JToken)jItems)); + } + else + { + foreach (var item in jItems) + { + FileMappingItem itemModel = FileModelParser.ParseItem(item); + model.Add(itemModel); + } + } + + return model; + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + serializer.Serialize(writer, ((FileMapping)value).Items); + } + } +} diff --git a/src/Docfx.Common/Json/FileMappingConverter.SystemTextJson.cs b/src/Docfx.Common/Json/FileMappingConverter.SystemTextJson.cs new file mode 100644 index 00000000000..286cded2d1e --- /dev/null +++ b/src/Docfx.Common/Json/FileMappingConverter.SystemTextJson.cs @@ -0,0 +1,63 @@ +// 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; + +#nullable enable + +namespace Docfx; + +internal partial class FileMappingConverter +{ + internal class SystemTextJsonConverter : JsonConverter<FileMapping> + { + public override FileMapping? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + switch (reader.TokenType) + { + // Compact Form + case JsonTokenType.String: + return new FileMapping(new FileMappingItem + { + Files = new FileItems(reader.GetString()), + }); + // Object form + case JsonTokenType.StartObject: + return new FileMapping(JsonSerializer.Deserialize<FileMappingItem>(ref reader, options)); + + // Array form + case JsonTokenType.StartArray: + var items = new List<FileMappingItem>(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + switch (reader.TokenType) + { + case JsonTokenType.String: + items.Add(new FileMappingItem + { + Files = new FileItems(reader.GetString()), + }); + break; + case JsonTokenType.StartObject: + items.Add(JsonSerializer.Deserialize<FileMappingItem>(ref reader, options)!); + break; + default: + throw new JsonException($"Unsupported token type({reader.TokenType})."); + } + } + return new FileMapping(items); + + default: + throw new JsonException($"Unsupported token type({reader.TokenType})."); + } + } + + public override void Write(Utf8JsonWriter writer, FileMapping value, JsonSerializerOptions options) + { + var items = value.Items; + JsonSerializer.Serialize(writer, items, options); + } + } +} diff --git a/src/Docfx.Common/Json/FileMappingConverter.cs b/src/Docfx.Common/Json/FileMappingConverter.cs new file mode 100644 index 00000000000..65a4cd2dbe8 --- /dev/null +++ b/src/Docfx.Common/Json/FileMappingConverter.cs @@ -0,0 +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 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 new file mode 100644 index 00000000000..b0c4d7ca1ac --- /dev/null +++ b/src/Docfx.Common/Json/JsonUtility.cs @@ -0,0 +1,111 @@ +// 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; + +public static class JsonUtility +{ + public static string Serialize<T>(T graph, bool indented = false) + { + if (IsSystemTextJsonSupported(graph)) + return SystemTextJsonUtility.Serialize(graph, indented); + else + return NewtonsoftJsonUtility.Serialize(graph, indented ? Formatting.Indented : Formatting.None); + } + + public static void Serialize<T>(string path, T graph, bool indented = false) + { + if (IsSystemTextJsonSupported(graph)) + SystemTextJsonUtility.SerializeToFile(path, graph, indented); + else + NewtonsoftJsonUtility.Serialize(path, graph, indented ? Formatting.Indented : Formatting.None); + } + + public static T Deserialize<T>(string path) + { + if (IsSystemTextJsonSupported<T>()) + return SystemTextJsonUtility.DeserializeFromFile<T>(path); + else + return NewtonsoftJsonUtility.Deserialize<T>(path); + } + + public static T Deserialize<T>(TextReader reader) + { + if (IsSystemTextJsonSupported<T>()) + return SystemTextJsonUtility.Deserialize<T>(reader.ReadToEnd()); + else + return NewtonsoftJsonUtility.Deserialize<T>(reader); + } + + internal static ValueTask<T> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken) + { + if (IsSystemTextJsonSupported<T>()) + return SystemTextJsonUtility.DeserializeAsync<T>(stream, cancellationToken); + else + throw new NotSupportedException(); + } + + public static string ToJsonString<T>(this T graph) + { + if (IsSystemTextJsonSupported<T>()) + return SystemTextJsonUtility.Serialize<T>(graph); + else + return NewtonsoftJsonUtility.ToJsonString(graph); + } + + public static T FromJsonString<T>(this string json) + { + if (IsSystemTextJsonSupported<T>()) + return SystemTextJsonUtility.Deserialize<T>(json); + else + return NewtonsoftJsonUtility.FromJsonString<T>(json); + } + + internal static bool IsSystemTextJsonSupported<T>() + { + return StaticTypeCache<T>.Supported; + } + + internal static bool IsSystemTextJsonSupported<T>(T obj) + { + if (typeof(T) == typeof(object) && obj.GetType().FullName.StartsWith("Newtonsoft.", StringComparison.Ordinal)) + return false; + + return StaticTypeCache<T>.Supported; + } + + private static class StaticTypeCache<T> + { + public static readonly bool Supported; + + static StaticTypeCache() + { + Supported = IsSupported(); + } + + private static bool IsSupported() + { + var fullName = typeof(T).FullName; + switch (fullName) + { + // Use Newtonsoft.Json for RestAPI models. + case "Docfx.DataContracts.RestApi.RestApiRootItemViewModel": + + // Some unit tests using Newtonsoft.Json types. + case "Newtonsoft.Json.Linq.JObject": + return false; + + default: + return true; + } + } + } +} diff --git a/src/Docfx.Common/ConvertToObjectHelper.cs b/src/Docfx.Common/Json/NewtonsoftJson/ConvertToObjectHelper.cs similarity index 98% rename from src/Docfx.Common/ConvertToObjectHelper.cs rename to src/Docfx.Common/Json/NewtonsoftJson/ConvertToObjectHelper.cs index b328db56cce..7e05c239676 100644 --- a/src/Docfx.Common/ConvertToObjectHelper.cs +++ b/src/Docfx.Common/Json/NewtonsoftJson/ConvertToObjectHelper.cs @@ -3,9 +3,8 @@ using System.Diagnostics.CodeAnalysis; using System.Dynamic; - -using Newtonsoft.Json.Linq; using System.Runtime.CompilerServices; +using Newtonsoft.Json.Linq; namespace Docfx.Common; @@ -72,7 +71,7 @@ public static object ConvertStrongTypeToJObject(object raw) return raw; } - return JToken.FromObject(raw, JsonUtility.DefaultSerializer.Value); + return JToken.FromObject(raw, NewtonsoftJsonUtility.DefaultSerializer.Value); } public static object ConvertExpandoObjectToObject(object raw) diff --git a/src/Docfx.Common/JObjectDictionaryToObjectDictionaryConverter.cs b/src/Docfx.Common/Json/NewtonsoftJson/JObjectDictionaryToObjectDictionaryConverter.cs similarity index 93% rename from src/Docfx.Common/JObjectDictionaryToObjectDictionaryConverter.cs rename to src/Docfx.Common/Json/NewtonsoftJson/JObjectDictionaryToObjectDictionaryConverter.cs index 635c90819b2..ba5df2acde6 100644 --- a/src/Docfx.Common/JObjectDictionaryToObjectDictionaryConverter.cs +++ b/src/Docfx.Common/Json/NewtonsoftJson/JObjectDictionaryToObjectDictionaryConverter.cs @@ -23,7 +23,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteStartObject(); - foreach (var item in ((Dictionary<string, object>)value)) + foreach (var item in (Dictionary<string, object>)value) { writer.WritePropertyName(item.Key); serializer.Serialize(writer, item.Value); diff --git a/src/Docfx.Common/JsonUtility.cs b/src/Docfx.Common/Json/NewtonsoftJson/NewtonsoftJsonUtility.cs similarity index 90% rename from src/Docfx.Common/JsonUtility.cs rename to src/Docfx.Common/Json/NewtonsoftJson/NewtonsoftJsonUtility.cs index 8a7873103f4..c75121a3e3c 100644 --- a/src/Docfx.Common/JsonUtility.cs +++ b/src/Docfx.Common/Json/NewtonsoftJson/NewtonsoftJsonUtility.cs @@ -8,7 +8,7 @@ namespace Docfx.Common; -public static class JsonUtility +internal static class NewtonsoftJsonUtility { public static readonly ThreadLocal<JsonSerializer> DefaultSerializer = new( () => new JsonSerializer @@ -55,14 +55,14 @@ public static T Deserialize<T>(TextReader reader, JsonSerializer serializer = nu return (serializer ?? DefaultSerializer.Value).Deserialize<T>(json); } - public static string ToJsonString(this object graph, Formatting formatting = Formatting.None, JsonSerializer serializer = null) + public static string ToJsonString(object graph, Formatting formatting = Formatting.None, JsonSerializer serializer = null) { var sw = new StringWriter(); Serialize(sw, graph, formatting, serializer); return sw.ToString(); } - public static T FromJsonString<T>(this string json, JsonSerializer serializer = null) + public static T FromJsonString<T>(string json, JsonSerializer serializer = null) { return Deserialize<T>(new StringReader(json), serializer); } diff --git a/src/Docfx.Common/Json/System.Text.Json/SystemTextJsonUtility.cs b/src/Docfx.Common/Json/System.Text.Json/SystemTextJsonUtility.cs index e952067a491..e16fa005d79 100644 --- a/src/Docfx.Common/Json/System.Text.Json/SystemTextJsonUtility.cs +++ b/src/Docfx.Common/Json/System.Text.Json/SystemTextJsonUtility.cs @@ -1,8 +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 System.IO; +using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Json.Serialization; +using Docfx.Plugins; #nullable enable @@ -29,14 +32,16 @@ static SystemTextJsonUtility() { // DefaultBufferSize = 1024 * 16, // TODO: Set appropriate buffer size based on benchmark.(Default: 16KB) AllowTrailingCommas = true, + ReadCommentHandling = JsonCommentHandling.Skip, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, + Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, // TODO: Replace with custom encoder that encode minimal chars (https://github.com/dotnet/runtime/issues/87153) PropertyNameCaseInsensitive = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, // This setting is not compatible to `Newtonsoft.Json` serialize result. NumberHandling = JsonNumberHandling.AllowReadingFromString, Converters = { - new JsonStringEnumConverter(), + new JsonStringEnumConverter(JsonNamingPolicy.CamelCase), new ObjectToInferredTypesConverter(), // Required for `Dictionary<string, object>` type deserialization. }, WriteIndented = false, @@ -49,7 +54,7 @@ static SystemTextJsonUtility() } /// <summary> - /// Converts the value of a type specified by a generic type parameter into a JSON string. + /// Serialize model to JSON string. /// </summary> public static string Serialize<T>(T model, bool indented = false) { @@ -61,7 +66,7 @@ public static string Serialize<T>(T model, bool indented = false) } /// <summary> - /// Converts the value of a type specified by a generic type parameter into a JSON string. + /// Serialize stream to JSON string. /// </summary> public static string Serialize<T>(Stream stream, bool indented = false) { @@ -73,8 +78,7 @@ public static string Serialize<T>(Stream stream, bool indented = false) } /// <summary> - /// Reads the UTF-8 encoded text representing a single JSON value into a TValue. - /// The Stream will be read to completion. + /// Deserialize model from JSON string. /// </summary> public static T? Deserialize<T>(string json) { @@ -82,8 +86,7 @@ public static string Serialize<T>(Stream stream, bool indented = false) } /// <summary> - /// Reads the UTF-8 encoded text representing a single JSON value into a TValue. - /// The Stream will be read to completion. + /// Deserialize model from stream. /// </summary> public static T? Deserialize<T>(Stream stream) { @@ -91,11 +94,31 @@ public static string Serialize<T>(Stream stream, bool indented = false) } /// <summary> - /// Asynchronously reads the UTF-8 encoded text representing a single JSON value - // into an instance of a type specified by a generic type parameter. The stream - // will be read to completion. + /// Deserialize model from stream. + /// </summary> public static async ValueTask<T?> DeserializeAsync<T>(Stream stream, CancellationToken token = default) { return await JsonSerializer.DeserializeAsync<T>(stream, DefaultSerializerOptions, cancellationToken: token); } + + /// <summary> + /// Serialize specified model to file. + /// </summary> + public static void SerializeToFile<T>(string path, T model, bool indented = false) + { + var options = indented + ? IndentedSerializerOptions + : DefaultSerializerOptions; + using var stream = EnvironmentContext.FileAbstractLayer.Create(path); + JsonSerializer.Serialize(stream, model, options); + } + + /// <summary> + /// Deserialize specified model from JSON file. + /// </summary> + public static T? DeserializeFromFile<T>(string path) + { + using var stream = EnvironmentContext.FileAbstractLayer.OpenRead(path); + return JsonSerializer.Deserialize<T>(stream, DefaultSerializerOptions); + } } diff --git a/src/Docfx.Common/LruList.cs b/src/Docfx.Common/LruList.cs index 97a217e38e4..7c73eca7334 100644 --- a/src/Docfx.Common/LruList.cs +++ b/src/Docfx.Common/LruList.cs @@ -1,4 +1,7 @@ -namespace Docfx.Common; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Docfx.Common; public class LruList<T> { diff --git a/src/Docfx.Common/Path/PathUtility.cs b/src/Docfx.Common/Path/PathUtility.cs index 0b7435f999b..08437417e0a 100644 --- a/src/Docfx.Common/Path/PathUtility.cs +++ b/src/Docfx.Common/Path/PathUtility.cs @@ -71,7 +71,7 @@ public static string MakeRelativePath(string basePath, string absolutePath) if (toUri.IsFile && !toUri.OriginalString.StartsWith("file://", StringComparison.InvariantCultureIgnoreCase)) { - return Path.GetRelativePath(basePath, absolutePath).BackSlashToForwardSlash(); + return Path.GetRelativePath(basePath, absolutePath).BackSlashToForwardSlash(); } Uri relativeUri = fromUri.MakeRelativeUri(toUri); diff --git a/src/Docfx.Common/Path/RelativePath.cs b/src/Docfx.Common/Path/RelativePath.cs index a804d5db46f..be23480f3a3 100644 --- a/src/Docfx.Common/Path/RelativePath.cs +++ b/src/Docfx.Common/Path/RelativePath.cs @@ -54,11 +54,10 @@ public static RelativePath FromUrl(string path) public static bool IsRelativePath(string path) { // TODO : to merge with the PathUtility one - return path != null && - path.Length > 0 && - path[0] != '/' && - path[0] != '\\' && - path.IndexOfAny(PathUtility.InvalidPathChars) == -1; + return path is {Length: > 0} && + path[0] != '/' && + path[0] != '\\' && + path.IndexOfAny(PathUtility.InvalidPathChars) == -1; } public static RelativePath Parse(string path) => TryParseCore(path, true); @@ -188,14 +187,7 @@ public string GetFileNameWithoutExtension() public RelativePath ChangeFileName(string fileName) { -#if NET7_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(fileName); -#else - if (string.IsNullOrEmpty(fileName)) - { - throw new ArgumentNullException(nameof(fileName)); - } -#endif if (fileName.Contains('\\') || fileName.Contains('/') || fileName == ".." || fileName == ".") { diff --git a/src/Docfx.Common/YamlMime.cs b/src/Docfx.Common/YamlMime.cs index 59a3c69bfbe..5a04ad6108a 100644 --- a/src/Docfx.Common/YamlMime.cs +++ b/src/Docfx.Common/YamlMime.cs @@ -19,7 +19,7 @@ public static class YamlMime ArgumentNullException.ThrowIfNull(reader); var line = reader.ReadLine(); - if (line == null || !line.StartsWith("#", StringComparison.Ordinal)) + if (line == null || !line.StartsWith('#')) { return null; } diff --git a/src/Docfx.DataContracts.Common/Docfx.DataContracts.Common.csproj b/src/Docfx.DataContracts.Common/Docfx.DataContracts.Common.csproj index fafa6a9259a..a89ab8e2e8f 100644 --- a/src/Docfx.DataContracts.Common/Docfx.DataContracts.Common.csproj +++ b/src/Docfx.DataContracts.Common/Docfx.DataContracts.Common.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\Docfx.Common\Docfx.Common.csproj" /> </ItemGroup> diff --git a/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageCollection.cs b/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageCollection.cs index 75f907339f8..47f55ee6d3d 100644 --- a/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageCollection.cs +++ b/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageCollection.cs @@ -1,4 +1,7 @@ -using System.Collections.Immutable; +// 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.Common; @@ -8,17 +11,20 @@ public class ExternalReferencePackageCollection : IDisposable { private readonly LruList<ReferenceViewModelCacheItem> _cache = LruList<ReferenceViewModelCacheItem>.Create(0x100); - public ExternalReferencePackageCollection(IEnumerable<string> packageFiles, int maxParallelism) + public ExternalReferencePackageCollection(IEnumerable<string> packageFiles, int maxParallelism, CancellationToken cancellationToken) { ArgumentNullException.ThrowIfNull(packageFiles); - Readers = (from file in packageFiles.AsParallel().WithDegreeOfParallelism(maxParallelism).AsOrdered() + Readers = (from file in packageFiles.AsParallel() + .WithDegreeOfParallelism(maxParallelism) + .WithCancellation(cancellationToken) + .AsOrdered() let reader = ExternalReferencePackageReader.CreateNoThrow(file) where reader != null select reader).ToImmutableList(); } - public ImmutableList<ExternalReferencePackageReader> Readers { get; private set; } + public ImmutableList<ExternalReferencePackageReader> Readers { get; } public bool TryGetReference(string uid, out ReferenceViewModel vm) { diff --git a/src/Docfx.DataContracts.Common/JTokenConverter.cs b/src/Docfx.DataContracts.Common/JTokenConverter.cs index d8d170127e8..64564775551 100644 --- a/src/Docfx.DataContracts.Common/JTokenConverter.cs +++ b/src/Docfx.DataContracts.Common/JTokenConverter.cs @@ -1,6 +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.Reflection; +using Docfx.Common; using Newtonsoft.Json.Linq; namespace Docfx.DataContracts.Common; @@ -18,6 +20,24 @@ public static T Convert<T>(object obj) { return jToken.ToObject<T>(); } + + // Custom code path for `System.Text.Json` deserialization. + // `ObjectToInferredTypesConverter` deserialize items as `List<object>`. + // So it need to convert `List<object>` to `List<TItem>`. + if (obj is List<object> list && IsListType<T>()) + { + var json = JsonUtility.Serialize(list); + var result = JsonUtility.Deserialize<T>(new StringReader(json)); + return result; + } + throw new InvalidCastException(); } + + private static bool IsListType<T>() + { + var type = typeof(T); + return type.GetTypeInfo().IsGenericType + && type.GetGenericTypeDefinition() == typeof(List<>); + } } diff --git a/src/Docfx.DataContracts.Common/ReferenceViewModel.cs b/src/Docfx.DataContracts.Common/ReferenceViewModel.cs index 71e1f36b81a..7810640f850 100644 --- a/src/Docfx.DataContracts.Common/ReferenceViewModel.cs +++ b/src/Docfx.DataContracts.Common/ReferenceViewModel.cs @@ -86,10 +86,14 @@ public class ReferenceViewModel [YamlIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [UniqueIdentityReferenceIgnore] [MarkdownContentIgnore] - public CompositeDictionary AdditionalJson => - CompositeDictionary + public CompositeDictionary AdditionalJson + { + get + { + return CompositeDictionary .CreateBuilder() .Add(Constants.ExtensionMemberPrefix.Name, NameInDevLangs, JTokenConverter.Convert<string>) .Add(Constants.ExtensionMemberPrefix.NameWithType, NameWithTypeInDevLangs, JTokenConverter.Convert<string>) @@ -97,6 +101,12 @@ public class ReferenceViewModel .Add(Constants.ExtensionMemberPrefix.Spec, Specs, JTokenConverter.Convert<List<SpecViewModel>>) .Add(string.Empty, Additional) .Create(); + } + private init + { + // init or getter is required for deserialize data with System.Text.Json. + } + } public ReferenceViewModel Clone() { diff --git a/src/Docfx.DataContracts.Common/TocItemViewModel.cs b/src/Docfx.DataContracts.Common/TocItemViewModel.cs index 7c4710bb920..81937c34265 100644 --- a/src/Docfx.DataContracts.Common/TocItemViewModel.cs +++ b/src/Docfx.DataContracts.Common/TocItemViewModel.cs @@ -115,13 +115,25 @@ public class TocItemViewModel [ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] + [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] public Dictionary<string, object> Metadata { get; set; } = new(); [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public CompositeDictionary MetadataJson => CompositeDictionary.CreateBuilder().Add(string.Empty, Metadata).Create(); + [System.Text.Json.Serialization.JsonInclude] + public CompositeDictionary MetadataJson + { + get + { + return CompositeDictionary.CreateBuilder().Add(string.Empty, Metadata).Create(); + } + private init + { + // init or getter is required for deserialize data with System.Text.Json. + } + } public TocItemViewModel Clone() { diff --git a/src/Docfx.DataContracts.RestApi/Docfx.DataContracts.RestApi.csproj b/src/Docfx.DataContracts.RestApi/Docfx.DataContracts.RestApi.csproj index 6c17eaf9cd0..d814b16b816 100644 --- a/src/Docfx.DataContracts.RestApi/Docfx.DataContracts.RestApi.csproj +++ b/src/Docfx.DataContracts.RestApi/Docfx.DataContracts.RestApi.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\Docfx.DataContracts.Common\Docfx.DataContracts.Common.csproj" /> <ProjectReference Include="..\Docfx.Common\Docfx.Common.csproj" /> diff --git a/src/Docfx.DataContracts.UniversalReference/Docfx.DataContracts.UniversalReference.csproj b/src/Docfx.DataContracts.UniversalReference/Docfx.DataContracts.UniversalReference.csproj index 9a8454b8e26..2a9d93fe773 100644 --- a/src/Docfx.DataContracts.UniversalReference/Docfx.DataContracts.UniversalReference.csproj +++ b/src/Docfx.DataContracts.UniversalReference/Docfx.DataContracts.UniversalReference.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\Docfx.Common\Docfx.Common.csproj" /> <ProjectReference Include="..\Docfx.YamlSerialization\Docfx.YamlSerialization.csproj" /> diff --git a/src/Docfx.DataContracts.UniversalReference/ItemViewModel.cs b/src/Docfx.DataContracts.UniversalReference/ItemViewModel.cs index f4eb502560b..7e81cbf246f 100644 --- a/src/Docfx.DataContracts.UniversalReference/ItemViewModel.cs +++ b/src/Docfx.DataContracts.UniversalReference/ItemViewModel.cs @@ -357,16 +357,21 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] + [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] public Dictionary<string, object> Metadata { get; set; } = new(); [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [UniqueIdentityReferenceIgnore] [MarkdownContentIgnore] - public CompositeDictionary ExtensionData => - CompositeDictionary + public CompositeDictionary ExtensionData + { + get + { + return CompositeDictionary .CreateBuilder() .Add(Constants.ExtensionMemberPrefix.Parent, ParentInDevLangs, JTokenConverter.Convert<string>) .Add("package" + Constants.PrefixSeparator, PackageInDevLangs, JTokenConverter.Convert<string>) @@ -387,6 +392,12 @@ public class ItemViewModel : IOverwriteDocumentViewModel .Add(Constants.ExtensionMemberPrefix.FullName, FullNames, JTokenConverter.Convert<string>) .Add(string.Empty, Metadata) .Create(); + } + private init + { + // init or getter is required for deserialize data with System.Text.Json. + } + } private IEnumerable<string> GetInheritanceUidReference(List<InheritanceTree> items) { diff --git a/src/Docfx.DataContracts.UniversalReference/SyntaxDetailViewModel.cs b/src/Docfx.DataContracts.UniversalReference/SyntaxDetailViewModel.cs index 7ab5e2fa0aa..34c11f2770b 100644 --- a/src/Docfx.DataContracts.UniversalReference/SyntaxDetailViewModel.cs +++ b/src/Docfx.DataContracts.UniversalReference/SyntaxDetailViewModel.cs @@ -22,7 +22,7 @@ public class SyntaxDetailViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Content)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList<string, string> Contents { get; set; } = new SortedList<string, string>(); + public SortedList<string, string> Contents { get; set; } = []; [YamlMember(Alias = "parameters")] [JsonProperty("parameters")] @@ -52,19 +52,30 @@ public class SyntaxDetailViewModel [ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] + [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] public Dictionary<string, object> Metadata { get; set; } = new(); [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [UniqueIdentityReferenceIgnore] [MarkdownContentIgnore] - public CompositeDictionary ExtensionData => - CompositeDictionary + public CompositeDictionary ExtensionData + { + get + { + return CompositeDictionary .CreateBuilder() .Add(Constants.ExtensionMemberPrefix.Content, Contents, JTokenConverter.Convert<string>) .Add(Constants.ExtensionMemberPrefix.Return, ReturnInDevLangs, JTokenConverter.Convert<ApiParameter>) .Add(string.Empty, Metadata) .Create(); + } + private init + { + // init or getter is required for deserialize data with System.Text.Json. + } + } } diff --git a/src/Docfx.Dotnet/CompilationHelper.cs b/src/Docfx.Dotnet/CompilationHelper.cs index 47da38b3fcb..a8af3d50dd3 100644 --- a/src/Docfx.Dotnet/CompilationHelper.cs +++ b/src/Docfx.Dotnet/CompilationHelper.cs @@ -62,7 +62,7 @@ public static Compilation CreateCompilationFromCSharpFiles(IEnumerable<string> f return CS.CSharpCompilation.Create( assemblyName: null, - options: new CS.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, xmlReferenceResolver: XmlFileResolver.Default), + options: GetCSharpCompilationOptions(msbuildProperties), syntaxTrees: syntaxTrees, references: GetDefaultMetadataReferences("C#").Concat(references)); } @@ -74,7 +74,7 @@ public static Compilation CreateCompilationFromCSharpCode(string code, IDictiona return CS.CSharpCompilation.Create( name, - options: new CS.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, xmlReferenceResolver: XmlFileResolver.Default), + options: GetCSharpCompilationOptions(msbuildProperties), syntaxTrees: [syntaxTree], references: GetDefaultMetadataReferences("C#").Concat(references ?? [])); } @@ -86,7 +86,7 @@ public static Compilation CreateCompilationFromVBFiles(IEnumerable<string> files return VB.VisualBasicCompilation.Create( assemblyName: null, - options: new VB.VisualBasicCompilationOptions(OutputKind.DynamicallyLinkedLibrary, globalImports: GetVBGlobalImports(), xmlReferenceResolver: XmlFileResolver.Default), + options: GetVisualBasicCompilationOptions(msbuildProperties), syntaxTrees: syntaxTrees, references: GetDefaultMetadataReferences("VB").Concat(references)); } @@ -98,7 +98,7 @@ public static Compilation CreateCompilationFromVBCode(string code, IDictionary<s return VB.VisualBasicCompilation.Create( name, - options: new VB.VisualBasicCompilationOptions(OutputKind.DynamicallyLinkedLibrary, globalImports: GetVBGlobalImports(), xmlReferenceResolver: XmlFileResolver.Default), + options: GetVisualBasicCompilationOptions(msbuildProperties), syntaxTrees: [syntaxTree], references: GetDefaultMetadataReferences("VB").Concat(references ?? [])); } @@ -109,8 +109,8 @@ public static (Compilation, IAssemblySymbol) CreateCompilationFromAssembly(strin var compilation = CS.CSharpCompilation.Create( assemblyName: null, options: new CS.CSharpCompilationOptions( - outputKind : OutputKind.DynamicallyLinkedLibrary, - metadataImportOptions : includePrivateMembers + outputKind: OutputKind.DynamicallyLinkedLibrary, + metadataImportOptions: includePrivateMembers ? MetadataImportOptions.All : MetadataImportOptions.Public ), @@ -179,7 +179,12 @@ void GetReferenceAssembliesCore(PEFile assembly) var file = assemblyResolver.FindAssemblyFile(reference); if (file is null) { - Logger.LogWarning($"Unable to resolve assembly reference {reference}", code: "InvalidAssemblyReference"); + // 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; } @@ -204,7 +209,7 @@ private static MetadataReference CreateMetadataReference(string assemblyPath) private static CS.CSharpParseOptions GetCSharpParseOptions(IDictionary<string, string> msbuildProperties) { - var preprocessorSymbols = (msbuildProperties.TryGetValue("DefineConstants", out var defineConstants)) + var preprocessorSymbols = msbuildProperties.TryGetValue("DefineConstants", out var defineConstants) ? defineConstants.Split(';', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries) : null; @@ -213,8 +218,8 @@ private static CS.CSharpParseOptions GetCSharpParseOptions(IDictionary<string, s private static VB.VisualBasicParseOptions GetVisualBasicParseOptions(IDictionary<string, string> msbuildProperties) { - IEnumerable<KeyValuePair<string, object>>? preprocessorSymbols = null; - if ((msbuildProperties.TryGetValue("DefineConstants", out var defineConstants))) + IEnumerable<KeyValuePair<string, object>>? preprocessorSymbols; + if (msbuildProperties.TryGetValue("DefineConstants", out var defineConstants)) { // Visual Basic use symbol/value pairs that are separated by semicolons. And are `key = value` pair syntax: // https://learn.microsoft.com/en-us/visualstudio/msbuild/vbc-task?view=vs-2022 @@ -231,4 +236,26 @@ private static VB.VisualBasicParseOptions GetVisualBasicParseOptions(IDictionary return new VB.VisualBasicParseOptions(preprocessorSymbols: preprocessorSymbols); } + + private static CS.CSharpCompilationOptions GetCSharpCompilationOptions(IDictionary<string, string> msbuildProperties) + { + var options = new CS.CSharpCompilationOptions( + OutputKind.DynamicallyLinkedLibrary, + xmlReferenceResolver: XmlFileResolver.Default); + + if (msbuildProperties.TryGetValue("AllowUnsafeBlocks", out var valueText) && bool.TryParse(valueText, out var allowUnsafe)) + { + options = options.WithAllowUnsafe(allowUnsafe); + } + + return options; + } + + private static VB.VisualBasicCompilationOptions GetVisualBasicCompilationOptions(IDictionary<string, string> msbuildProperties) + { + return new VB.VisualBasicCompilationOptions( + OutputKind.DynamicallyLinkedLibrary, + globalImports: GetVBGlobalImports(), + xmlReferenceResolver: XmlFileResolver.Default); + } } diff --git a/src/Docfx.Dotnet/Docfx.Dotnet.csproj b/src/Docfx.Dotnet/Docfx.Dotnet.csproj index 2864dce696b..9dbc6ec171a 100644 --- a/src/Docfx.Dotnet/Docfx.Dotnet.csproj +++ b/src/Docfx.Dotnet/Docfx.Dotnet.csproj @@ -28,18 +28,13 @@ <ProjectReference Include="..\Docfx.Plugins\Docfx.Plugins.csproj" /> </ItemGroup> - <ItemGroup Condition="'$(TargetFramework)' == 'net6.0'"> - <PackageReference Include="Microsoft.Build" ExcludeAssets="runtime" /> - <PackageReference Include="Microsoft.Build.Locator" /> - </ItemGroup> - <ItemGroup> <PackageReference Include="System.Formats.Asn1" /> <PackageReference Include="HtmlAgilityPack" /> <PackageReference Include="ICSharpCode.Decompiler" /> <PackageReference Include="IgnoresAccessChecksToGenerator" PrivateAssets="All" /> <PackageReference Include="OneOf" /> - <PackageReference Include="OneOf.SourceGenerator" /> + <PackageReference Include="OneOf.SourceGenerator" PrivateAssets="All" /> <PackageReference Include="Markdig" /> <PackageReference Include="Microsoft.CodeAnalysis" /> <PackageReference Include="Microsoft.CodeAnalysis.Common" /> diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs b/src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs index 7842c8b625f..7540da20dc2 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs @@ -126,7 +126,7 @@ void Api(int level, string title, ISymbol symbol, Compilation compilation) var id = Regex.Replace(uid, @"\W", "_"); var commentId = VisitorHelper.GetCommentId(symbol); var source = config.DisableGitFeatures ? null : VisitorHelper.GetSourceDetail(symbol, compilation); - var git = source is null || source.Remote is null ? null + var git = source?.Remote is null ? null : new GitSource(source.Remote.Repo, source.Remote.Branch, source.Remote.Path, source.StartLine + 1); var src = git is null ? null : options.SourceUrl?.Invoke(git) ?? GitUtility.GetSourceUrl(git); var deprecated = Deprecated(symbol); @@ -707,14 +707,14 @@ Inline Cref(string commentId) Inline ShortLink(ISymbol symbol, Compilation compilation) { var title = SymbolFormatter.GetNameWithType(symbol, SyntaxLanguage.CSharp); - var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies); + var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies, filter); return Link(title, url); } Inline FullLink(ISymbol symbol, Compilation compilation) { var parts = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.CSharp); - var linkItems = SymbolFormatter.ToLinkItems(parts, compilation, config.MemberLayout, allAssemblies, overload: false, symbolUrlKind); + var linkItems = SymbolFormatter.ToLinkItems(parts, compilation, config.MemberLayout, allAssemblies, overload: false, filter, symbolUrlKind); return linkItems.Select(i => Link(i.DisplayName, i.Href)).ToArray(); } @@ -722,7 +722,7 @@ Inline FullLink(ISymbol symbol, Compilation compilation) Inline NameOnlyLink(ISymbol symbol, Compilation compilation) { var title = SymbolFormatter.GetName(symbol, SyntaxLanguage.CSharp); - var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies); + var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies, filter); return Link(title, url); } diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.Compile.cs b/src/Docfx.Dotnet/DotnetApiCatalog.Compile.cs index baabab65bd3..480849fcfcb 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.Compile.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.Compile.cs @@ -142,7 +142,8 @@ await LoadCompilationFromProject(project.AbsolutePath) is { } compilation) Logger.LogInfo($"Loading project {path}"); if (!config.NoRestore) { - await Process.Start("dotnet", $"restore \"{path}\"").WaitForExitAsync(); + using var process = Process.Start("dotnet", $"restore \"{path}\""); + await process.WaitForExitAsync(); } project = await workspace.OpenProjectAsync(path, msbuildLogger); diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.ManagedReference.cs b/src/Docfx.Dotnet/DotnetApiCatalog.ManagedReference.cs index 3a8e0fd6b2f..3612add070e 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.ManagedReference.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.ManagedReference.cs @@ -84,7 +84,7 @@ void ResolveAndExportYamlMetadata( } // generate manifest file - JsonUtility.Serialize(Path.Combine(config.OutputFolder, ".manifest"), indexer, Newtonsoft.Json.Formatting.Indented); + JsonUtility.Serialize(Path.Combine(config.OutputFolder, ".manifest"), indexer, indented: true); } } @@ -185,13 +185,13 @@ private static void MergeReferences(Dictionary<string, ReferenceItem> result, Li { foreach (var pair in project.References) { - if (!result.ContainsKey(pair.Key)) + if (result.TryGetValue(pair.Key, out var value)) { - result[pair.Key] = pair.Value; + value.Merge(pair.Value); } else { - result[pair.Key].Merge(pair.Value); + result[pair.Key] = pair.Value; } } } diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.Toc.cs b/src/Docfx.Dotnet/DotnetApiCatalog.Toc.cs index e6bb7fb6a29..788da38ef94 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.Toc.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.Toc.cs @@ -61,7 +61,7 @@ IEnumerable<TocNode> CreateToc(ISymbol symbol, Compilation compilation) switch (symbol) { - case INamespaceSymbol ns when ns.IsGlobalNamespace: + case INamespaceSymbol {IsGlobalNamespace: true} ns: foreach (var child in ns.GetNamespaceMembers()) foreach (var item in CreateToc(child, compilation)) yield return item; @@ -248,7 +248,7 @@ void InsertCategory(TocNodeType type, string name) case CategoryLayout.Nested: { // Skip when parent node is category node. - if (parentTocNode != null && parentTocNode.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. @@ -263,7 +263,7 @@ void InsertCategory(TocNodeType type, string name) // Insert category as text label. case CategoryLayout.Flattened: - default: + default: { if (items.FirstOrDefault(i => i.type == type) is { } node) items.Insert(items.IndexOf(node), new() { name = name }); diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.cs b/src/Docfx.Dotnet/DotnetApiCatalog.cs index 948cb23cf8c..1a1ffe66aae 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.cs @@ -38,11 +38,11 @@ public static async Task GenerateManagedReferenceYamlFiles(string configPath, Do try { var configDirectory = Path.GetDirectoryName(Path.GetFullPath(configPath)); - var config = JObject.Parse(File.ReadAllText(configPath)); + var config = JObject.Parse(await File.ReadAllTextAsync(configPath)); if (config.TryGetValue("metadata", out var value)) { Logger.Rules = config["rules"]?.ToObject<Dictionary<string, LogLevel>>(); - await Exec(value.ToObject<MetadataJsonConfig>(JsonUtility.DefaultSerializer.Value), options, configDirectory); + await Exec(value.ToObject<MetadataJsonConfig>(NewtonsoftJsonUtility.DefaultSerializer.Value), options, configDirectory); } } finally @@ -57,8 +57,6 @@ internal static async Task Exec(MetadataJsonConfig config, DotnetApiOptions opti { var stopwatch = Stopwatch.StartNew(); - EnsureMSBuildLocator(); - try { string originalGlobalNamespaceId = VisitorHelper.GlobalNamespaceId; @@ -116,26 +114,6 @@ void WriteYaml(string outputFolder, string id, Build.ApiPage.ApiPage apiPage) } } - private static void EnsureMSBuildLocator() - { -#if NET6_0 - try - { - if (!Microsoft.Build.Locator.MSBuildLocator.IsRegistered) - { - var vs = Microsoft.Build.Locator.MSBuildLocator.RegisterDefaults() ?? throw new Docfx.Exceptions.ExtractMetadataException( - $"Cannot find a supported .NET Core SDK. Install .NET Core SDK {Environment.Version.Major}.{Environment.Version.Minor}.x to build .NET API docs."); - - Logger.LogInfo($"Using {vs.Name} {vs.Version}"); - } - } - catch (Exception e) - { - throw new Docfx.Exceptions.ExtractMetadataException(e.Message, e); - } -#endif - } - private static ExtractMetadataConfig ConvertConfig(MetadataJsonItemConfig configModel, string configDirectory, string outputDirectory) { var projects = configModel.Src; diff --git a/src/Docfx.Dotnet/Filters/ConfigFilterRule.cs b/src/Docfx.Dotnet/Filters/ConfigFilterRule.cs index 83d70d0292f..e07f033e7ef 100644 --- a/src/Docfx.Dotnet/Filters/ConfigFilterRule.cs +++ b/src/Docfx.Dotnet/Filters/ConfigFilterRule.cs @@ -46,7 +46,7 @@ public static ConfigFilterRule Load(string configFile) } if (!File.Exists(configFile)) throw new FileNotFoundException($"Filter Config file {configFile} does not exist!"); - ConfigFilterRule rule = null; + ConfigFilterRule rule; try { rule = YamlUtility.Deserialize<ConfigFilterRule>(configFile); diff --git a/src/Docfx.Dotnet/Filters/ConfigFilterRuleItemUnion.cs b/src/Docfx.Dotnet/Filters/ConfigFilterRuleItemUnion.cs index 2ee947681c1..acb2cc10a92 100644 --- a/src/Docfx.Dotnet/Filters/ConfigFilterRuleItemUnion.cs +++ b/src/Docfx.Dotnet/Filters/ConfigFilterRuleItemUnion.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.Text.Json.Serialization; using YamlDotNet.Serialization; namespace Docfx.Dotnet; @@ -44,6 +45,7 @@ public ConfigFilterRuleExcludeItem Exclude } } + [YamlIgnore] public ConfigFilterRuleItem Rule { get diff --git a/src/Docfx.Dotnet/ManagedReference/Models/AdditionalNotes.cs b/src/Docfx.Dotnet/ManagedReference/Models/AdditionalNotes.cs index ba1067dd0b7..df79f85cb75 100644 --- a/src/Docfx.Dotnet/ManagedReference/Models/AdditionalNotes.cs +++ b/src/Docfx.Dotnet/ManagedReference/Models/AdditionalNotes.cs @@ -10,13 +10,13 @@ namespace Docfx.DataContracts.ManagedReference; public class AdditionalNotes -{ +{ [YamlMember(Alias = "caller")] [JsonProperty("caller")] [JsonPropertyName("caller")] [MarkdownContent] public string Caller { get; set; } - + [YamlMember(Alias = "implementer")] [JsonProperty("implementer")] [JsonPropertyName("implementer")] diff --git a/src/Docfx.Dotnet/ManagedReference/Models/ItemViewModel.cs b/src/Docfx.Dotnet/ManagedReference/Models/ItemViewModel.cs index 80252839716..406d47e1aaa 100644 --- a/src/Docfx.Dotnet/ManagedReference/Models/ItemViewModel.cs +++ b/src/Docfx.Dotnet/ManagedReference/Models/ItemViewModel.cs @@ -372,20 +372,31 @@ public string FullNameForVB [ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] + [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] public Dictionary<string, object> Metadata { get; set; } = new(); [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [UniqueIdentityReferenceIgnore] [MarkdownContentIgnore] - public IDictionary<string, object> ExtensionData => - CompositeDictionary + public IDictionary<string, object> ExtensionData + { + get + { + return CompositeDictionary .CreateBuilder() .Add(Constants.ExtensionMemberPrefix.Name, Names, JTokenConverter.Convert<string>) .Add(Constants.ExtensionMemberPrefix.NameWithType, NamesWithType, JTokenConverter.Convert<string>) .Add(Constants.ExtensionMemberPrefix.FullName, FullNames, JTokenConverter.Convert<string>) .Add(string.Empty, Metadata) .Create(); + } + private init + { + // init or getter is required for deserialize data with System.Text.Json. + } + } } diff --git a/src/Docfx.Dotnet/ManagedReference/Models/SyntaxDetailViewModel.cs b/src/Docfx.Dotnet/ManagedReference/Models/SyntaxDetailViewModel.cs index 330470f034b..8aa49b39a22 100644 --- a/src/Docfx.Dotnet/ManagedReference/Models/SyntaxDetailViewModel.cs +++ b/src/Docfx.Dotnet/ManagedReference/Models/SyntaxDetailViewModel.cs @@ -89,11 +89,21 @@ public string ContentForVB [YamlIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [UniqueIdentityReferenceIgnore] [MarkdownContentIgnore] - public IDictionary<string, object> ExtensionData => - CompositeDictionary + public IDictionary<string, object> ExtensionData + { + get + { + return CompositeDictionary .CreateBuilder() .Add(Constants.ExtensionMemberPrefix.Content, Contents, JTokenConverter.Convert<string>) .Create(); + } + private init + { + // init or getter is required for deserialize data with System.Text.Json. + } + } } diff --git a/src/Docfx.Dotnet/ManagedReference/Resolvers/NormalizeSyntax.cs b/src/Docfx.Dotnet/ManagedReference/Resolvers/NormalizeSyntax.cs index 1fe8e00c895..61794226839 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 != null && member.Syntax.Content != 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 2d61267a482..1b59b26ee8c 100644 --- a/src/Docfx.Dotnet/ManagedReference/Resolvers/ResolveReference.cs +++ b/src/Docfx.Dotnet/ManagedReference/Resolvers/ResolveReference.cs @@ -27,7 +27,7 @@ public void Run(MetadataModel yaml, ResolverContext context) page = parent; current.References = null; } - if (documentReferences != null && documentReferences.Count > 0) + if (documentReferences is {Count: > 0}) { foreach (var key in documentReferences.Keys) { @@ -56,7 +56,7 @@ private static void TryAddReference(ResolverContext context, MetadataItem page, { if (context.References.TryGetValue(key, out ReferenceItem item)) { - var reference = context.References[key].Clone(); + var reference = item.Clone(); page.References.Add(key, reference); addingReferences.Add(reference); } diff --git a/src/Docfx.Dotnet/ManagedReference/Resolvers/SetDerivedClass.cs b/src/Docfx.Dotnet/ManagedReference/Resolvers/SetDerivedClass.cs index 8a9401b2a32..c812f1a6e0d 100644 --- a/src/Docfx.Dotnet/ManagedReference/Resolvers/SetDerivedClass.cs +++ b/src/Docfx.Dotnet/ManagedReference/Resolvers/SetDerivedClass.cs @@ -11,7 +11,7 @@ internal class SetDerivedClass : IResolverPipeline public void Run(MetadataModel yaml, ResolverContext context) { - if (yaml.Members != null && yaml.Members.Count > 0) + if (yaml.Members is {Count: > 0}) { UpdateDerivedClassMapping(yaml.Members, context.References); AppendDerivedClass(yaml.Members); @@ -23,7 +23,7 @@ private void UpdateDerivedClassMapping(List<MetadataItem> items, Dictionary<stri foreach (var item in items ?? Enumerable.Empty<MetadataItem>()) { var inheritance = item.Inheritance; - if (inheritance != null && inheritance.Count > 0) + if (inheritance is {Count: > 0}) { var superClass = inheritance[inheritance.Count - 1]; diff --git a/src/Docfx.Dotnet/ManagedReference/Visitors/SymbolVisitorAdapter.cs b/src/Docfx.Dotnet/ManagedReference/Visitors/SymbolVisitorAdapter.cs index bf44f4f0c41..0ede8bde10a 100644 --- a/src/Docfx.Dotnet/ManagedReference/Visitors/SymbolVisitorAdapter.cs +++ b/src/Docfx.Dotnet/ManagedReference/Visitors/SymbolVisitorAdapter.cs @@ -96,7 +96,7 @@ public override MetadataItem VisitAssembly(IAssemblySymbol symbol) { { SyntaxLanguage.Default, symbol.MetadataName }, }, - DisplayQualifiedNames = new SortedList<SyntaxLanguage, string> + DisplayQualifiedNames = new SortedList<SyntaxLanguage, string> { { SyntaxLanguage.Default, symbol.MetadataName }, }, @@ -185,7 +185,7 @@ public override MetadataItem VisitNamedType(INamedTypeSymbol symbol) var member in symbol.GetMembers() .Where(static s => s is not INamedTypeSymbol - && ! s.Name.StartsWith('<') + && !s.Name.StartsWith('<') && (s is not IMethodSymbol ms || ms.MethodKind != MethodKind.StaticConstructor) )) { @@ -238,7 +238,7 @@ public override MetadataItem VisitMethod(IMethodSymbol symbol) } _generator.GenerateSyntax(symbol, result.Syntax, _filter); - if (symbol.IsOverride && symbol.OverriddenMethod != null) + if (symbol is {IsOverride: true, OverriddenMethod: not null}) { result.Overridden = AddSpecReference(symbol.OverriddenMethod, typeGenericParameters, methodGenericParameters); } @@ -296,7 +296,7 @@ public override MetadataItem VisitEvent(IEventSymbol symbol) var typeGenericParameters = symbol.ContainingType.IsGenericType ? symbol.ContainingType.Accept(TypeGenericParameterNameVisitor.Instance) : EmptyListOfString; - if (symbol.IsOverride && symbol.OverriddenEvent != null) + if (symbol is {IsOverride: true, OverriddenEvent: not null}) { result.Overridden = AddSpecReference(symbol.OverriddenEvent, typeGenericParameters); } @@ -350,7 +350,7 @@ public override MetadataItem VisitProperty(IPropertySymbol symbol) Debug.Assert(result.Syntax.Return.Type != null); } - if (symbol.IsOverride && symbol.OverriddenProperty != null) + if (symbol is {IsOverride: true, OverriddenProperty: not null}) { result.Overridden = AddSpecReference(symbol.OverriddenProperty, typeGenericParameters); } @@ -374,7 +374,7 @@ public string AddReference(ISymbol symbol) Debug.Fail("Unexpected member type."); throw new InvalidOperationException("Unexpected member type."); } - return _generator.AddReference(symbol, _references); + return _generator.AddReference(symbol, _references, _filter); } public string AddReference(string id, string commentId) @@ -390,7 +390,7 @@ public string AddReference(string id, string commentId) reference.QualifiedNameParts = new(); reference.IsDefinition = symbol.IsDefinition; - _generator.GenerateReference(symbol, reference, asOverload: false); + _generator.GenerateReference(symbol, reference, asOverload: false, _filter); } _references[id] = reference; @@ -406,7 +406,7 @@ public string AddOverloadReference(ISymbol symbol) case MemberType.Constructor: case MemberType.Method: case MemberType.Operator: - return _generator.AddOverloadReference(symbol, _references); + return _generator.AddOverloadReference(symbol, _references, _filter); default: Debug.Fail("Unexpected member type."); throw new InvalidOperationException("Unexpected member type."); @@ -418,7 +418,7 @@ public string AddSpecReference( IReadOnlyList<string> typeGenericParameters = null, IReadOnlyList<string> methodGenericParameters = null) { - return _generator.AddSpecReference(symbol, typeGenericParameters, methodGenericParameters, _references, this); + return _generator.AddSpecReference(symbol, typeGenericParameters, methodGenericParameters, _references, _filter); } private static MemberType GetMemberTypeFromSymbol(ISymbol symbol) diff --git a/src/Docfx.Dotnet/ManagedReference/Visitors/VisitorHelper.cs b/src/Docfx.Dotnet/ManagedReference/Visitors/VisitorHelper.cs index 0e55d5666b9..0db6a1a587f 100644 --- a/src/Docfx.Dotnet/ManagedReference/Visitors/VisitorHelper.cs +++ b/src/Docfx.Dotnet/ManagedReference/Visitors/VisitorHelper.cs @@ -29,7 +29,7 @@ public static string GetId(ISymbol symbol) return null; } - if (symbol is INamespaceSymbol namespaceSymbol && namespaceSymbol.IsGlobalNamespace) + if (symbol is INamespaceSymbol {IsGlobalNamespace: true}) { return GlobalNamespaceId; } @@ -68,8 +68,8 @@ private static string GetDocumentationCommentId(ISymbol symbol) if (InGlobalNamespace(symbol) && !string.IsNullOrEmpty(GlobalNamespaceId)) { - bool isNamespace = (symbol is INamespaceSymbol); - bool isTypeParameter = (symbol is ITypeParameterSymbol); + bool isNamespace = symbol is INamespaceSymbol; + bool isTypeParameter = symbol is ITypeParameterSymbol; if (!isNamespace && !isTypeParameter) { str = str.Insert(2, GlobalNamespaceId + "."); diff --git a/src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs b/src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs index 2517ffe2526..79d205e1f36 100644 --- a/src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs +++ b/src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs @@ -30,7 +30,7 @@ public void DefaultVisit(ISymbol symbol, MetadataItem item) item.DisplayQualifiedNames[SyntaxLanguage.VB] = SymbolFormatter.GetQualifiedName(symbol, SyntaxLanguage.VB); } - public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOverload) + public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOverload, SymbolFilter filter) { if (!reference.NameParts.ContainsKey(SyntaxLanguage.CSharp)) reference.NameParts.Add(SyntaxLanguage.CSharp, new()); @@ -39,9 +39,9 @@ public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOv if (!reference.QualifiedNameParts.ContainsKey(SyntaxLanguage.CSharp)) reference.QualifiedNameParts.Add(SyntaxLanguage.CSharp, new()); - reference.NameParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetNameParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload); - reference.NameWithTypeParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload); - reference.QualifiedNameParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetQualifiedNameParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload); + 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()); @@ -50,9 +50,9 @@ public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOv if (!reference.QualifiedNameParts.ContainsKey(SyntaxLanguage.VB)) reference.QualifiedNameParts.Add(SyntaxLanguage.VB, new()); - reference.NameParts[SyntaxLanguage.VB] = SymbolFormatter.GetNameParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload); - reference.NameWithTypeParts[SyntaxLanguage.VB] = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload); - reference.QualifiedNameParts[SyntaxLanguage.VB] = SymbolFormatter.GetQualifiedNameParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload); + 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); + reference.QualifiedNameParts[SyntaxLanguage.VB] = SymbolFormatter.GetQualifiedNameParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter); } public void GenerateSyntax(ISymbol symbol, SyntaxDetail syntax, SymbolFilter filter) @@ -61,7 +61,7 @@ public void GenerateSyntax(ISymbol symbol, SyntaxDetail syntax, SymbolFilter fil syntax.Content[SyntaxLanguage.VB] = SymbolFormatter.GetSyntax(symbol, SyntaxLanguage.VB, filter); } - public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> references) + public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> references, SymbolFilter filter) { var id = VisitorHelper.GetId(symbol); var reference = new ReferenceItem @@ -72,7 +72,7 @@ public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> ref IsDefinition = symbol.IsDefinition, CommentId = VisitorHelper.GetCommentId(symbol) }; - GenerateReference(symbol, reference, false); + GenerateReference(symbol, reference, false, filter); if (!references.TryAdd(id, reference)) { @@ -82,7 +82,7 @@ public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> ref return id; } - public string AddOverloadReference(ISymbol symbol, Dictionary<string, ReferenceItem> references) + public string AddOverloadReference(ISymbol symbol, Dictionary<string, ReferenceItem> references, SymbolFilter filter) { var uidBody = VisitorHelper.GetOverloadIdBody(symbol); var reference = new ReferenceItem @@ -94,7 +94,7 @@ public string AddOverloadReference(ISymbol symbol, Dictionary<string, ReferenceI CommentId = "Overload:" + uidBody }; - GenerateReference(symbol, reference, true); + GenerateReference(symbol, reference, true, filter); var uid = uidBody + "*"; if (!references.TryAdd(uid, reference)) @@ -110,7 +110,7 @@ public string AddSpecReference( IReadOnlyList<string> typeGenericParameters, IReadOnlyList<string> methodGenericParameters, Dictionary<string, ReferenceItem> references, - SymbolVisitorAdapter adapter) + SymbolFilter filter) { var rawId = VisitorHelper.GetId(symbol); var id = SpecIdHelper.GetSpecId(symbol, typeGenericParameters, methodGenericParameters); @@ -124,7 +124,7 @@ public string AddSpecReference( NameWithTypeParts = new(), QualifiedNameParts = new(), }; - GenerateReference(symbol, reference, false); + GenerateReference(symbol, reference, false, filter); var originalSymbol = symbol; var reducedFrom = (symbol as IMethodSymbol)?.ReducedFrom; if (reducedFrom != null) @@ -135,10 +135,10 @@ public string AddSpecReference( if (!reference.IsDefinition.Value && rawId != null) { - reference.Definition = AddReference(originalSymbol.OriginalDefinition, references); + reference.Definition = AddReference(originalSymbol.OriginalDefinition, references, filter); } - reference.Parent = GetReferenceParent(originalSymbol, typeGenericParameters, methodGenericParameters, references, adapter); + reference.Parent = GetReferenceParent(originalSymbol, typeGenericParameters, methodGenericParameters, references, filter); reference.CommentId = VisitorHelper.GetCommentId(originalSymbol); if (!references.TryAdd(id, reference)) @@ -153,7 +153,7 @@ private string GetReferenceParent(ISymbol symbol, IReadOnlyList<string> typeGenericParameters, IReadOnlyList<string> methodGenericParameters, Dictionary<string, ReferenceItem> references, - SymbolVisitorAdapter adapter) + SymbolFilter filter) { switch (symbol.Kind) { @@ -172,7 +172,7 @@ private string GetReferenceParent(ISymbol symbol, { return null; } - return AddSpecReference(parentSymbol, typeGenericParameters, methodGenericParameters, references, adapter); ; + return AddSpecReference(parentSymbol, typeGenericParameters, methodGenericParameters, references, filter); } default: return null; diff --git a/src/Docfx.Dotnet/MetadataJsonConfig.cs b/src/Docfx.Dotnet/MetadataJsonConfig.cs index 1bf92029531..3bf5e79957f 100644 --- a/src/Docfx.Dotnet/MetadataJsonConfig.cs +++ b/src/Docfx.Dotnet/MetadataJsonConfig.cs @@ -272,6 +272,9 @@ internal class MetadataJsonItemConfig /// </summary> internal class MetadataJsonConfig : List<MetadataJsonItemConfig> { + // Constructor that required for System.Text.Json deserialization. + public MetadataJsonConfig() { } + /// <summary> /// Initializes a new instance of the <see cref="MetadataJsonConfig"/> class. /// </summary> diff --git a/src/Docfx.Dotnet/Parsers/XHtmlWriter.cs b/src/Docfx.Dotnet/Parsers/XHtmlWriter.cs index 7ed0ba882dc..02baa717eb7 100644 --- a/src/Docfx.Dotnet/Parsers/XHtmlWriter.cs +++ b/src/Docfx.Dotnet/Parsers/XHtmlWriter.cs @@ -1,4 +1,7 @@ -using System.Xml; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Xml; /// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/Docfx.Dotnet/Parsers/XmlComment.cs b/src/Docfx.Dotnet/Parsers/XmlComment.cs index 05a8b4d7716..20afb45bf3a 100644 --- a/src/Docfx.Dotnet/Parsers/XmlComment.cs +++ b/src/Docfx.Dotnet/Parsers/XmlComment.cs @@ -42,9 +42,9 @@ internal class XmlComment public List<string> Examples { get; private set; } - public Dictionary<string, string> Parameters { get; private set; } + public Dictionary<string, string> Parameters { get; } - public Dictionary<string, string> TypeParameters { get; private set; } + public Dictionary<string, string> TypeParameters { get; } private XmlComment(string xml, XmlCommentParserContext context) { @@ -356,7 +356,7 @@ private void ResolveCrefLink(XNode node, string nodeSelector, Action<string, str if (!success) { var detailedInfo = new StringBuilder(); - if (_context != null && _context.Source != null) + if (_context is {Source: not null}) { if (!string.IsNullOrEmpty(_context.Source.Name)) { @@ -374,9 +374,9 @@ private void ResolveCrefLink(XNode node, string nodeSelector, Action<string, str if (detailedInfo.Length == 0 && node is XDocument doc) { - var memberName = (string) doc.Element("member")?.Attribute("name"); + var memberName = (string)doc.Element("member")?.Attribute("name"); - if (! string.IsNullOrEmpty(memberName)) + if (!string.IsNullOrEmpty(memberName)) { detailedInfo.Append(", member name is "); detailedInfo.Append(memberName); @@ -631,7 +631,7 @@ static void MarkdownXmlDecode(MarkdownObject node) MarkdownXmlDecode(child); break; - case LeafBlock leafBlock when leafBlock.Inline is not null: + case LeafBlock {Inline: not null} leafBlock: foreach (var child in leafBlock.Inline) MarkdownXmlDecode(child); break; diff --git a/src/Docfx.Dotnet/SourceLink/PortableCustomDebugInfoKinds.cs b/src/Docfx.Dotnet/SourceLink/PortableCustomDebugInfoKinds.cs index 400d4c35062..d9857577ca3 100644 --- a/src/Docfx.Dotnet/SourceLink/PortableCustomDebugInfoKinds.cs +++ b/src/Docfx.Dotnet/SourceLink/PortableCustomDebugInfoKinds.cs @@ -1,6 +1,5 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. namespace Microsoft.CodeAnalysis.Debugging; diff --git a/src/Docfx.Dotnet/SourceLink/SourceLinkMap.cs b/src/Docfx.Dotnet/SourceLink/SourceLinkMap.cs index 8c05b28d44c..a65b97499bf 100644 --- a/src/Docfx.Dotnet/SourceLink/SourceLinkMap.cs +++ b/src/Docfx.Dotnet/SourceLink/SourceLinkMap.cs @@ -1,14 +1,10 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. using System.Collections.ObjectModel; using System.Diagnostics; using System.Text.Json; - -#if NETCOREAPP using System.Diagnostics.CodeAnalysis; -#endif #nullable enable @@ -180,9 +176,7 @@ private static bool TryParseEntry(string key, string value, out Entry entry) /// <exception cref="ArgumentNullException"><paramref name="path"/> is null.</exception> public bool TryGetUri( string path, -#if NETCOREAPP [NotNullWhen(true)] -#endif out string? uri) { ArgumentNullException.ThrowIfNull(path); diff --git a/src/Docfx.Dotnet/SourceLink/SymbolSourceDocumentFinder.cs b/src/Docfx.Dotnet/SourceLink/SymbolSourceDocumentFinder.cs index 1701f1581b7..4e25efc4499 100644 --- a/src/Docfx.Dotnet/SourceLink/SymbolSourceDocumentFinder.cs +++ b/src/Docfx.Dotnet/SourceLink/SymbolSourceDocumentFinder.cs @@ -1,6 +1,5 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. using System.Reflection.Metadata; using System.Reflection.Metadata.Ecma335; diff --git a/src/Docfx.Dotnet/SymbolFilter.cs b/src/Docfx.Dotnet/SymbolFilter.cs index d0ce53fabc4..47685377b9d 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.IsImplicitlyDeclared && symbol.Kind is not SymbolKind.Namespace) + if (symbol is {IsImplicitlyDeclared: true, Kind: not SymbolKind.Namespace}) return false; if (_config.IncludeExplicitInterfaceImplementations && diff --git a/src/Docfx.Dotnet/SymbolFormatter.Symbols.cs b/src/Docfx.Dotnet/SymbolFormatter.Symbols.cs index f4b5decea86..4ed64f8862b 100644 --- a/src/Docfx.Dotnet/SymbolFormatter.Symbols.cs +++ b/src/Docfx.Dotnet/SymbolFormatter.Symbols.cs @@ -1,4 +1,7 @@ -using System.Collections.Immutable; +// 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.Diagnostics.CodeAnalysis; using System.Globalization; using System.Reflection; @@ -33,9 +36,9 @@ private class ParameterSymbol : IParameterSymbol public NullableAnnotation NullableAnnotation => default; - public ImmutableArray<CustomModifier> CustomModifiers => ImmutableArray<CustomModifier>.Empty; + public ImmutableArray<CustomModifier> CustomModifiers => []; - public ImmutableArray<CustomModifier> RefCustomModifiers => ImmutableArray<CustomModifier>.Empty; + public ImmutableArray<CustomModifier> RefCustomModifiers => []; public int Ordinal => 0; @@ -211,12 +214,9 @@ private class PropertySymbol : IPropertySymbol public string ToDisplayString(SymbolDisplayFormat format = null) => Inner.ToDisplayString(format); public ImmutableArray<SymbolDisplayPart> ToMinimalDisplayParts(SemanticModel semanticModel, int position, SymbolDisplayFormat format = null) => Inner.ToMinimalDisplayParts(semanticModel, position, format); public string ToMinimalDisplayString(SemanticModel semanticModel, int position, SymbolDisplayFormat format = null) => Inner.ToMinimalDisplayString(semanticModel, position, format); - -#if NET8_0_OR_GREATER public IPropertySymbol PartialDefinitionPart => Inner.PartialDefinitionPart; public IPropertySymbol PartialImplementationPart => Inner.PartialImplementationPart; public bool IsPartialDefinition => Inner.IsPartialDefinition; -#endif } public class MethodSymbol : IMethodSymbol diff --git a/src/Docfx.Dotnet/SymbolFormatter.Syntax.cs b/src/Docfx.Dotnet/SymbolFormatter.Syntax.cs index 0a5dac67529..9e8db3d1da9 100644 --- a/src/Docfx.Dotnet/SymbolFormatter.Syntax.cs +++ b/src/Docfx.Dotnet/SymbolFormatter.Syntax.cs @@ -1,4 +1,7 @@ -using System.Collections.Immutable; +// 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.DataContracts.ManagedReference; using Microsoft.CodeAnalysis; using CS = Microsoft.CodeAnalysis.CSharp; @@ -178,7 +181,7 @@ private void AddModifiersIfNeeded(ISymbol symbol) private ImmutableArray<SymbolDisplayPart> RemoveNamedTypeConstraints(ISymbol symbol) { if (symbol.Kind is not SymbolKind.NamedType) - return ImmutableArray<SymbolDisplayPart>.Empty; + return []; var result = ImmutableArray.CreateBuilder<SymbolDisplayPart>(); @@ -365,7 +368,7 @@ private void AddTypedConstant(TypedConstant typedConstant) AddPunctuation(")"); break; - case TypedConstantKind.Array when !typedConstant.IsNull && typedConstant.Type is not null: + case TypedConstantKind.Array when typedConstant is {IsNull: false, Type: not null}: AddKeyword("new", "New"); AddSpace(); AddTypeName(typedConstant.Type); @@ -457,7 +460,7 @@ private void AddEnumConstant(TypedConstant typedConstant) private bool ExpandEnumClassName(ISymbol symbol, SymbolDisplayPart part) { - if (symbol.Kind != SymbolKind.Field && part.Kind == SymbolDisplayPartKind.EnumMemberName && part.Symbol is 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, ".")); @@ -469,7 +472,7 @@ private bool ExpandEnumClassName(ISymbol symbol, SymbolDisplayPart part) private bool StaticClassToVBModule(ISymbol symbol, SymbolDisplayPart part) { - if (Language is SyntaxLanguage.VB && symbol.IsStatic && symbol.Kind is 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")); @@ -521,7 +524,7 @@ private ImmutableArray<SymbolDisplayPart> GetDisplayParts(ISymbol symbol, Symbol } catch { - return ImmutableArray<SymbolDisplayPart>.Empty; + return []; } } } diff --git a/src/Docfx.Dotnet/SymbolFormatter.cs b/src/Docfx.Dotnet/SymbolFormatter.cs index d6fc9c4eac4..0e6bf1b496d 100644 --- a/src/Docfx.Dotnet/SymbolFormatter.cs +++ b/src/Docfx.Dotnet/SymbolFormatter.cs @@ -1,4 +1,7 @@ -using System.Collections.Immutable; +// 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.DataContracts.ManagedReference; using Microsoft.CodeAnalysis; using CS = Microsoft.CodeAnalysis.CSharp; @@ -105,12 +108,12 @@ public static ImmutableArray<SymbolDisplayPart> GetSyntaxParts(ISymbol symbol, S } catch (InvalidOperationException) { - return ImmutableArray<SymbolDisplayPart>.Empty; + return []; } } public static List<LinkItem> ToLinkItems(this ImmutableArray<SymbolDisplayPart> parts, - Compilation compilation, MemberLayout memberLayout, HashSet<IAssemblySymbol> allAssemblies, bool overload, SymbolUrlKind urlKind = SymbolUrlKind.Html) + Compilation compilation, MemberLayout memberLayout, HashSet<IAssemblySymbol> allAssemblies, bool overload, SymbolFilter filter, SymbolUrlKind urlKind = SymbolUrlKind.Html) { var result = new List<LinkItem>(); foreach (var part in parts) @@ -128,14 +131,14 @@ LinkItem ToLinkItem(SymbolDisplayPart part) if (symbol is null || part.Kind is SymbolDisplayPartKind.TypeParameterName) return new() { DisplayName = part.ToString() }; - if (symbol is INamedTypeSymbol type && type.IsGenericType) + if (symbol is INamedTypeSymbol {IsGenericType: true} type) symbol = type.ConstructedFrom; return new() { Name = overload ? VisitorHelper.GetOverloadId(symbol) : VisitorHelper.GetId(symbol), DisplayName = part.ToString(), - Href = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, memberLayout, urlKind, allAssemblies), + Href = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, memberLayout, urlKind, allAssemblies, filter), IsExternalPath = symbol.IsExtern || symbol.DeclaringSyntaxReferences.Length == 0, }; } @@ -165,7 +168,7 @@ private static ImmutableArray<SymbolDisplayPart> GetDisplayParts( } catch { - return ImmutableArray<SymbolDisplayPart>.Empty; + return []; } static ImmutableArray<SymbolDisplayPart> GetCastOperatorOverloadDisplayParts(ImmutableArray<SymbolDisplayPart> parts) diff --git a/src/Docfx.Dotnet/SymbolHelper.cs b/src/Docfx.Dotnet/SymbolHelper.cs index 4620ae88d21..d49889a6a32 100644 --- a/src/Docfx.Dotnet/SymbolHelper.cs +++ b/src/Docfx.Dotnet/SymbolHelper.cs @@ -1,4 +1,7 @@ -using System.Diagnostics.CodeAnalysis; +// 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 Microsoft.CodeAnalysis; #nullable enable @@ -30,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 type && type.TypeKind is 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.Langword.cs b/src/Docfx.Dotnet/SymbolUrlResolver.Langword.cs index 2a570548dbf..5b252a05514 100644 --- a/src/Docfx.Dotnet/SymbolUrlResolver.Langword.cs +++ b/src/Docfx.Dotnet/SymbolUrlResolver.Langword.cs @@ -1,4 +1,7 @@ -#nullable enable +// 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.Text.Json; diff --git a/src/Docfx.Dotnet/SymbolUrlResolver.MSLearn.cs b/src/Docfx.Dotnet/SymbolUrlResolver.MSLearn.cs index 2fe50df2a46..0faf52089ff 100644 --- a/src/Docfx.Dotnet/SymbolUrlResolver.MSLearn.cs +++ b/src/Docfx.Dotnet/SymbolUrlResolver.MSLearn.cs @@ -1,4 +1,7 @@ -using System.Text; +// 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 Microsoft.CodeAnalysis; #nullable enable @@ -106,7 +109,7 @@ internal static string GetUrlFragmentFromUid(string uid) case '}': sb.Append("))"); break; - case char c when (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9'): + case char and (>= 'a' and <= 'z' or >= '0' and <= '9'): case '(' or ')' or '*' or '@': sb.Append(ch); break; diff --git a/src/Docfx.Dotnet/SymbolUrlResolver.MSLearnAssemblies.cs b/src/Docfx.Dotnet/SymbolUrlResolver.MSLearnAssemblies.cs index 3f7fdb9e998..36ba972743b 100644 --- a/src/Docfx.Dotnet/SymbolUrlResolver.MSLearnAssemblies.cs +++ b/src/Docfx.Dotnet/SymbolUrlResolver.MSLearnAssemblies.cs @@ -1,4 +1,7 @@ -using System.Text.Json; +// 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; namespace Docfx.Dotnet; diff --git a/src/Docfx.Dotnet/SymbolUrlResolver.SourceLink.cs b/src/Docfx.Dotnet/SymbolUrlResolver.SourceLink.cs index a5b9ebbdb68..adc14d64930 100644 --- a/src/Docfx.Dotnet/SymbolUrlResolver.SourceLink.cs +++ b/src/Docfx.Dotnet/SymbolUrlResolver.SourceLink.cs @@ -1,4 +1,7 @@ -using System.Reflection.Metadata; +// 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.Metadata; using System.Reflection.Metadata.Ecma335; using System.Reflection.PortableExecutable; using System.Runtime.CompilerServices; diff --git a/src/Docfx.Dotnet/SymbolUrlResolver.cs b/src/Docfx.Dotnet/SymbolUrlResolver.cs index d95738a4422..98fca2734af 100644 --- a/src/Docfx.Dotnet/SymbolUrlResolver.cs +++ b/src/Docfx.Dotnet/SymbolUrlResolver.cs @@ -1,4 +1,7 @@ -using System.Text.RegularExpressions; +// 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.RegularExpressions; using Microsoft.CodeAnalysis; #nullable enable @@ -13,12 +16,15 @@ enum SymbolUrlKind internal static partial class SymbolUrlResolver { - public static string? GetSymbolUrl(ISymbol symbol, Compilation compilation, MemberLayout memberLayout, SymbolUrlKind urlKind, HashSet<IAssemblySymbol> allAssemblies) + public static string? GetSymbolUrl(ISymbol symbol, Compilation compilation, MemberLayout memberLayout, SymbolUrlKind urlKind, HashSet<IAssemblySymbol> allAssemblies, SymbolFilter filter) { // Reduce symbol into generic definitions symbol = symbol is IMethodSymbol method ? method.ReducedFrom ?? symbol : symbol; symbol = symbol.OriginalDefinition ?? symbol; + if (!filter.IncludeApi(symbol)) + return null; + return GetDocfxUrl(symbol, memberLayout, urlKind, allAssemblies) ?? GetMicrosoftLearnUrl(symbol) ?? GetPdbSourceLinkUrl(compilation, symbol); diff --git a/src/Docfx.Dotnet/YamlViewModelExtensions.cs b/src/Docfx.Dotnet/YamlViewModelExtensions.cs index b24dba95762..e1690b0bce4 100644 --- a/src/Docfx.Dotnet/YamlViewModelExtensions.cs +++ b/src/Docfx.Dotnet/YamlViewModelExtensions.cs @@ -180,7 +180,7 @@ private static ReferenceViewModel ToReferenceViewModel(KeyValuePair<string, Refe Parent = model.Value.Parent, Definition = model.Value.Definition, }; - if (model.Value.NameParts != null && model.Value.NameParts.Count > 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 != null && model.Parent.Name != 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 != null && model.Content.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<TValue>(this SortedList<SyntaxLanguage, private static void AddChildren(MetadataItem model, PageViewModel result, ExtractMetadataConfig config) { - if (model.Items != null && model.Items.Count > 0) + if (model.Items is {Count: > 0}) { foreach (var item in model.Items) { diff --git a/src/Docfx.Glob/Docfx.Glob.csproj b/src/Docfx.Glob/Docfx.Glob.csproj index fafa6a9259a..a89ab8e2e8f 100644 --- a/src/Docfx.Glob/Docfx.Glob.csproj +++ b/src/Docfx.Glob/Docfx.Glob.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\Docfx.Common\Docfx.Common.csproj" /> </ItemGroup> diff --git a/src/Docfx.Glob/GlobMatcher.cs b/src/Docfx.Glob/GlobMatcher.cs index 5fee9fcaf26..9e83ac95a83 100644 --- a/src/Docfx.Glob/GlobMatcher.cs +++ b/src/Docfx.Glob/GlobMatcher.cs @@ -137,7 +137,7 @@ private static IEnumerable<string> Split(string path, params char[] splitter) yield return parts[i] + "/"; } - yield return path.EndsWith("/", StringComparison.Ordinal) ? parts[parts.Length - 1] + "/" : parts[parts.Length - 1]; + yield return path.EndsWith('/') ? parts[parts.Length - 1] + "/" : parts[parts.Length - 1]; } private string ConvertSingleGlob(IEnumerable<GlobRegexItem> regexItems) @@ -148,7 +148,7 @@ private string ConvertSingleGlob(IEnumerable<GlobRegexItem> regexItems) private static bool IsFolderPath(string path) { - return path.EndsWith("/", StringComparison.Ordinal); + return path.EndsWith('/'); } /// <summary> @@ -165,10 +165,8 @@ private GlobRegexItem ConvertSingleGlobPart(string globPart) } StringBuilder builder = new(); - bool escaping = false; bool disableEscape = !Options.HasFlag(GlobMatcherOptions.AllowEscape); bool hasMagic = false; - CharClass currentCharClass = null; string patternStart = string.Empty; // .abc will not be matched unless . is explicitly specified @@ -215,8 +213,8 @@ private GlobRegexItem ConvertSingleGlobPart(string globPart) hasMagic = true; break; case '[': - escaping = false; - currentCharClass = new CharClass(); + bool escaping = false; + CharClass currentCharClass = new(); int cur = i + 1; while (cur < globPart.Length) { @@ -408,14 +406,9 @@ private bool MatchOne(string[] fileParts, GlobRegexItem[] globParts, bool matchP private bool DisallowedMatchExists(string filePart) { - if (filePart == "." - || filePart == ".." - || (!_allowDotMatch && filePart.StartsWith(".", StringComparison.Ordinal))) - { - return true; - } - - return false; + return filePart == "." + || filePart == ".." + || (!_allowDotMatch && filePart.StartsWith('.')); } private static string UnescapeGlob(string s) @@ -728,7 +721,7 @@ public override string ToString() } } - private sealed class GlobRegexItem + private sealed class GlobRegexItem { public static readonly GlobRegexItem GlobStar = new(GlobRegexItemType.GlobStar); public static readonly GlobRegexItem GlobStarForFileOnly = new(GlobRegexItemType.GlobStarForFileOnly); diff --git a/src/Docfx.Glob/GlobUtility.cs b/src/Docfx.Glob/GlobUtility.cs index b21093933f9..449df83ea3d 100644 --- a/src/Docfx.Glob/GlobUtility.cs +++ b/src/Docfx.Glob/GlobUtility.cs @@ -59,7 +59,7 @@ private static GlobMatcherOptions GetMatchOptionsFromItem(FileMappingItem item) return options; } - private static void CheckPatterns(IEnumerable<string> patterns) + private static void CheckPatterns(IReadOnlyCollection<string> patterns) { if (patterns.Any(s => s.Contains('\\'))) { diff --git a/src/Docfx.MarkdigEngine.Extensions/Aggregator/TabGroupAggregator.cs b/src/Docfx.MarkdigEngine.Extensions/Aggregator/TabGroupAggregator.cs index 6c10611f183..b2d531fccd1 100644 --- a/src/Docfx.MarkdigEngine.Extensions/Aggregator/TabGroupAggregator.cs +++ b/src/Docfx.MarkdigEngine.Extensions/Aggregator/TabGroupAggregator.cs @@ -106,7 +106,7 @@ private static TabItemBlock CreateTabItem( private static Tuple<string, string, LinkInline> ParseHeading(HeadingBlock block) { var child = block.Inline.FirstChild; - if (child != null && child.NextSibling == null && child is 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/CodeSnippetExtractor.cs b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippetExtractor.cs index a3986c06d69..072a9b97d3d 100644 --- a/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippetExtractor.cs +++ b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippetExtractor.cs @@ -39,12 +39,12 @@ public Dictionary<string, CodeRange> GetAllTags(string[] lines, ref HashSet<int> tagName = tagStack.Count > 0 ? tagStack.Pop() : string.Empty; } - if (result.ContainsKey(tagName)) + if (result.TryGetValue(tagName, out var range)) { - if (result[tagName].End == 0) + if (range.End == 0) { // we meet the first end tag, ignore the following ones - result[tagName].End = index; + range.End = index; } } @@ -68,7 +68,7 @@ private static bool MatchTag(string line, string template, out string tagName, b tagName = string.Empty; if (string.IsNullOrEmpty(line) || string.IsNullOrEmpty(template)) return false; - var splittedTemplate = template.Split(new[] { TagNamePlaceHolder }, StringSplitOptions.None); + var splittedTemplate = template.Split(TagNamePlaceHolder); var beforeTagName = splittedTemplate[0]; var afterTagName = splittedTemplate.Length == 2 ? splittedTemplate[1] : string.Empty; diff --git a/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/HtmlCodeSnippetRenderer.cs b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/HtmlCodeSnippetRenderer.cs index 6a8544d5ef6..7cbd512a00d 100644 --- a/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/HtmlCodeSnippetRenderer.cs +++ b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/HtmlCodeSnippetRenderer.cs @@ -233,7 +233,7 @@ protected override void Write(HtmlRenderer renderer, CodeSnippet codeSnippet) private string GetNoteBookContent(string content, string tagName, CodeSnippet obj) { - JObject contentObject = null; + JObject contentObject; try { contentObject = JObject.Parse(content); @@ -245,7 +245,7 @@ private string GetNoteBookContent(string content, string tagName, CodeSnippet ob } string sourceJsonPath = $"$..cells[?(@.metadata.name=='{tagName}')].source"; - JToken sourceObject = null; + JToken sourceObject; try { sourceObject = contentObject.SelectToken(sourceJsonPath); diff --git a/src/Docfx.MarkdigEngine.Extensions/Docfx.MarkdigEngine.Extensions.csproj b/src/Docfx.MarkdigEngine.Extensions/Docfx.MarkdigEngine.Extensions.csproj index 5818d808afb..18a10cb1a23 100644 --- a/src/Docfx.MarkdigEngine.Extensions/Docfx.MarkdigEngine.Extensions.csproj +++ b/src/Docfx.MarkdigEngine.Extensions/Docfx.MarkdigEngine.Extensions.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <PackageReference Include="Markdig" /> <PackageReference Include="Newtonsoft.Json" /> diff --git a/src/Docfx.MarkdigEngine.Extensions/ExtensionsHelper.cs b/src/Docfx.MarkdigEngine.Extensions/ExtensionsHelper.cs index b21f9348a98..1619e0bd5d2 100644 --- a/src/Docfx.MarkdigEngine.Extensions/ExtensionsHelper.cs +++ b/src/Docfx.MarkdigEngine.Extensions/ExtensionsHelper.cs @@ -266,14 +266,6 @@ private static bool MatchPath(ref StringSlice slice, ref string path) } else { - if (title.Length >= 2 && title.First() == '\'' && title.Last() == '\'') - { - title = title.Substring(1, title.Length - 2).Trim(); - } - else if (title.Length >= 2 && title.First() == '\"' && title.Last() == '\"') - { - title = title.Substring(1, title.Length - 2).Trim(); - } path = includedFilePath; slice.NextChar(); return true; diff --git a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSetting.cs b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSetting.cs index aee8908e57f..87cf1a0d20a 100644 --- a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSetting.cs +++ b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSetting.cs @@ -14,18 +14,10 @@ namespace Docfx.MarkdigEngine.Extensions; /// Markdig extension setting. /// </summary> [DebuggerDisplay("Name = {Name}")] -[Newtonsoft.Json.JsonConverter(typeof(MarkdigExtensionSettingConverter))] +[Newtonsoft.Json.JsonConverter(typeof(MarkdigExtensionSettingConverter.NewtonsoftJsonConverter))] +[System.Text.Json.Serialization.JsonConverter(typeof(MarkdigExtensionSettingConverter.SystemTextJsonConverter))] public class MarkdigExtensionSetting { - private static readonly JsonSerializerOptions DefaultSerializerOptions = new() - { - AllowTrailingCommas = true, - PropertyNamingPolicy = JsonNamingPolicy.CamelCase, - Converters = { - new JsonStringEnumConverter() - }, - }; - /// <summary> /// Initializes a new instance of the <see cref="MarkdigExtensionSetting"/> class. /// </summary> @@ -59,7 +51,7 @@ public MarkdigExtensionSetting(string name, JsonNode? options = null) public T GetOptions<T>(T fallbackValue) { return Options is null ? fallbackValue - : JsonSerializer.Deserialize<T>(JsonSerializer.Serialize(Options), DefaultSerializerOptions) ?? fallbackValue; + : Options.Value.Deserialize<T>(MarkdigExtensionSettingConverter.DefaultSerializerOptions) ?? fallbackValue; } /// <summary> diff --git a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.NewtonsoftJson.cs b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.NewtonsoftJson.cs new file mode 100644 index 00000000000..2b5b4b514d9 --- /dev/null +++ b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.NewtonsoftJson.cs @@ -0,0 +1,88 @@ +// 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; + +namespace Docfx.MarkdigEngine.Extensions; + +internal partial class MarkdigExtensionSettingConverter +{ + internal class NewtonsoftJsonConverter : Newtonsoft.Json.JsonConverter + { + /// <inheritdoc/> + public override bool CanConvert(Type objectType) + { + return objectType == typeof(MarkdigExtensionSetting); + } + + /// <inheritdoc/> + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + // var value = reader.Value; + switch (reader.TokenType) + { + case JsonToken.String: + { + var name = (string)reader.Value; + return new MarkdigExtensionSetting(name); + } + case JsonToken.StartObject: + { + var jObj = JObject.Load(reader); + + var props = jObj.Properties().ToArray(); + + // Object key must be the name of markdig extension. + if (props.Length != 1) + return null; + + var prop = props[0]; + var name = prop.Name; + + var options = prop.Value; + if (options.Count() == 0) + { + return new MarkdigExtensionSetting(name); + } + + // Convert JToken to JsonElement. + var json = options.ToString(Formatting.None); + using var doc = System.Text.Json.JsonDocument.Parse(json); + var jsonElement = doc.RootElement.Clone(); + + return new MarkdigExtensionSetting(name) + { + Options = jsonElement, + }; + } + + default: + return null; + } + } + + /// <inheritdoc/> + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + if (value == null) + return; + + var model = (MarkdigExtensionSetting)value; + + if (model.Options == null || !model.Options.HasValue) + { + writer.WriteValue(model.Name); + } + else + { + writer.WriteStartObject(); + writer.WritePropertyName(model.Name); + var json = System.Text.Json.JsonSerializer.Serialize(model.Options, DefaultSerializerOptions); + writer.WriteRawValue(json); + writer.WriteEndObject(); + } + } + } +} + diff --git a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.SystemTextJson.cs b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.SystemTextJson.cs new file mode 100644 index 00000000000..bd903601a1b --- /dev/null +++ b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.SystemTextJson.cs @@ -0,0 +1,74 @@ +// 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 System.Text.Json.Serialization; +using System.Text.Json.Nodes; +using System.Xml.Linq; + +namespace Docfx.MarkdigEngine.Extensions; + +internal partial class MarkdigExtensionSettingConverter +{ + internal class SystemTextJsonConverter : JsonConverter<MarkdigExtensionSetting> + { + public override MarkdigExtensionSetting Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + switch (reader.TokenType) + { + case JsonTokenType.String: + { + var name = reader.GetString(); + return new MarkdigExtensionSetting(name); + } + case JsonTokenType.StartObject: + { + var elem = JsonElement.ParseValue(ref reader); + + var props = elem.EnumerateObject().ToArray(); + + // Object key must be the name of markdig extension. + if (props.Length != 1) + return null; + + var prop = props[0]; + var name = prop.Name; + var value = prop.Value; + + if (value.ValueKind != JsonValueKind.Object) + { + return new MarkdigExtensionSetting(name); + } + + return new MarkdigExtensionSetting(name) + { + Options = value, + }; + } + default: + throw new JsonException($"TokenType({reader.TokenType}) is not supported."); + } + } + + public override void Write(Utf8JsonWriter writer, MarkdigExtensionSetting value, JsonSerializerOptions options) + { + if (value == null) + return; + + var model = (MarkdigExtensionSetting)value; + + if (model.Options == null || !model.Options.HasValue) + { + writer.WriteStringValue(model.Name); + } + else + { + writer.WriteStartObject(); + writer.WritePropertyName(model.Name); + var json = JsonSerializer.Serialize(model.Options, DefaultSerializerOptions); + writer.WriteRawValue(json); + writer.WriteEndObject(); + } + } + } +} diff --git a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.cs b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.cs index a8c9bf2a1be..34bd3056a9c 100644 --- a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.cs +++ b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.cs @@ -1,96 +1,25 @@ // 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 System.Text.Json; +using System.Text.Json.Serialization; namespace Docfx.MarkdigEngine.Extensions; -internal class MarkdigExtensionSettingConverter : Newtonsoft.Json.JsonConverter +internal partial class MarkdigExtensionSettingConverter { - // JsonSerializerOptions that used to deserialize MarkdigExtension options. + // Shared JsonSerializerOptions instance. internal static readonly System.Text.Json.JsonSerializerOptions DefaultSerializerOptions = new() { - IncludeFields = true, AllowTrailingCommas = true, - DictionaryKeyPolicy = System.Text.Json.JsonNamingPolicy.CamelCase, - PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase, + ReadCommentHandling = JsonCommentHandling.Skip, + DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, PropertyNameCaseInsensitive = true, Converters = { - new System.Text.Json.Serialization.JsonStringEnumConverter() + new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) }, WriteIndented = false, }; - - /// <inheritdoc/> - public override bool CanConvert(Type objectType) - { - return objectType == typeof(MarkdigExtensionSetting); - } - - /// <inheritdoc/> - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - // var value = reader.Value; - switch (reader.TokenType) - { - case JsonToken.String: - { - var name = (string)reader.Value; - return new MarkdigExtensionSetting(name); - } - case JsonToken.StartObject: - { - var jObj = JObject.Load(reader); - - var props = jObj.Properties().ToArray(); - - // Object key must be the name of markdig extension. - if (props.Length != 1) - return null; - - var prop = props[0]; - var name = prop.Name; - - var options = prop.Value; - if (options.Count() == 0) - { - return new MarkdigExtensionSetting(name); - } - - // Serialize options to JsonElement. - var jsonElement = System.Text.Json.JsonSerializer.SerializeToElement(options, DefaultSerializerOptions); - - return new MarkdigExtensionSetting(name) - { - Options = jsonElement, - }; - } - - default: - return null; - } - } - - /// <inheritdoc/> - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - if (value == null) - return; - - var model = (MarkdigExtensionSetting)value; - - if (model.Options == null || !model.Options.HasValue) - { - writer.WriteValue(model.Name); - } - else - { - writer.WriteStartObject(); - writer.WritePropertyName(model.Name); - var json = model.Options.ToString(); - writer.WriteRawValue(json); - writer.WriteEndObject(); - } - } } + diff --git a/src/Docfx.MarkdigEngine.Extensions/MonikerRange/MonikerRangeParser.cs b/src/Docfx.MarkdigEngine.Extensions/MonikerRange/MonikerRangeParser.cs index 7a0f3e7e480..3e8a92f5756 100644 --- a/src/Docfx.MarkdigEngine.Extensions/MonikerRange/MonikerRangeParser.cs +++ b/src/Docfx.MarkdigEngine.Extensions/MonikerRange/MonikerRangeParser.cs @@ -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 != null && monikerRange.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/Noloc/NolocInline.cs b/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocInline.cs index 03b4ff5207d..18fa5b509d3 100644 --- a/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocInline.cs +++ b/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocInline.cs @@ -1,4 +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 Markdig.Syntax.Inlines; namespace Docfx.MarkdigEngine.Extensions; diff --git a/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocParser.cs b/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocParser.cs index eba328895f4..b7dfa65b018 100644 --- a/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocParser.cs +++ b/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocParser.cs @@ -1,4 +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 Markdig.Helpers; using Markdig.Parsers; diff --git a/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocRender.cs b/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocRender.cs index 2ab95f358ed..68e8c62b742 100644 --- a/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocRender.cs +++ b/src/Docfx.MarkdigEngine.Extensions/Noloc/NolocRender.cs @@ -1,4 +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 Markdig.Renderers; using Markdig.Renderers.Html; diff --git a/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlCodeBlockRenderer.cs b/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlCodeBlockRenderer.cs index 0df8d1af379..5957c059df4 100644 --- a/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlCodeBlockRenderer.cs +++ b/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlCodeBlockRenderer.cs @@ -1,9 +1,11 @@ -using static System.Text.Encoding; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. using Markdig.Renderers; -using Markdig.Syntax; using Markdig.Renderers.Html; +using Markdig.Syntax; using PlantUml.Net; +using static System.Text.Encoding; namespace Docfx.MarkdigEngine.Extensions; @@ -42,9 +44,8 @@ public PlantUmlCodeBlockRenderer(MarkdownContext context, PlantUmlOptions settin protected override void Write(HtmlRenderer renderer, CodeBlock obj) { - if (obj is FencedCodeBlock fencedCodeBlock - && fencedCodeBlock.Info is string info - && info.Equals("plantuml", StringComparison.OrdinalIgnoreCase)) + 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/PlantUml/PlantUmlExtension.cs b/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlExtension.cs index 3cf0d9d8f06..469d9bc73bc 100644 --- a/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlExtension.cs +++ b/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlExtension.cs @@ -1,3 +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 Markdig; using Markdig.Renderers; diff --git a/src/Docfx.MarkdigEngine.Extensions/QuoteSectionNote/QuoteSectionNoteParser.cs b/src/Docfx.MarkdigEngine.Extensions/QuoteSectionNote/QuoteSectionNoteParser.cs index a3ed7ea6cb5..e1bc6ade232 100644 --- a/src/Docfx.MarkdigEngine.Extensions/QuoteSectionNote/QuoteSectionNoteParser.cs +++ b/src/Docfx.MarkdigEngine.Extensions/QuoteSectionNote/QuoteSectionNoteParser.cs @@ -141,8 +141,8 @@ private bool TryParseFromLine(BlockProcessor processor, QuoteSectionNoteBlock bl while (processor.CurrentChar.IsSpaceOrTab()) processor.NextChar(); - var isNoteVideoDiv = (infoString.StartsWith("[!div", StringComparison.OrdinalIgnoreCase)) || - (infoString.StartsWith("[!Video", StringComparison.OrdinalIgnoreCase)) || + var isNoteVideoDiv = infoString.StartsWith("[!div", StringComparison.OrdinalIgnoreCase) || + infoString.StartsWith("[!Video", StringComparison.OrdinalIgnoreCase) || IsNoteType(infoString); if (processor.CurrentChar != '\0' && isNoteVideoDiv) { diff --git a/src/Docfx.MarkdigEngine.Extensions/ResolveLink/ResolveLinkExtension.cs b/src/Docfx.MarkdigEngine.Extensions/ResolveLink/ResolveLinkExtension.cs index 2d7a45322b3..321d577d9ad 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 leafBlock when leafBlock.Inline != null: + 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 04fd32e116d..fa3e396666e 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 leafBlock && leafBlock.Inline != null) + if (block is LeafBlock {Inline: not null} leafBlock) { RewriteContainerInline(leafBlock.Inline); } diff --git a/src/Docfx.MarkdigEngine.Extensions/TripleColon/CodeExtension.cs b/src/Docfx.MarkdigEngine.Extensions/TripleColon/CodeExtension.cs index 1d28701e1fd..a5135e944dd 100644 --- a/src/Docfx.MarkdigEngine.Extensions/TripleColon/CodeExtension.cs +++ b/src/Docfx.MarkdigEngine.Extensions/TripleColon/CodeExtension.cs @@ -70,8 +70,6 @@ public bool TryProcessAttributes(IDictionary<string, string> attributes, out Htm { htmlAttributes = null; var source = ""; - var range = ""; - var id = ""; var highlight = ""; var language = ""; var interactive = ""; @@ -86,10 +84,7 @@ public bool TryProcessAttributes(IDictionary<string, string> attributes, out Htm source = value; break; case "range": - range = value; - break; case "id": - id = value; break; case "highlight": highlight = value; diff --git a/src/Docfx.MarkdigEngine.Extensions/TripleColon/ImageExtension.cs b/src/Docfx.MarkdigEngine.Extensions/TripleColon/ImageExtension.cs index 459076f8417..b8057c314ce 100644 --- a/src/Docfx.MarkdigEngine.Extensions/TripleColon/ImageExtension.cs +++ b/src/Docfx.MarkdigEngine.Extensions/TripleColon/ImageExtension.cs @@ -158,10 +158,9 @@ public bool Render(HtmlRenderer renderer, MarkdownObject obj, Action<string> log { renderer.Write("<img").WriteAttributes(htmlAttributes).WriteLine(">"); - if (tripleColonObj is ContainerBlock - && (tripleColonObj as ContainerBlock).LastChild != null) + if (tripleColonObj is ContainerBlock {LastChild: not null} block) { - var inline = ((tripleColonObj as ContainerBlock).LastChild as ParagraphBlock).Inline; + var inline = (block.LastChild as ParagraphBlock).Inline; renderer.WriteChildren(inline); } } @@ -209,15 +208,8 @@ public static string GetHtmlId(MarkdownObject obj) public static bool RequiresClosingTripleColon(IDictionary<string, string> attributes) { - if (attributes != null - && attributes.ContainsKey("type") - && attributes["type"] == "complex") - { - return true; - } - else - { - return false; - } + return attributes != null + && attributes.TryGetValue("type", out string value) + && value == "complex"; } } diff --git a/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonBlockParser.cs b/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonBlockParser.cs index 3a836f81b5d..69ed2936180 100644 --- a/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonBlockParser.cs +++ b/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonBlockParser.cs @@ -66,7 +66,8 @@ public override BlockState TryOpen(BlockProcessor processor) block.SetData(typeof(HtmlAttributes), htmlAttributes); } - if (extension.GetType() == typeof(ImageExtension)) + var type = extension.GetType(); + if (type == typeof(ImageExtension)) { if (!ImageExtension.RequiresClosingTripleColon(attributes)) { @@ -77,7 +78,7 @@ public override BlockState TryOpen(BlockProcessor processor) block.EndingTripleColons = true; return BlockState.ContinueDiscard; } - else if (extension.GetType() == typeof(VideoExtension)) + else if (type == typeof(VideoExtension)) { if (!VideoExtension.RequiresClosingTripleColon(attributes)) { @@ -104,10 +105,11 @@ public override BlockState TryOpen(BlockProcessor processor) public override BlockState TryContinue(BlockProcessor processor, Block block) { var slice = processor.Line; - var endingTripleColons = ((TripleColonBlock)block).EndingTripleColons; + var colonBlock = (TripleColonBlock) block; + var endingTripleColons = colonBlock.EndingTripleColons; - if (((TripleColonBlock)block).Extension.GetType() != typeof(ImageExtension) || ((TripleColonBlock)block).Extension.GetType() != typeof(VideoExtension) - || endingTripleColons) + Type type = ((TripleColonBlock)block).Extension.GetType(); + if (type != typeof(ImageExtension) || type != typeof(VideoExtension) || endingTripleColons) { if (processor.IsBlankLine) { @@ -119,14 +121,14 @@ public override BlockState TryContinue(BlockProcessor processor, Block block) if (!ExtensionsHelper.MatchStart(ref slice, ":::")) { // create a block for the image long description - ((TripleColonBlock)block).Body = slice.ToString(); + colonBlock.Body = slice.ToString(); ExtensionsHelper.ResetLineIndent(processor); return BlockState.Continue; } ExtensionsHelper.SkipSpaces(ref slice); - var extensionName = ((TripleColonBlock)block).Extension.Name; + var extensionName = colonBlock.Extension.Name; if (!ExtensionsHelper.MatchStart(ref slice, extensionName) || !ExtensionsHelper.MatchStart(ref slice, "-end")) { @@ -155,13 +157,13 @@ public override BlockState TryContinue(BlockProcessor processor, Block block) block.UpdateSpanEnd(slice.End); block.IsOpen = false; - (block as TripleColonBlock).Closed = true; + colonBlock.Closed = true; return BlockState.BreakDiscard; } block.IsOpen = false; - (block as TripleColonBlock).Closed = true; + colonBlock.Closed = true; if (!processor.IsBlankLine) { diff --git a/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonInline.cs b/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonInline.cs index a70e3ecca9f..844bebf8628 100644 --- a/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonInline.cs +++ b/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonInline.cs @@ -12,7 +12,7 @@ public class TripleColonInline : Inline, ITripleColon public string Body { get; set; } public TripleColonInline() - : base() { } + { } public bool Closed { get; set; } diff --git a/src/Docfx.MarkdigEngine.Extensions/TripleColon/VideoExtension.cs b/src/Docfx.MarkdigEngine.Extensions/TripleColon/VideoExtension.cs index a93df1843e5..cf6be57a68d 100644 --- a/src/Docfx.MarkdigEngine.Extensions/TripleColon/VideoExtension.cs +++ b/src/Docfx.MarkdigEngine.Extensions/TripleColon/VideoExtension.cs @@ -155,10 +155,9 @@ public bool Render(HtmlRenderer renderer, MarkdownObject markdownObject, Action< renderer.WriteLine("<div class=\"embeddedvideo\">"); renderer.Write($"<iframe").WriteAttributes(markdownObject).WriteLine("></iframe>"); renderer.WriteLine("</div>"); - if (tripleColonObj is ContainerBlock - && (tripleColonObj as ContainerBlock).LastChild != null) + if (tripleColonObj is ContainerBlock {LastChild: not null} block) { - var inline = ((tripleColonObj as ContainerBlock).LastChild as ParagraphBlock).Inline; + var inline = (block.LastChild as ParagraphBlock).Inline; renderer.WriteChildren(inline); } } @@ -201,15 +200,8 @@ public static string GetHtmlId(MarkdownObject obj) public static bool RequiresClosingTripleColon(IDictionary<string, string> attributes) { - if (attributes != null - && attributes.ContainsKey("type") - && attributes["type"] == "complex") - { - return true; - } - else - { - return false; - } + return attributes != null + && attributes.TryGetValue("type", out string value) + && value == "complex"; } } diff --git a/src/Docfx.MarkdigEngine/Docfx.MarkdigEngine.csproj b/src/Docfx.MarkdigEngine/Docfx.MarkdigEngine.csproj index ed2a988828c..659c1aa904c 100644 --- a/src/Docfx.MarkdigEngine/Docfx.MarkdigEngine.csproj +++ b/src/Docfx.MarkdigEngine/Docfx.MarkdigEngine.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <PackageReference Include="Markdig" /> <PackageReference Include="Newtonsoft.Json" /> diff --git a/src/Docfx.MarkdigEngine/MarkdigMarkdownService.cs b/src/Docfx.MarkdigEngine/MarkdigMarkdownService.cs index bb6062a9cfa..3a7ebcf566a 100644 --- a/src/Docfx.MarkdigEngine/MarkdigMarkdownService.cs +++ b/src/Docfx.MarkdigEngine/MarkdigMarkdownService.cs @@ -45,13 +45,7 @@ public MarkupResult Markup(string content, string filePath) public MarkupResult Markup(string content, string filePath, bool multipleYamlHeader) { ArgumentNullException.ThrowIfNull(content); - -#if NET7_0_OR_GREATER ArgumentException.ThrowIfNullOrEmpty(filePath); -#else - if(string.IsNullOrEmpty(filePath)) - throw new ArgumentNullException(nameof(filePath)); -#endif var pipeline = CreateMarkdownPipeline(isInline: false, multipleYamlHeader); @@ -141,7 +135,7 @@ private MarkdownPipeline CreateMarkdownPipeline(bool isInline, bool multipleYaml builder.UseInlineOnly(); } - if (_parameters?.Extensions?.MarkdigExtensions is { } extensions && extensions.Length > 0) + if (_parameters?.Extensions?.MarkdigExtensions is {Length: > 0} extensions) { builder.UseOptionalExtensions(extensions); } @@ -179,7 +173,7 @@ private MarkdownPipeline CreateMarkdownPipeline(bool isInline, bool multipleYaml private static string GetLink(string path, MarkdownObject origin) { - if (InclusionContext.IsInclude && RelativePath.IsRelativePath(path) && PathUtility.IsRelativePath(path) && !RelativePath.IsPathFromWorkingFolder(path) && !path.StartsWith("#", StringComparison.Ordinal)) + if (InclusionContext.IsInclude && RelativePath.IsRelativePath(path) && PathUtility.IsRelativePath(path) && !RelativePath.IsPathFromWorkingFolder(path) && !path.StartsWith('#')) { return ((RelativePath)InclusionContext.File + (RelativePath)path).GetPathFromWorkingFolder(); } diff --git a/src/Docfx.Plugins/Docfx.Plugins.csproj b/src/Docfx.Plugins/Docfx.Plugins.csproj index b906dab4380..ca14a7a0327 100644 --- a/src/Docfx.Plugins/Docfx.Plugins.csproj +++ b/src/Docfx.Plugins/Docfx.Plugins.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <PackageReference Include="System.Collections.Immutable" /> <PackageReference Include="Newtonsoft.Json" /> diff --git a/src/Docfx.Plugins/DocumentException.cs b/src/Docfx.Plugins/DocumentException.cs index fb63ba51ef2..e7cab06f5fa 100644 --- a/src/Docfx.Plugins/DocumentException.cs +++ b/src/Docfx.Plugins/DocumentException.cs @@ -1,4 +1,7 @@ -namespace Docfx.Plugins; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Docfx.Plugins; public class DocumentException : Exception { diff --git a/src/Docfx.Plugins/DocumentExceptionExtensions.cs b/src/Docfx.Plugins/DocumentExceptionExtensions.cs index 9f4059d5c0a..6b2866a3b40 100644 --- a/src/Docfx.Plugins/DocumentExceptionExtensions.cs +++ b/src/Docfx.Plugins/DocumentExceptionExtensions.cs @@ -1,8 +1,13 @@ -namespace Docfx.Plugins; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Runtime.ExceptionServices; + +namespace Docfx.Plugins; public static class DocumentExceptionExtensions { - public static TResult[] RunAll<TElement, TResult>(this IReadOnlyList<TElement> elements, Func<TElement, TResult> func) + public static TResult[] RunAll<TElement, TResult>(this IReadOnlyList<TElement> elements, Func<TElement, TResult> func, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(elements); ArgumentNullException.ThrowIfNull(func); @@ -11,6 +16,8 @@ public static TResult[] RunAll<TElement, TResult>(this IReadOnlyList<TElement> e DocumentException firstException = null; for (int i = 0; i < elements.Count; i++) { + cancellationToken.ThrowIfCancellationRequested(); + try { results[i] = func(elements[i]); @@ -27,12 +34,12 @@ public static TResult[] RunAll<TElement, TResult>(this IReadOnlyList<TElement> e return results; } - public static void RunAll<TElement>(this IReadOnlyList<TElement> elements, Action<TElement> action) + public static void RunAll<TElement>(this IReadOnlyList<TElement> elements, Action<TElement> action, CancellationToken cancellationToken = default) { - RunAll((IEnumerable<TElement>)elements, action); + RunAll((IEnumerable<TElement>)elements, action, cancellationToken); } - public static void RunAll<TElement>(this IEnumerable<TElement> elements, Action<TElement> action) + public static void RunAll<TElement>(this IEnumerable<TElement> elements, Action<TElement> action, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(elements); ArgumentNullException.ThrowIfNull(action); @@ -40,6 +47,7 @@ public static void RunAll<TElement>(this IEnumerable<TElement> elements, Action< DocumentException firstException = null; foreach (var element in elements) { + cancellationToken.ThrowIfCancellationRequested(); try { action(element); @@ -55,12 +63,12 @@ public static void RunAll<TElement>(this IEnumerable<TElement> elements, Action< } } - public static void RunAll<TElement>(this IReadOnlyList<TElement> elements, Action<TElement> action, int parallelism) + public static void RunAll<TElement>(this IReadOnlyList<TElement> elements, Action<TElement> action, int parallelism, CancellationToken cancellationToken = default) { - RunAll((IEnumerable<TElement>)elements, action, parallelism); + RunAll((IEnumerable<TElement>)elements, action, parallelism, cancellationToken); } - public static void RunAll<TElement>(this IEnumerable<TElement> elements, Action<TElement> action, int parallelism) + public static void RunAll<TElement>(this IEnumerable<TElement> elements, Action<TElement> action, int parallelism, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(elements); ArgumentNullException.ThrowIfNull(action); @@ -69,24 +77,43 @@ public static void RunAll<TElement>(this IEnumerable<TElement> elements, Action< { throw new ArgumentOutOfRangeException(nameof(parallelism)); } - DocumentException firstException = null; - Parallel.ForEach( - elements, - new ParallelOptions { MaxDegreeOfParallelism = parallelism }, - s => - { - try + + try + { + DocumentException firstException = null; + Parallel.ForEach( + elements, + new ParallelOptions { - action(s); - } - catch (DocumentException ex) + MaxDegreeOfParallelism = parallelism, + CancellationToken = cancellationToken, + }, + s => { - Interlocked.CompareExchange(ref firstException, ex, null); - } - }); - if (firstException != null) + try + { + action(s); + } + catch (DocumentException ex) + { + Interlocked.CompareExchange(ref firstException, ex, null); + } + }); + + if (firstException != null) + { + throw new DocumentException(firstException.Message, firstException); + } + } + catch (AggregateException ex) { - throw new DocumentException(firstException.Message, firstException); + // If exceptions are OperationCanceledException. throw only first exception. + var innerExceptions = ex.Flatten().InnerExceptions.ToArray(); + if (innerExceptions.All(x => x is OperationCanceledException)) + ExceptionDispatchInfo.Throw(innerExceptions[0]); + + throw; } + } } diff --git a/src/Docfx.Plugins/FileModel.cs b/src/Docfx.Plugins/FileModel.cs index ef1131c8616..6c5b6e7adc6 100644 --- a/src/Docfx.Plugins/FileModel.cs +++ b/src/Docfx.Plugins/FileModel.cs @@ -35,7 +35,7 @@ public FileModel(FileAndType ft, object content, FileAndType original, string ke public FileAndType FileAndType { get; private set; } - public FileAndType OriginalFileAndType { get; private set; } + public FileAndType OriginalFileAndType { get; } public object Content { get; set; } @@ -85,5 +85,5 @@ public string File public string DocumentType { get; set; } - public ImmutableArray<UidDefinition> Uids { get; set; } = ImmutableArray<UidDefinition>.Empty; + public ImmutableArray<UidDefinition> Uids { get; set; } = []; } diff --git a/src/Docfx.Plugins/IDocumentBuildContext.cs b/src/Docfx.Plugins/IDocumentBuildContext.cs index dd59d17d555..be3aef4ea4f 100644 --- a/src/Docfx.Plugins/IDocumentBuildContext.cs +++ b/src/Docfx.Plugins/IDocumentBuildContext.cs @@ -94,4 +94,9 @@ public interface IDocumentBuildContext /// Custom href generator /// </summary> ICustomHrefGenerator HrefGenerator { get; } + + /// <summary> + /// The token to cancel build operation. + /// </summary> + CancellationToken CancellationToken { get; } } diff --git a/src/Docfx.Plugins/IPostProcessor.cs b/src/Docfx.Plugins/IPostProcessor.cs index d881ee761a7..1b07a79e839 100644 --- a/src/Docfx.Plugins/IPostProcessor.cs +++ b/src/Docfx.Plugins/IPostProcessor.cs @@ -19,6 +19,7 @@ public interface IPostProcessor /// </summary> /// <param name="manifest"></param> /// <param name="outputFolder">The output folder where our static website will be placed</param> + /// <param name="cancellationToken">The token to cancel operation.</param> /// <returns></returns> - Manifest Process(Manifest manifest, string outputFolder); + Manifest Process(Manifest manifest, string outputFolder, CancellationToken cancellationToken); } diff --git a/src/Docfx.Plugins/Manifest.cs b/src/Docfx.Plugins/Manifest.cs index beaad995e78..729c8b853c6 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<ManifestItem> Files { get; } = new(); + public List<ManifestItem> Files { get; init; } = new(); [JsonProperty("groups")] [JsonPropertyName("groups")] diff --git a/src/Docfx.Plugins/ManifestGroupInfo.cs b/src/Docfx.Plugins/ManifestGroupInfo.cs index a5da47d05da..0bf3b2b5edf 100644 --- a/src/Docfx.Plugins/ManifestGroupInfo.cs +++ b/src/Docfx.Plugins/ManifestGroupInfo.cs @@ -24,6 +24,9 @@ public class ManifestGroupInfo [System.Text.Json.Serialization.JsonExtensionData] public Dictionary<string, object> Metadata { get; set; } = new(); + // Default constructor for System.Text.Json deserialization + public ManifestGroupInfo() { } + public ManifestGroupInfo(GroupInfo groupInfo) { if (groupInfo == null) diff --git a/src/Docfx.Plugins/ManifestItem.cs b/src/Docfx.Plugins/ManifestItem.cs index c9711556b65..003278e7a7a 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<string, OutputFileInfo> Output { get; } = new(); + public Dictionary<string, OutputFileInfo> Output { get; init; } = new(); [JsonProperty("version")] [JsonPropertyName("version")] diff --git a/src/Docfx.Plugins/MarkupResult.cs b/src/Docfx.Plugins/MarkupResult.cs index d2772b65560..3715d4a8d23 100644 --- a/src/Docfx.Plugins/MarkupResult.cs +++ b/src/Docfx.Plugins/MarkupResult.cs @@ -9,9 +9,9 @@ public class MarkupResult { public string Html { get; set; } public ImmutableDictionary<string, object> YamlHeader { get; set; } = ImmutableDictionary<string, object>.Empty; - public ImmutableArray<string> LinkToFiles { get; set; } = ImmutableArray<string>.Empty; - public ImmutableHashSet<string> LinkToUids { get; set; } = ImmutableHashSet<string>.Empty; - public ImmutableArray<string> Dependency { get; set; } = ImmutableArray<string>.Empty; + public ImmutableArray<string> LinkToFiles { get; set; } = []; + public ImmutableHashSet<string> LinkToUids { get; set; } = []; + public ImmutableArray<string> Dependency { get; set; } = []; public ImmutableDictionary<string, ImmutableList<LinkSourceInfo>> UidLinkSources { get; set; } = ImmutableDictionary<string, ImmutableList<LinkSourceInfo>>.Empty; public ImmutableDictionary<string, ImmutableList<LinkSourceInfo>> FileLinkSources { get; set; } = ImmutableDictionary<string, ImmutableList<LinkSourceInfo>>.Empty; diff --git a/src/Docfx.Plugins/SaveResult.cs b/src/Docfx.Plugins/SaveResult.cs index 93d9a5b8283..ae1b7083b26 100644 --- a/src/Docfx.Plugins/SaveResult.cs +++ b/src/Docfx.Plugins/SaveResult.cs @@ -10,10 +10,10 @@ public class SaveResult public string DocumentType { get; set; } public string FileWithoutExtension { get; set; } public string ResourceFile { get; set; } - public ImmutableHashSet<string> LinkToUids { get; set; } = ImmutableHashSet<string>.Empty; - public ImmutableArray<string> LinkToFiles { get; set; } = ImmutableArray<string>.Empty; - public ImmutableArray<XRefSpec> XRefSpecs { get; set; } = ImmutableArray<XRefSpec>.Empty; - public ImmutableArray<XRefSpec> ExternalXRefSpecs { get; set; } = ImmutableArray<XRefSpec>.Empty; + public ImmutableHashSet<string> LinkToUids { get; set; } = []; + public ImmutableArray<string> LinkToFiles { get; set; } = []; + public ImmutableArray<XRefSpec> XRefSpecs { get; set; } = []; + public ImmutableArray<XRefSpec> ExternalXRefSpecs { get; set; } = []; public ImmutableDictionary<string, ImmutableList<LinkSourceInfo>> UidLinkSources { get; set; } = ImmutableDictionary<string, ImmutableList<LinkSourceInfo>>.Empty; public ImmutableDictionary<string, ImmutableList<LinkSourceInfo>> FileLinkSources { get; set; } = ImmutableDictionary<string, ImmutableList<LinkSourceInfo>>.Empty; } diff --git a/src/Docfx.Plugins/XRefSpec.cs b/src/Docfx.Plugins/XRefSpec.cs index 2f411cf7193..7fad3792ed8 100644 --- a/src/Docfx.Plugins/XRefSpec.cs +++ b/src/Docfx.Plugins/XRefSpec.cs @@ -1,4 +1,7 @@ -using System.Collections; +// 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; namespace Docfx.Plugins; diff --git a/src/Docfx.YamlSerialization/Docfx.YamlSerialization.csproj b/src/Docfx.YamlSerialization/Docfx.YamlSerialization.csproj index 3c86b6fca1f..4fdad984229 100644 --- a/src/Docfx.YamlSerialization/Docfx.YamlSerialization.csproj +++ b/src/Docfx.YamlSerialization/Docfx.YamlSerialization.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <PackageReference Include="YamlDotNet" /> </ItemGroup> diff --git a/src/Docfx.YamlSerialization/NodeTypeResolvers/ScalarYamlNodeTypeResolver.cs b/src/Docfx.YamlSerialization/NodeTypeResolvers/ScalarYamlNodeTypeResolver.cs index b1e3f9c9ece..bca576600d1 100644 --- a/src/Docfx.YamlSerialization/NodeTypeResolvers/ScalarYamlNodeTypeResolver.cs +++ b/src/Docfx.YamlSerialization/NodeTypeResolvers/ScalarYamlNodeTypeResolver.cs @@ -13,7 +13,7 @@ bool INodeTypeResolver.Resolve(NodeEvent nodeEvent, ref Type currentType) { if (currentType == typeof(string) || currentType == typeof(object)) { - if (nodeEvent is Scalar scalar && scalar.IsPlainImplicit) + 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 0e90f372e8e..6732bc80dda 100644 --- a/src/Docfx.YamlSerialization/ObjectDescriptors/BetterObjectDescriptor.cs +++ b/src/Docfx.YamlSerialization/ObjectDescriptors/BetterObjectDescriptor.cs @@ -30,8 +30,8 @@ static bool NeedQuote(object val) || Regexes.NullLike.IsMatch(s) || Regexes.IntegerLike.IsMatch(s) || Regexes.FloatLike.IsMatch(s) - || s.StartsWith("'", StringComparison.Ordinal) - || s.StartsWith("\"", StringComparison.Ordinal) + || s.StartsWith('\'') + || s.StartsWith('"') || s.Length > 0 && char.IsWhiteSpace(s[0]); } } diff --git a/src/Docfx.YamlSerialization/ObjectFactories/DefaultEmitObjectFactory.cs b/src/Docfx.YamlSerialization/ObjectFactories/DefaultEmitObjectFactory.cs index 0b6ab897df4..300a7cf9cbb 100644 --- a/src/Docfx.YamlSerialization/ObjectFactories/DefaultEmitObjectFactory.cs +++ b/src/Docfx.YamlSerialization/ObjectFactories/DefaultEmitObjectFactory.cs @@ -18,7 +18,7 @@ public override object Create(Type type) if (!_cache.TryGetValue(type, out Func<object> func)) { var realType = type; - if (type.IsInterface && type.IsGenericType) + if (type is {IsInterface: true, IsGenericType: true}) { var def = type.GetGenericTypeDefinition(); var args = type.GetGenericArguments(); diff --git a/src/Docfx.YamlSerialization/TypeInspectors/EmitTypeInspector.cs b/src/Docfx.YamlSerialization/TypeInspectors/EmitTypeInspector.cs index e10c23c5a03..e153787418e 100644 --- a/src/Docfx.YamlSerialization/TypeInspectors/EmitTypeInspector.cs +++ b/src/Docfx.YamlSerialization/TypeInspectors/EmitTypeInspector.cs @@ -184,8 +184,8 @@ private static Type GetGenericValueType(Type propertyType) valueType = GetGenericValueTypeCore(propertyType); } valueType ??= (from t in propertyType.GetInterfaces() - where t.IsVisible - select GetGenericValueTypeCore(t)).FirstOrDefault(x => x != null); + where t.IsVisible + select GetGenericValueTypeCore(t)).FirstOrDefault(x => x != null); return valueType; } diff --git a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleTypeInspectorSkeleton.cs b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleTypeInspectorSkeleton.cs index 964b1ea8d7e..b31bf7a6977 100644 --- a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleTypeInspectorSkeleton.cs +++ b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleTypeInspectorSkeleton.cs @@ -14,9 +14,9 @@ public abstract class ExtensibleTypeInspectorSkeleton : ITypeInspector, IExtensi public IPropertyDescriptor GetProperty(Type type, object container, string name, bool ignoreUnmatched) { var candidates = - (from p in GetProperties(type, container) - where p.Name == name - select p); + from p in GetProperties(type, container) + where p.Name == name + select p; using var enumerator = candidates.GetEnumerator(); if (!enumerator.MoveNext()) diff --git a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleYamlAttributesTypeInspector.cs b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleYamlAttributesTypeInspector.cs index 23e5a3cd026..9897f36df56 100644 --- a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleYamlAttributesTypeInspector.cs +++ b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleYamlAttributesTypeInspector.cs @@ -1,4 +1,7 @@ -using YamlDotNet.Serialization; +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using YamlDotNet.Serialization; namespace Docfx.YamlSerialization.TypeInspectors; diff --git a/src/Docfx.YamlSerialization/YamlDeserializer.cs b/src/Docfx.YamlSerialization/YamlDeserializer.cs index 3a66e0a5330..fb8f374d27f 100644 --- a/src/Docfx.YamlSerialization/YamlDeserializer.cs +++ b/src/Docfx.YamlSerialization/YamlDeserializer.cs @@ -23,7 +23,7 @@ namespace Docfx.YamlSerialization; /// </summary> public sealed class YamlDeserializer { - private static Dictionary<TagName, Type> PredefinedTagMappings { get; } = new Dictionary<TagName, Type> + private static Dictionary<TagName, Type> PredefinedTagMappings { get; } = new() { { "tag:yaml.org,2002:map", typeof(Dictionary<object, object>) }, { "tag:yaml.org,2002:bool", typeof(bool) }, @@ -39,8 +39,8 @@ public sealed class YamlDeserializer private readonly IValueDeserializer _valueDeserializer; private readonly ITypeConverter _reflectionTypeConverter = new ReflectionTypeConverter(); - public IList<INodeDeserializer> NodeDeserializers { get; private set; } - public IList<INodeTypeResolver> TypeResolvers { get; private set; } + public IList<INodeDeserializer> NodeDeserializers { get; } + public IList<INodeTypeResolver> TypeResolvers { get; } public IValueDeserializer ValueDeserializer => _valueDeserializer; private sealed class TypeDescriptorProxy : ITypeInspector diff --git a/src/docfx/Models/InitCommand.cs b/src/docfx/Models/InitCommand.cs index 6e32307fdbc..3cb1e707637 100644 --- a/src/docfx/Models/InitCommand.cs +++ b/src/docfx/Models/InitCommand.cs @@ -33,6 +33,7 @@ This utility will walk you through creating a docfx project. var docfx = new { + schema = "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json", metadata = dotnetApi ? new[] { new @@ -69,10 +70,10 @@ This utility will walk you through creating a docfx project. var files = new Dictionary<string, string> { ["docfx.json"] = JsonSerializer.Serialize(docfx, new JsonSerializerOptions() - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, - }), + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, + }).Replace("\"schema\"", "\"$schema\""), ["toc.yml"] = dotnetApi ? $""" diff --git a/src/docfx/docfx.csproj b/src/docfx/docfx.csproj index 64677f8f063..0ea31d91aab 100644 --- a/src/docfx/docfx.csproj +++ b/src/docfx/docfx.csproj @@ -19,7 +19,7 @@ --> <Target Name="RewriteDocfxTemplateFiles" AfterTargets="PackTool"> <PropertyGroup> - <!-- Select first element of TargetFrameworks as template source (e.g. `net6.0` is selected when TargetFrameworks `net6.0;net7.0;net8.0`) --> + <!-- Select first element of TargetFrameworks as template source (e.g. `net8.0` is selected when TargetFrameworks `net8.0;9.0`) --> <DocfxTemplateSourceTargetFramework>$(TargetFrameworks.Split(";")[0])</DocfxTemplateSourceTargetFramework> </PropertyGroup> <!-- If TargetFramework is selected version. Rewrite template files PackagePath.--> diff --git a/templates/build.js b/templates/build.js index b962b5ab874..20f1cae68d5 100644 --- a/templates/build.js +++ b/templates/build.js @@ -113,8 +113,8 @@ function copyToDist() { } function buildContent() { - exec(`dotnet run -f net7.0 --project ../src/docfx/docfx.csproj -- metadata ${project}/docfx.json`) - exec(`dotnet run -f net7.0 --project ../src/docfx/docfx.csproj --no-build -- build ${project}/docfx.json`) + exec(`dotnet run -f net8.0 --project ../src/docfx/docfx.csproj -- metadata ${project}/docfx.json`) + exec(`dotnet run -f net8.0 --project ../src/docfx/docfx.csproj --no-build -- build ${project}/docfx.json`) function exec(cmd) { if (spawnSync(cmd, { stdio: 'inherit', shell: true }).status !== 0) { diff --git a/templates/jest.config.js b/templates/jest.config.js deleted file mode 100644 index b996758f681..00000000000 --- a/templates/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.[tj]s$': ['ts-jest', { - tsconfig: { - allowJs: true - } - }] - }, - transformIgnorePatterns: [ - '<rootDir>/node_modules/(?!lit-html)' - ] -} diff --git a/templates/modern/src/docfx.scss b/templates/modern/src/docfx.scss index 17a001ce4ac..67c36fb035f 100644 --- a/templates/modern/src/docfx.scss +++ b/templates/modern/src/docfx.scss @@ -8,15 +8,15 @@ $container-max-widths: ( xxl: 1768px ) !default; -@import "mixins"; -@import "bootstrap/scss/bootstrap"; -@import "highlight"; -@import "layout"; -@import "nav"; -@import "toc"; -@import "markdown"; -@import "search"; -@import "dotnet"; +@use "mixins"; +@use "bootstrap/scss/bootstrap"; +@use "highlight"; +@use "layout"; +@use "nav"; +@use "toc"; +@use "markdown"; +@use "search"; +@use "dotnet"; h1, h2, diff --git a/templates/modern/src/dotnet.scss b/templates/modern/src/dotnet.scss index 2f1aded842c..30cd952dbcc 100644 --- a/templates/modern/src/dotnet.scss +++ b/templates/modern/src/dotnet.scss @@ -67,7 +67,7 @@ body[data-yaml-mime="ManagedReference"] article, body[data-yaml-mime="ApiPage"] dl.parameters { >dt { margin: 1em 0; - + &>code { margin-right: .2em; font-size: 1em; diff --git a/templates/modern/src/helper.test.ts b/templates/modern/src/helper.test.ts index 3e0a82f75c2..8e2baf10a15 100644 --- a/templates/modern/src/helper.test.ts +++ b/templates/modern/src/helper.test.ts @@ -1,25 +1,27 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +import test from 'node:test' +import assert from 'node:assert' import { breakWord, isSameURL } from './helper' test('break text', () => { - expect(breakWord('Other APIs')).toEqual(['Other APIs']) - expect(breakWord('System.CodeDom')).toEqual(['System.', 'Code', 'Dom']) - expect(breakWord('System.Collections.Dictionary<string, object>')).toEqual(['System.', 'Collections.', 'Dictionary<', 'string,', ' object>']) - expect(breakWord('https://github.com/dotnet/docfx')).toEqual(['https://github.', 'com/', 'dotnet/', 'docfx']) + assert.deepStrictEqual(breakWord('Other APIs'), ['Other APIs']) + assert.deepStrictEqual(breakWord('System.CodeDom'), ['System.', 'Code', 'Dom']) + assert.deepStrictEqual(breakWord('System.Collections.Dictionary<string, object>'), ['System.', 'Collections.', 'Dictionary<', 'string,', ' object>']) + assert.deepStrictEqual(breakWord('https://github.com/dotnet/docfx'), ['https://github.', 'com/', 'dotnet/', 'docfx']) }) test('is same URL', () => { - expect(isSameURL({ pathname: '/' }, { pathname: '/' })).toBeTruthy() - expect(isSameURL({ pathname: '/index.html' }, { pathname: '/' })).toBeTruthy() - expect(isSameURL({ pathname: '/a/index.html' }, { pathname: '/a' })).toBeTruthy() - expect(isSameURL({ pathname: '/a/index.html' }, { pathname: '/a/' })).toBeTruthy() - expect(isSameURL({ pathname: '/a' }, { pathname: '/a/' })).toBeTruthy() - expect(isSameURL({ pathname: '/a/foo.html' }, { pathname: '/a/foo' })).toBeTruthy() - expect(isSameURL({ pathname: '/a/foo/' }, { pathname: '/a/foo' })).toBeTruthy() - expect(isSameURL({ pathname: '/a/foo/index.html' }, { pathname: '/a/foo' })).toBeTruthy() - expect(isSameURL({ pathname: '/a/index.html' }, { pathname: '/A/Index.html' })).toBeTruthy() + assert.ok(isSameURL({ pathname: '/' }, { pathname: '/' })) + assert.ok(isSameURL({ pathname: '/index.html' }, { pathname: '/' })) + assert.ok(isSameURL({ pathname: '/a/index.html' }, { pathname: '/a' })) + assert.ok(isSameURL({ pathname: '/a/index.html' }, { pathname: '/a/' })) + assert.ok(isSameURL({ pathname: '/a' }, { pathname: '/a/' })) + assert.ok(isSameURL({ pathname: '/a/foo.html' }, { pathname: '/a/foo' })) + assert.ok(isSameURL({ pathname: '/a/foo/' }, { pathname: '/a/foo' })) + assert.ok(isSameURL({ pathname: '/a/foo/index.html' }, { pathname: '/a/foo' })) + assert.ok(isSameURL({ pathname: '/a/index.html' }, { pathname: '/A/Index.html' })) - expect(isSameURL({ pathname: '/a/foo/index.html' }, { pathname: '/a/bar' })).toBeFalsy() + assert.ok(!isSameURL({ pathname: '/a/foo/index.html' }, { pathname: '/a/bar' })) }) diff --git a/templates/modern/src/highlight.scss b/templates/modern/src/highlight.scss index fef6034461d..febc386cab1 100644 --- a/templates/modern/src/highlight.scss +++ b/templates/modern/src/highlight.scss @@ -3,11 +3,13 @@ * The .NET Foundation licenses this file to you under the MIT license. */ -@import "highlight.js/scss/vs"; +@use "sass:meta"; +@use "highlight.js/scss/vs"; +@use "bootstrap/scss/bootstrap"; -@include color-mode(dark) { +@include bootstrap.color-mode(dark) { /* stylelint-disable-next-line no-invalid-position-at-import-rule */ - @import "highlight.js/scss/vs2015"; + @include meta.load-css("highlight.js/scss/vs2015"); } .hljs { @@ -24,7 +26,7 @@ pre > code .line-highlight { background-color: yellow; } -@include color-mode(dark) { +@include bootstrap.color-mode(dark) { pre > code .line-highlight { background-color: #4a4a00; } diff --git a/templates/modern/src/layout.scss b/templates/modern/src/layout.scss index c053ea91821..fd0afa784db 100644 --- a/templates/modern/src/layout.scss +++ b/templates/modern/src/layout.scss @@ -3,6 +3,8 @@ * The .NET Foundation licenses this file to you under the MIT license. */ +@use "bootstrap/scss/bootstrap"; + $header-height: 60px; $footer-height: 60px; $main-padding-top: 1.6rem; @@ -10,7 +12,7 @@ $main-padding-bottom: 2rem; // Makes a div sticky to top @mixin sticky-top { - @include media-breakpoint-up(md) { + @include bootstrap.media-breakpoint-up(md) { position: sticky; top: 0; z-index: 1030; @@ -18,7 +20,7 @@ $main-padding-bottom: 2rem; } @mixin stick-to-header { - @include media-breakpoint-up(md) { + @include bootstrap.media-breakpoint-up(md) { position: sticky; top: calc($header-height + $main-padding-top); } @@ -43,7 +45,7 @@ body[data-layout="landing"] { @include sticky-top; - @include media-breakpoint-up(md) { + @include bootstrap.media-breakpoint-up(md) { height: $header-height; } @@ -82,7 +84,7 @@ body[data-layout="landing"] { flex: 1; } - @include media-breakpoint-up(md) { + @include bootstrap.media-breakpoint-up(md) { >article [id] { scroll-margin-top: $header-height; } @@ -140,7 +142,7 @@ body[data-layout="landing"] { @include stick-to-header; - @include media-breakpoint-down(md) { + @include bootstrap.media-breakpoint-down(md) { flex: 0; } @@ -161,7 +163,7 @@ body[data-layout="landing"] { display: flex; align-items: flex-start; margin-top: .5rem; - + >button { margin-top: -.65em; margin-left: -.8em @@ -177,11 +179,11 @@ body[data-layout="landing"] { display: flex; } - @include media-breakpoint-down(lg) { + @include bootstrap.media-breakpoint-down(lg) { margin: 0 1rem; } - @include media-breakpoint-down(md) { + @include bootstrap.media-breakpoint-down(md) { margin: 0; } } @@ -190,7 +192,10 @@ body[data-layout="landing"] { display: block; width: 230px; max-height: calc(100vh - $header-height - $main-padding-top); + + /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */ overflow-x: hidden; + /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */ overflow-y: auto; @include stick-to-header; diff --git a/templates/modern/src/markdown.scss b/templates/modern/src/markdown.scss index 872d40b73b7..23c801606f4 100644 --- a/templates/modern/src/markdown.scss +++ b/templates/modern/src/markdown.scss @@ -3,6 +3,9 @@ * The .NET Foundation licenses this file to you under the MIT license. */ +@use "bootstrap/scss/bootstrap"; +@use "mixins"; + /* External link icon */ a.external[href]::after { font-family: bootstrap-icons; @@ -16,15 +19,15 @@ a.external[href]::after { blockquote { border-style: solid; border-width: 0 0 0 3px; - border-color: $secondary-border-subtle; + border-color: bootstrap.$secondary-border-subtle; margin: 1.2em 0 2em; padding: 0 .8em; display: block } -@include color-mode(dark) { +@include bootstrap.color-mode(dark) { blockquote { - border-color: $secondary-border-subtle-dark; + border-color: bootstrap.$secondary-border-subtle-dark; } } @@ -39,7 +42,7 @@ blockquote { font-size: 1rem; &::before { - @include adjust-icon; + @include mixins.adjust-icon; } } diff --git a/templates/modern/src/nav.scss b/templates/modern/src/nav.scss index dc2657bfab0..7b1447b5f43 100644 --- a/templates/modern/src/nav.scss +++ b/templates/modern/src/nav.scss @@ -3,11 +3,14 @@ * The .NET Foundation licenses this file to you under the MIT license. */ +@use "bootstrap/scss/bootstrap"; +@use "mixins"; + .breadcrumb { font-size: 14px; a { - @include underline-on-hover; + @include mixins.underline-on-hover; } } @@ -84,7 +87,7 @@ } } - @include media-breakpoint-down(md) { + @include bootstrap.media-breakpoint-down(md) { #navbar { flex-direction: column; align-items: flex-start; @@ -137,7 +140,7 @@ margin: .4rem 0; a { - @include underline-on-hover; + @include mixins.underline-on-hover; } } } @@ -147,13 +150,13 @@ margin-top: 2rem; a.edit-link { - @include underline-on-hover; + @include mixins.underline-on-hover; &::before { content: "\F4CA"; display: inline-block; - @include adjust-icon; + @include mixins.adjust-icon; } } } diff --git a/templates/modern/src/nav.ts b/templates/modern/src/nav.ts index 9660b0a5534..7ff75dcce26 100644 --- a/templates/modern/src/nav.ts +++ b/templates/modern/src/nav.ts @@ -142,7 +142,9 @@ function findActiveItem(items: (NavItem | NavItemContainer)[]): NavItem { continue } const prefix = commonUrlPrefix(url, item.href) - if (prefix > maxPrefix) { + if (prefix === maxPrefix) { + activeItem = undefined + } else if (prefix > maxPrefix) { maxPrefix = prefix activeItem = item } diff --git a/templates/modern/src/search.scss b/templates/modern/src/search.scss index 19b93549730..a385445e181 100644 --- a/templates/modern/src/search.scss +++ b/templates/modern/src/search.scss @@ -3,12 +3,14 @@ * The .NET Foundation licenses this file to you under the MIT license. */ +@use "bootstrap/scss/bootstrap"; + #search-results { line-height: 1.8; >.search-list { font-size: .9em; - color: $secondary; + color: bootstrap.$secondary; } >.sr-items { diff --git a/templates/modern/src/toc.scss b/templates/modern/src/toc.scss index 22d112769a6..70a7a03a900 100644 --- a/templates/modern/src/toc.scss +++ b/templates/modern/src/toc.scss @@ -3,6 +3,9 @@ * The .NET Foundation licenses this file to you under the MIT license. */ +@use "bootstrap/scss/bootstrap"; +@use "mixins"; + $expand-stub-width: .85rem; .toc { @@ -30,7 +33,7 @@ $expand-stub-width: .85rem; li > a { display: inline; - @include underline-on-hover; + @include mixins.underline-on-hover; } li > ul { @@ -90,17 +93,17 @@ $expand-stub-width: .85rem; >.no-result { font-size: .9em; - color: $secondary; + color: bootstrap.$secondary; } a.pdf-link { - @include underline-on-hover; + @include mixins.underline-on-hover; &::before { content: "\F756"; display: inline-block; - @include adjust-icon; + @include mixins.adjust-icon; } } } diff --git a/templates/modern/src/toc.ts b/templates/modern/src/toc.ts index 390f8d4c75a..2d2904cdb7e 100644 --- a/templates/modern/src/toc.ts +++ b/templates/modern/src/toc.ts @@ -94,7 +94,7 @@ export async function renderToc(): Promise<TocNode[]> { function renderToc() { render(html` - ${renderTocFilter()} + ${renderTocFilter()} <div class="flex-fill overflow-y-auto">${renderTocNodes(items) || renderNoFilterResult()}</div> ${renderDownloadPdf()}`, tocContainer) } diff --git a/templates/package-lock.json b/templates/package-lock.json index 7444c8f3821..2dd1fcb7bfb 100644 --- a/templates/package-lock.json +++ b/templates/package-lock.json @@ -1,7 +1,7 @@ { "name": "@docfx/template", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -23,66 +23,86 @@ "highlight.js": "^11.10.0", "idb-keyval": "^6.2.1", "jquery": "3.7.0", - "lit-html": "^3.2.0", + "lit-html": "^3.2.1", "lunr": "2.3.9", "lunr-languages": "^1.14.0", "mathjax": "^3.2.2", - "mermaid": "^10.9.1" + "mermaid": "^11.4.0", + "tsx": "^4.19.2" }, "devDependencies": { - "@types/jest": "^29.5.12", "@types/lunr": "^2.3.7", - "@typescript-eslint/eslint-plugin": "^8.4.0", - "@typescript-eslint/parser": "^8.4.0", - "browser-sync": "^3.0.2", - "esbuild": "~0.23.1", + "@typescript-eslint/eslint-plugin": "^8.12.2", + "@typescript-eslint/parser": "^8.12.2", + "browser-sync": "^3.0.3", + "esbuild": "~0.24.0", "esbuild-sass-plugin": "~3.3.1", - "eslint": "^8.57.0", + "eslint": "^8.57.1", "eslint-config-standard": "^17.1.0", - "jest": "^29.7.0", - "stylelint": "^15.10.3", - "stylelint-config-standard-scss": "^11.1.0", - "ts-jest": "^29.2.5", - "typescript": "^5.5.4", + "stylelint": "^16.10.0", + "stylelint-config-standard-scss": "^13.1.0", + "typescript": "^5.6.3", "yargs": "^17.7.2" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.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==", + "dependencies": { + "package-manager-detector": "^0.2.0", + "tinyexec": "^0.3.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "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==", + "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==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/highlight": "^7.25.7", + "picocolors": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "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==", + "dev": true, + "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/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@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/@babel/code-frame/node_modules/ansi-styles": { + "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==", @@ -94,7 +114,7 @@ "node": ">=4" } }, - "node_modules/@babel/code-frame/node_modules/chalk": { + "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==", @@ -108,7 +128,7 @@ "node": ">=4" } }, - "node_modules/@babel/code-frame/node_modules/color-convert": { + "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==", @@ -117,13 +137,22 @@ "color-name": "1.1.3" } }, - "node_modules/@babel/code-frame/node_modules/color-name": { + "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/code-frame/node_modules/has-flag": { + "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==", @@ -132,7 +161,7 @@ "node": ">=4" } }, - "node_modules/@babel/code-frame/node_modules/supports-color": { + "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==", @@ -144,12261 +173,887 @@ "node": ">=4" } }, - "node_modules/@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "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==", "dev": true, - "engines": { - "node": ">=6.9.0" + "peer": true + }, + "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==", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" } }, - "node_modules/@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "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==" }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "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==" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" + }, + "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==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "engines": { - "node": ">=6.0" + "node": ">=18" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.2" } }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "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==", "dev": true, - "bin": { - "json5": "lib/cli.js" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/core/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/@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==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" } }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "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==", "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.1.0" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, + "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==" + }, + "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==", "engines": { - "node": ">=6.0.0" + "node": ">=6" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, + "node_modules/@default/highlight.js": { + "name": "highlight.js", + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", + "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=12.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, + "node_modules/@default/lunr": { + "name": "lunr", + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "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==" + }, + "node_modules/@default/twbs-pagination": { + "name": "twbs-pagination", + "version": "1.3.1", + "resolved": "git+ssh://git@github.com/josecebe/twbs-pagination.git#a0ceda4b492030ca12081ce08c1acca1d295c0ed", "dependencies": { - "yallist": "^3.0.2" + "jquery": ">=1.7.0" } }, - "node_modules/@babel/helper-compilation-targets/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/@default/url": { + "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==" + }, + "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==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "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==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "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": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "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, - "dependencies": { - "@babel/types": "^7.22.5" - }, "engines": { - "node": ">=6.9.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "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": { - "@babel/types": "^7.18.6" + "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" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "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": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - }, - "engines": { - "node": ">=6.9.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "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": { - "@babel/types": "^7.22.5" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "node": "*" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "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, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "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": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.10.0" } }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "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": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "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/@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": { - "color-convert": "^1.9.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" } }, - "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/@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, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "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==", + "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/@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" - } + "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/@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==", - "dev": true, + "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==", "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" + "@antfu/install-pkg": "^0.4.0", + "@antfu/utils": "^0.7.10", + "@iconify/types": "^2.0.0", + "debug": "^4.3.6", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.0", + "mlly": "^1.7.1" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, + "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": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "langium": "3.0.0" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 8" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 8" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "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, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 8" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@parcel/watcher": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, + "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" + } + }, + "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==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "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 + }, + "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/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "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==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/node": "*" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "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==" + }, + "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==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/d3-selection": "*" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, + "node_modules/@types/d3-brush": { + "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==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/d3-selection": "*" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, + "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==" + }, + "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==" + }, + "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==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/d3-array": "*", + "@types/geojson": "*" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, + "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==" + }, + "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==" + }, + "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==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/d3-selection": "*" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, + "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==" + }, + "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==" + }, + "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==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/d3-dsv": "*" } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, + "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==" + }, + "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==" + }, + "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==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" + "@types/geojson": "*" } }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, + "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==" + }, + "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==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" + "@types/d3-color": "*" } }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@braintree/sanitize-url": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz", - "integrity": "sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==" - }, - "node_modules/@bufbuild/protobuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.7.2.tgz", - "integrity": "sha512-i5GE2Dk5ekdlK1TR7SugY4LWRrKSfb5T1Qn4unpIMbfxoeGKERKQ59HG3iYewacGD10SR7UzevfPnh6my4tNmQ==", - "dev": true, - "peer": true - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz", - "integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^2.2.0" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz", - "integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": "^14 || ^16 || >=18" - } - }, - "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz", - "integrity": "sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.3.1", - "@csstools/css-tokenizer": "^2.2.0" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz", - "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^6.0.13" - } - }, - "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==" - }, - "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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@default/highlight.js": { - "name": "highlight.js", - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", - "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@default/lunr": { - "name": "lunr", - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "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==" - }, - "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" - } - }, - "node_modules/@default/url": { - "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==" - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "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" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "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" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "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" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", - "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "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, - "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, - "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, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "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/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/d3-scale": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", - "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" - }, - "node_modules/@types/d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" - }, - "node_modules/@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.12", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "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==", - "dev": true, - "peer": true - }, - "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 - }, - "node_modules/@types/mdast": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz", - "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "node_modules/@types/node": { - "version": "18.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", - "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" - }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - }, - "node_modules/@types/yargs": { - "version": "17.0.22", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", - "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", - "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/type-utils": "8.4.0", - "@typescript-eslint/utils": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "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 - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", - "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", - "debug": "^4.3.4" - }, - "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" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", - "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", - "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/utils": "8.4.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/types": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", - "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", - "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", - "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" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/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==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", - "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0" - }, - "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" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", - "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-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/@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==" - }, - "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, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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==" - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "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 - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "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, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/batch": { - "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 - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ] - }, - "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/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", - "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", - "dev": true, - "dependencies": { - "browser-sync-client": "^3.0.2", - "browser-sync-ui": "^3.0.2", - "bs-recipes": "1.3.4", - "chalk": "4.1.2", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "^1.0.33", - "yargs": "^17.3.1" - }, - "bin": { - "browser-sync": "dist/bin.js" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/browser-sync-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", - "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", - "dev": true, - "dependencies": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/browser-sync-ui": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", - "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", - "dev": true, - "dependencies": { - "async-each-series": "0.1.1", - "chalk": "4.1.2", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" - } - }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "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 - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "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, - "peer": true - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "peer": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "peer": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", - "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", - "dev": true, - "dependencies": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001466", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001466.tgz", - "integrity": "sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "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, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "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 - }, - "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 - }, - "node_modules/commander": { - "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 - }, - "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 - }, - "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, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cose-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", - "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", - "dependencies": { - "layout-base": "^1.0.0" - } - }, - "node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", - "dev": true, - "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-functions-list": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz", - "integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==", - "dev": true, - "engines": { - "node": ">=12.22" - } - }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cytoscape": { - "version": "3.28.1", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.1.tgz", - "integrity": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==", - "dependencies": { - "heap": "^0.2.6", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/cytoscape-cose-bilkent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", - "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", - "dependencies": { - "cose-base": "^1.0.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/d3": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.4.tgz", - "integrity": "sha512-q2WHStdhiBtD8DMmhDPyJmXUxr6VWRngKyiJ5EfXMxPw+tqT6BhNjhJZ4w3BHsNm3QoVfZLY8Orq/qPFczwKRA==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.3.tgz", - "integrity": "sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv/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==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/d3-dsv/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "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==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-sankey": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", - "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", - "dependencies": { - "d3-array": "1 - 2", - "d3-shape": "^1.2.0" - } - }, - "node_modules/d3-sankey/node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "dependencies": { - "internmap": "^1.0.0" - } - }, - "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==" - }, - "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==", - "dependencies": { - "d3-path": "1" - } - }, - "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==" - }, - "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==", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dagre-d3-es": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", - "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", - "dependencies": { - "d3": "^7.8.2", - "lodash-es": "^4.17.21" - } - }, - "node_modules/dayjs": { - "version": "1.11.7", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", - "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "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 - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "peer": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "dependencies": { - "robust-predicates": "^3.0.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", - "dev": true, - "bin": { - "dev-ip": "lib/dev-ip.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dompurify": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.5.tgz", - "integrity": "sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==" - }, - "node_modules/easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "dependencies": { - "lodash": "^4.17.10" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "chalk": "4.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ee-first": { - "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 - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.331", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.331.tgz", - "integrity": "sha512-tdtr9y9oJl8VDiS+HeB6e/JDJqdDGjIk3yRfEMHm5rDnWQ/D5SbafybAayInxolbfbH6pouV5g7ZUAwE/WVtHw==", - "dev": true - }, - "node_modules/elkjs": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.1.tgz", - "integrity": "sha512-JWKDyqAdltuUcyxaECtYG6H4sqysXSLeoXuGUBfRNESMTkj+w+qdb0jya8Z/WI0jVd03WQtCGhS6FOFtlhD5FQ==" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "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 - }, - "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, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", - "dev": true, - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1" - }, - "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/engine.io-client": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", - "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/engine.io-client/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/engine.io/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", - "dev": true, - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "peer": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "peer": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "dev": true, - "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/esbuild-sass-plugin": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-3.3.1.tgz", - "integrity": "sha512-SnO1ls+d52n6j8gRRpjexXI8MsHEaumS0IdDHaYM29Y6gakzZYMls6i9ql9+AWMSQk/eryndmUpXEgT34QrX1A==", - "dev": true, - "dependencies": { - "resolve": "^1.22.8", - "safe-identifier": "^0.4.2", - "sass": "^1.71.1" - }, - "peerDependencies": { - "esbuild": ">=0.20.1", - "sass-embedded": "^1.71.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "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 - }, - "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/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "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", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "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" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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==", - "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" - } - ], - "engines": { - "node": ">=12.0.0" - }, - "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.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - } - }, - "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" - } - }, - "node_modules/eslint-import-resolver-node/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==", - "dev": true, - "peer": true - }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "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-module-utils/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==", - "dev": true, - "peer": true - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "peer": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "peer": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "dev": true, - "peer": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/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==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-n": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.6.1.tgz", - "integrity": "sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==", - "dev": true, - "peer": true, - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", - "dev": true, - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "peer": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "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, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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 - }, - "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==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "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 - }, - "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 - }, - "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, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "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==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/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==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", - "dev": true, - "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.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "peer": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "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, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "peer": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "peer": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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==", - "dev": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "peer": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "peer": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" - }, - "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==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "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, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==" - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "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 - }, - "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 - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "peer": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "peer": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "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-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "peer": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jake": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", - "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jquery": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz", - "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==" - }, - "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 - }, - "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, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "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 - }, - "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 - }, - "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" - } - }, - "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, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/katex": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", - "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "dependencies": { - "commander": "^8.3.0" - }, - "bin": { - "katex": "cli.js" - } - }, - "node_modules/katex/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/khroma": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.0.0.tgz", - "integrity": "sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==" - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/known-css-properties": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", - "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", - "dev": true - }, - "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==" - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "node_modules/lines-and-columns": { - "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 - }, - "node_modules/lit-html": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.0.tgz", - "integrity": "sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==", - "dependencies": { - "@types/trusted-types": "^2.0.2" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "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==" - }, - "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 - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "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 - }, - "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 - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "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==" - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==" - }, - "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, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.0.tgz", - "integrity": "sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true - }, - "node_modules/meow": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", - "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.2", - "camelcase-keys": "^7.0.0", - "decamelize": "^5.0.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.2", - "read-pkg-up": "^8.0.0", - "redent": "^4.0.0", - "trim-newlines": "^4.0.2", - "type-fest": "^1.2.2", - "yargs-parser": "^20.2.9" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mermaid": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.1.tgz", - "integrity": "sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==", - "dependencies": { - "@braintree/sanitize-url": "^6.0.1", - "@types/d3-scale": "^4.0.3", - "@types/d3-scale-chromatic": "^3.0.0", - "cytoscape": "^3.28.1", - "cytoscape-cose-bilkent": "^4.1.0", - "d3": "^7.4.0", - "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.10", - "dayjs": "^1.11.7", - "dompurify": "^3.0.5", - "elkjs": "^0.9.0", - "katex": "^0.16.9", - "khroma": "^2.0.0", - "lodash-es": "^4.17.21", - "mdast-util-from-markdown": "^1.3.0", - "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.3", - "ts-dedent": "^2.2.0", - "uuid": "^9.0.0", - "web-worker": "^1.2.0" - } - }, - "node_modules/micromark": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", - "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", - "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-destination": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", - "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", - "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", - "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", - "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", - "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", - "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", - "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", - "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", - "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", - "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", - "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", - "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", - "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", - "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", - "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", - "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", - "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", - "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", - "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/micromark/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true, - "bin": { - "mime": "cli.js" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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/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/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "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 - }, - "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, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/non-layered-tidy-tree-layout": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", - "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "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/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "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, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "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 - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dev": true, - "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-media-query-parser": { - "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 - }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", - "dev": true - }, - "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-scss": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-scss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.4.29" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "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 - }, - "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, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", - "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/read-pkg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", - "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", - "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", - "dev": true, - "dependencies": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/redent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", - "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", - "dev": true, - "dependencies": { - "indent-string": "^5.0.0", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", - "dev": true, - "dependencies": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "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==", - "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.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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" - } - ], - "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==", - "dev": true, - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "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/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.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==" - }, - "node_modules/sass": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", - "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.71.1.tgz", - "integrity": "sha512-nOmqErO1zd1wjvTbDscLZZ3fv5JPeQfaKuo0UCjYm7qPbpQcycp0l3nFZHxovjLjCetJ9IrLOADdznFYKV0f1A==", - "dev": true, - "peer": true, - "dependencies": { - "@bufbuild/protobuf": "^1.0.0", - "buffer-builder": "^0.2.0", - "immutable": "^4.0.0", - "rxjs": "^7.4.0", - "supports-color": "^8.1.1", - "varint": "^6.0.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "optionalDependencies": { - "sass-embedded-android-arm": "1.71.1", - "sass-embedded-android-arm64": "1.71.1", - "sass-embedded-android-ia32": "1.71.1", - "sass-embedded-android-x64": "1.71.1", - "sass-embedded-darwin-arm64": "1.71.1", - "sass-embedded-darwin-x64": "1.71.1", - "sass-embedded-linux-arm": "1.71.1", - "sass-embedded-linux-arm64": "1.71.1", - "sass-embedded-linux-ia32": "1.71.1", - "sass-embedded-linux-musl-arm": "1.71.1", - "sass-embedded-linux-musl-arm64": "1.71.1", - "sass-embedded-linux-musl-ia32": "1.71.1", - "sass-embedded-linux-musl-x64": "1.71.1", - "sass-embedded-linux-x64": "1.71.1", - "sass-embedded-win32-ia32": "1.71.1", - "sass-embedded-win32-x64": "1.71.1" - } - }, - "node_modules/sass-embedded-android-arm": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.71.1.tgz", - "integrity": "sha512-Pq6TlRg9lIYsZDo9XNQZnSg6grQKzBG3ssdv0W1SnYS1BzGKwbg8XnlUA/pVxK76BKEm8i+0DA4y8cZ8A3tmpw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-arm64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.71.1.tgz", - "integrity": "sha512-a7wJ1MM6sBwcM/8vIvvnwc9spoeNimNeXZpN9baSV4Ylthmr4GkTYYtf96Z/XYLdG5KBgYlxMs5T3OgqafdUMg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-ia32": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.71.1.tgz", - "integrity": "sha512-tn3WZNdKQtr/DSzl4cQIDZkTO3JuuMxPvM/T+U7gBFyhU62NyF5wvwBnuh+BN3iaMowfkSknzCZCjyJDwnkDjw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.71.1.tgz", - "integrity": "sha512-l72Pqxfb/pArpOLyWsuL9s8ODWupRGATWTPwUT/GjVdSQJO/lQL5DopXb55Cwh2T7t2G10e+uXTEMKz0qngoWQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-darwin-arm64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.71.1.tgz", - "integrity": "sha512-3eZDAcJBwoG0Kyasa/EbaKt1Jn2y0GHvCd0Oas/VtMsYL+/6abiCO1l8YltdxER4jvuHUKE2Ow7J6T6sC+vVQQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-darwin-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.71.1.tgz", - "integrity": "sha512-/9FtMPVdQalhsRCD9opNIlZqJKe7veCjWsdj0J9utbc2bNCTYswXNQtC/jWJTjE9/gQ0+w5zwg9+fQzltdYh1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-arm": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.71.1.tgz", - "integrity": "sha512-l7NEn0gji6GTN+p00DP2zZl9SE501Zy5obTA3beiD6+vQy7lCEC6vpNi/ZrlC6eRmgY2OKSBB2lfW7KSej9Hkg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-arm64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.71.1.tgz", - "integrity": "sha512-zUSmqeqcgTb3VjZggk9a9xB2ZGaAe/TYAi/vYRPNLY/f7dZSrsa9Ejo+LUm2aNl6V8hFzMz7BpoKsaRQJnb9GQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-ia32": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.71.1.tgz", - "integrity": "sha512-NvzSljfc/Kw9/0CSn91AsINV2nh8vxhFe2cKexPMwvAqv/etU84dJMfJejxPJ39PmMqT1KvC4G+Qt2+6Mpe7oQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.71.1.tgz", - "integrity": "sha512-1O37K5EgSeQjCBizIF9xdZJw3mh5XYHOnsB4+65CLZg4ac84ragjFv9d9rYhwGs9QSgg1MoOv7VWnEIxQ8Pp9Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.71.1.tgz", - "integrity": "sha512-Agtf6BcYQ0mt+jVDcRcN7bDPrMAQOWMeX15NTlQH1rO8voObLo6ThVl2NUkiZyyVmu7a6YOrCxpGBVAK1cLGOg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-ia32": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.71.1.tgz", - "integrity": "sha512-Cd5sJkt70bSlYEXUSj9mPMKZLzDL8LGcBKUIfQRrcBKjmzD2Va2eLq4Zati9Xzt54unuDp4bAUUTyvQmjLzFmA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.71.1.tgz", - "integrity": "sha512-uVfYms/lf4QVSvtQXkSm+Bq3wVsvkRMI30ca82rRwpwebxSaTbUr+uLnskh8QvbyfsbMyrzZQU0SCrO3uCua1A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.71.1.tgz", - "integrity": "sha512-7BXniYic16+MQx0InyH8OXburLPGMRYRWf0l/t/fRkNkUHWFl7NQPAX0yvj73c/PKOdaYEUY6isNB4OGUGtZHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-win32-ia32": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.71.1.tgz", - "integrity": "sha512-ZDhL6hvekeKDkZ1wUj6wN0thrB/7wOO8HaQoagk+pKaHoa0Py7OLR/m9mQM8S13mZpUQduNsznmXV1fOss4GOg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass.bat" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-win32-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.71.1.tgz", - "integrity": "sha512-ecWP1TFUA9ujOuOTJfWC1iZsSZOdQy5OxIEHqoERxunyjwzkiTxfN8J7Y4bNQ5uwb4K0brxWyIM8Fq+UgDqcZA==", - "cpu": [ - "arm64", - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass.bat" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded/node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", - "dev": true, - "peer": true - }, - "node_modules/sass-embedded/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/sass/node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", - "dev": true - }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/send/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 - }, - "node_modules/send/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "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 - }, - "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, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/server-destroy": { - "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 - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "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, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "cors": "~2.8.5", - "debug": "~4.3.2", - "engine.io": "~6.5.2", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", - "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", - "dev": true, - "dependencies": { - "debug": "~4.3.4", - "ws": "~8.17.1" - } - }, - "node_modules/socket.io-adapter/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io-adapter/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/socket.io-client": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", - "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.5.2", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-client/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io-client/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": 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, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io-parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/socket.io/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">= 0.6" - } - }, - "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, - "dependencies": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "bin": { - "throttleproxy": "bin/throttleproxy.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "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-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true - }, - "node_modules/stylelint": { - "version": "15.10.3", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.3.tgz", - "integrity": "sha512-aBQMMxYvFzJJwkmg+BUUg3YfPyeuCuKo2f+LOw7yYbU8AZMblibwzp9OV4srHVeQldxvSFdz0/Xu8blq2AesiA==", - "dev": true, - "dependencies": { - "@csstools/css-parser-algorithms": "^2.3.1", - "@csstools/css-tokenizer": "^2.2.0", - "@csstools/media-query-list-parser": "^2.1.4", - "@csstools/selector-specificity": "^3.0.0", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^8.2.0", - "css-functions-list": "^3.2.0", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.1", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^5.2.4", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.28.0", - "mathml-tag-names": "^2.1.3", - "meow": "^10.1.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.27", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "stylelint": "bin/stylelint.mjs" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-config-recommended": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz", - "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", - "dev": true, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "stylelint": "^15.10.0" - } - }, - "node_modules/stylelint-config-recommended-scss": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-13.1.0.tgz", - "integrity": "sha512-8L5nDfd+YH6AOoBGKmhH8pLWF1dpfY816JtGMePcBqqSsLU+Ysawx44fQSlMOJ2xTfI9yTGpup5JU77c17w1Ww==", - "dev": true, - "dependencies": { - "postcss-scss": "^4.0.9", - "stylelint-config-recommended": "^13.0.0", - "stylelint-scss": "^5.3.0" - }, - "peerDependencies": { - "postcss": "^8.3.3", - "stylelint": "^15.10.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - } - } - }, - "node_modules/stylelint-config-standard": { - "version": "34.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-34.0.0.tgz", - "integrity": "sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==", - "dev": true, - "dependencies": { - "stylelint-config-recommended": "^13.0.0" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "stylelint": "^15.10.0" - } - }, - "node_modules/stylelint-config-standard-scss": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-11.1.0.tgz", - "integrity": "sha512-5gnBgeNTgRVdchMwiFQPuBOtj9QefYtfXiddrOMJA2pI22zxt6ddI2s+e5Oh7/6QYl7QLJujGnaUR5YyGq72ow==", - "dev": true, - "dependencies": { - "stylelint-config-recommended-scss": "^13.1.0", - "stylelint-config-standard": "^34.0.0" - }, - "peerDependencies": { - "postcss": "^8.3.3", - "stylelint": "^15.10.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - } - } - }, - "node_modules/stylelint-scss": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.0.tgz", - "integrity": "sha512-Sc7S1uWqStMc99NREsHNxpxHHFRvjo2pWILNl/UCwWO8PxhODK8qbJH0GHWIALxl6BD5rwJL4cSm4jk36hi6fg==", - "dev": true, - "dependencies": { - "known-css-properties": "^0.28.0", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "stylelint": "^14.5.1 || ^15.0.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 - }, - "node_modules/stylelint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/stylelint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylis": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", - "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" - }, - "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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", - "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "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/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/trim-newlines": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", - "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "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==", - "engines": { - "node": ">=6.10" - } - }, - "node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", - "dev": true, - "dependencies": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.6.3", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true, - "peer": true - }, - "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, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz", - "integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "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, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "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, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "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, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/uvu/node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "dev": true, - "peer": true - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/web-worker": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", - "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" - }, - "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, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "peer": true, - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "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/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/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, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", - "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "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, - "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/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, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true - }, - "@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "requires": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true - }, - "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - } - }, - "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - } - }, - "@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@braintree/sanitize-url": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz", - "integrity": "sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==" - }, - "@bufbuild/protobuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.7.2.tgz", - "integrity": "sha512-i5GE2Dk5ekdlK1TR7SugY4LWRrKSfb5T1Qn4unpIMbfxoeGKERKQ59HG3iYewacGD10SR7UzevfPnh6my4tNmQ==", - "dev": true, - "peer": true - }, - "@csstools/css-parser-algorithms": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz", - "integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==", - "dev": true, - "requires": {} - }, - "@csstools/css-tokenizer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz", - "integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==", - "dev": true - }, - "@csstools/media-query-list-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz", - "integrity": "sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw==", - "dev": true, - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz", - "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==", - "dev": true, - "requires": {} - }, - "@default/anchor-js": { - "version": "npm:anchor-js@5.0.0", - "resolved": "https://registry.npmjs.org/anchor-js/-/anchor-js-5.0.0.tgz", - "integrity": "sha512-2bOqCsBIXAYhjAN3iI4QevoAJtB2gRWAiY9P3P7CVW8lIjA3Dl6ldhDlWeeQvCHif+V5vIndfLOag/5I8tzTzA==" - }, - "@default/bootstrap": { - "version": "npm:bootstrap@3.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", - "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==" - }, - "@default/highlight.js": { - "version": "npm:highlight.js@11.8.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", - "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==" - }, - "@default/lunr": { - "version": "npm:lunr@2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "@default/mark.js": { - "version": "npm:mark.js@8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==" - }, - "@default/twbs-pagination": { - "version": "git+ssh://git@github.com/josecebe/twbs-pagination.git#a0ceda4b492030ca12081ce08c1acca1d295c0ed", - "from": "@default/twbs-pagination@josecebe/twbs-pagination#1.3.1", - "requires": { - "jquery": ">=1.7.0" - } - }, - "@default/url": { - "version": "npm:@websanova/url@2.6.3", - "resolved": "https://registry.npmjs.org/@websanova/url/-/url-2.6.3.tgz", - "integrity": "sha512-+gLI+9nIVPg3X4VcC30MUrGd9/DmYPla2ryzl7qKzIbH07wgsgy99H2WRsSFweVgV4FLkTHEpClj1//t0u+FLw==" - }, - "@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "dev": true, - "optional": true - }, - "@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==", - "dev": true, - "optional": true - }, - "@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, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@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 - }, - "@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - } - }, - "@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "requires": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - } - }, - "@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "requires": { - "jest-get-type": "^29.6.3" - } - }, - "@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - } - }, - "@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", - "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - } - } - } - }, - "@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, - "@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "requires": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "dependencies": { - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - } - } - }, - "@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { + "node_modules/@types/d3-path": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@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, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@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 - }, - "@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, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" }, - "@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } + "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==" }, - "@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.0" - } + "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==" }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true + "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==" }, - "@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "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==", + "dependencies": { + "@types/d3-time": "*" } }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } + "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==" }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } + "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==" }, - "@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" + "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==", + "dependencies": { + "@types/d3-path": "*" } }, - "@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 - }, - "@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dev": true, - "requires": { - "@types/node": "*" - } + "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==" }, - "@types/d3-scale": { + "node_modules/@types/d3-time-format": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", - "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", - "requires": { - "@types/d3-time": "*" - } - }, - "@types/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" - }, - "@types/d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==" }, - "@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", - "requires": { - "@types/ms": "*" - } + "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==" }, - "@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "requires": { - "@types/node": "*" + "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==", + "dependencies": { + "@types/d3-selection": "*" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" + "node_modules/@types/d3-zoom": { + "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==", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" + "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": "*" } }, - "@types/jest": { - "version": "29.5.12", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", - "dev": true, - "requires": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } + "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==" }, - "@types/json5": { + "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==", "dev": true, "peer": true }, - "@types/lunr": { + "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 }, - "@types/mdast": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz", - "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==", - "requires": { - "@types/unist": "*" - } - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "@types/node": { - "version": "18.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", - "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" - }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - }, - "@types/yargs": { - "version": "17.0.22", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", - "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", + "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==", "dev": true, - "requires": { - "@types/yargs-parser": "*" + "dependencies": { + "undici-types": "~6.19.2" } }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true + "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==" }, - "@typescript-eslint/eslint-plugin": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", - "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.2.tgz", + "integrity": "sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==", "dev": true, - "requires": { + "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/type-utils": "8.4.0", - "@typescript-eslint/utils": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/scope-manager": "8.12.2", + "@typescript-eslint/type-utils": "8.12.2", + "@typescript-eslint/utils": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "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": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", - "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", + "node_modules/@typescript-eslint/parser": { + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.12.2.tgz", + "integrity": "sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==", "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "dependencies": { + "@typescript-eslint/scope-manager": "8.12.2", + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/typescript-estree": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2", "debug": "^4.3.4" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "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" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true } } }, - "@typescript-eslint/scope-manager": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", - "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.12.2.tgz", + "integrity": "sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==", "dev": true, - "requires": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0" + "dependencies": { + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "@typescript-eslint/type-utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", - "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.12.2.tgz", + "integrity": "sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==", "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/utils": "8.4.0", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.12.2", + "@typescript-eslint/utils": "8.12.2", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, - "dependencies": { - "debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true } } }, - "@typescript-eslint/types": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", - "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", - "dev": true + "node_modules/@typescript-eslint/types": { + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.12.2.tgz", + "integrity": "sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "@typescript-eslint/typescript-estree": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", - "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.2.tgz", + "integrity": "sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==", "dev": true, - "requires": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "dependencies": { + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -12406,375 +1061,433 @@ "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true } } }, - "@typescript-eslint/utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", - "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", + "node_modules/@typescript-eslint/utils": { + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.12.2.tgz", + "integrity": "sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==", "dev": true, - "requires": { + "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0" + "@typescript-eslint/scope-manager": "8.12.2", + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/typescript-estree": "8.12.2" + }, + "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-eslint/visitor-keys": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", - "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.2.tgz", + "integrity": "sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==", "dev": true, - "requires": { - "@typescript-eslint/types": "8.4.0", + "dependencies": { + "@typescript-eslint/types": "8.12.2", "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "@ungap/structured-clone": { + "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 }, - "@websanova/url": { + "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==" }, - "accepts": { + "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, - "requires": { + "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" } }, - "acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true + "node_modules/acorn": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "acorn-jsx": { + "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "requires": {} + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "ajv": { + "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "requires": { + "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "anchor-js": { + "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==" }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } - }, - "ansi-regex": { + "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 + "dev": true, + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "anymatch": { + "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "requires": { + "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "argparse": { + "node_modules/argparse": { "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 }, - "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "array-union": { + "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true + "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==", + "dev": true, + "peer": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "astral-regex": { + "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "async": { + "node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, - "requires": { + "dependencies": { "lodash": "^4.17.14" } }, - "async-each-series": { + "node_modules/async-each-series": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "dev": true - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "peer": true - }, - "babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "requires": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "engines": { + "node": ">=0.8.0" } }, - "babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "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, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "peer": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { + "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base64id": { + "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 + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } }, - "batch": { + "node_modules/batch": { "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 }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "bootstrap": { + "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==", - "requires": {} + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } }, - "bootstrap-icons": { + "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==" + "integrity": "sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ] }, - "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/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "braces": { + "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "requires": { + "dependencies": { "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, - "browser-sync": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", - "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", + "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==", "dev": true, - "requires": { - "browser-sync-client": "^3.0.2", - "browser-sync-ui": "^3.0.2", + "dependencies": { + "browser-sync-client": "^3.0.3", + "browser-sync-ui": "^3.0.3", "bs-recipes": "1.3.4", "chalk": "4.1.2", "chokidar": "^3.5.1", @@ -12788,38 +1501,47 @@ "fs-extra": "3.0.1", "http-proxy": "^1.18.1", "immutable": "^3", - "micromatch": "^4.0.2", + "micromatch": "^4.0.8", "opn": "5.3.0", "portscanner": "2.2.0", "raw-body": "^2.3.2", "resp-modifier": "6.0.2", "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", + "send": "^0.19.0", + "serve-index": "^1.9.1", + "serve-static": "^1.16.2", "server-destroy": "1.0.1", "socket.io": "^4.4.1", "ua-parser-js": "^1.0.33", "yargs": "^17.3.1" + }, + "bin": { + "browser-sync": "dist/bin.js" + }, + "engines": { + "node": ">= 8.0.0" } }, - "browser-sync-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", - "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", + "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==", "dev": true, - "requires": { + "dependencies": { "etag": "1.8.1", "fresh": "0.5.2", "mitt": "^1.1.3" + }, + "engines": { + "node": ">=8.0.0" } }, - "browser-sync-ui": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", - "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", + "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==", "dev": true, - "requires": { + "dependencies": { "async-each-series": "0.1.1", "chalk": "4.1.2", "connect-history-api-fallback": "^1", @@ -12829,361 +1551,399 @@ "stream-throttle": "^0.1.3" } }, - "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bs-recipes": { + "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 - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true }, - "buffer-builder": { + "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, "peer": true }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": 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==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, "peer": true, - "requires": { + "dependencies": { "semver": "^7.0.0" } }, - "bytes": { + "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "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==", "dev": true, "peer": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "dependencies": { + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "callsites": { + "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", - "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, - "requires": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true - } + "engines": { + "node": ">=6" } }, - "caniuse-lite": { - "version": "1.0.30001466", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001466.tgz", - "integrity": "sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==", - "dev": true - }, - "chalk": { + "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } }, - "character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" + "node_modules/chevrotain-allstar": { + "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==", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "requires": { + "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "cliui": { + "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, - "requires": { + "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "color-convert": { + "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { + "dependencies": { "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "color-name": { + "node_modules/color-name": { "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 }, - "colord": { + "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 }, - "commander": { - "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 + "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, + "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==", + "engines": { + "node": ">= 10" + } }, - "concat-map": { + "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 }, - "connect": { + "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==" + }, + "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, - "requires": { + "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.0", "parseurl": "~1.3.2", "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" } }, - "connect-history-api-fallback": { + "node_modules/connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } }, - "convert-source-map": { + "node_modules/connect/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "cors": { + "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, - "requires": { + "dependencies": { "object-assign": "^4", "vary": "^1" + }, + "engines": { + "node": ">= 0.10" } }, - "cose-base": { + "node_modules/cose-base": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", - "requires": { + "dependencies": { "layout-base": "^1.0.0" } }, - "cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, - "requires": { - "import-fresh": "^3.2.1", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - } - }, - "create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "cross-spawn": { + "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==", "dev": true, - "requires": { + "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "css-functions-list": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz", - "integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==", - "dev": true + "node_modules/css-functions-list": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", + "dev": true, + "engines": { + "node": ">=12 || >=16" + } }, - "css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "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==", "dev": true, - "requires": { - "mdn-data": "2.0.30", + "dependencies": { + "mdn-data": "2.10.0", "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "cssesc": { + "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } }, - "cytoscape": { - "version": "3.28.1", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.1.tgz", - "integrity": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==", - "requires": { - "heap": "^0.2.6", - "lodash": "^4.17.21" + "node_modules/cytoscape": { + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.2.tgz", + "integrity": "sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==", + "engines": { + "node": ">=0.10" } }, - "cytoscape-cose-bilkent": { + "node_modules/cytoscape-cose-bilkent": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", - "requires": { + "dependencies": { "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dependencies": { + "layout-base": "^2.0.0" } }, - "d3": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.4.tgz", - "integrity": "sha512-q2WHStdhiBtD8DMmhDPyJmXUxr6VWRngKyiJ5EfXMxPw+tqT6BhNjhJZ4w3BHsNm3QoVfZLY8Orq/qPFczwKRA==", - "requires": { + "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==" + }, + "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==", + "dependencies": { "d3-array": "3", "d3-axis": "3", "d3-brush": "3", @@ -13214,738 +1974,921 @@ "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" + }, + "engines": { + "node": ">=12" } }, - "d3-array": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.3.tgz", - "integrity": "sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==", - "requires": { + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, - "d3-axis": { + "node_modules/d3-axis": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } }, - "d3-brush": { + "node_modules/d3-brush": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "requires": { + "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" + }, + "engines": { + "node": ">=12" } }, - "d3-chord": { + "node_modules/d3-chord": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "requires": { + "dependencies": { "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "d3-color": { + "node_modules/d3-color": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } }, - "d3-contour": { + "node_modules/d3-contour": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "requires": { + "dependencies": { "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" } }, - "d3-delaunay": { + "node_modules/d3-delaunay": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "requires": { + "dependencies": { "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, - "d3-dispatch": { + "node_modules/d3-dispatch": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } }, - "d3-drag": { + "node_modules/d3-drag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "requires": { + "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" + }, + "engines": { + "node": ">=12" } }, - "d3-dsv": { + "node_modules/d3-dsv": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "requires": { + "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, - "d3-ease": { + "node_modules/d3-ease": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } }, - "d3-fetch": { + "node_modules/d3-fetch": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "requires": { + "dependencies": { "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "d3-force": { + "node_modules/d3-force": { "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==", - "requires": { + "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "d3-format": { + "node_modules/d3-format": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } }, - "d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", - "requires": { + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dependencies": { "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, - "d3-hierarchy": { + "node_modules/d3-hierarchy": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } }, - "d3-interpolate": { + "node_modules/d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "requires": { + "dependencies": { "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "d3-path": { + "node_modules/d3-path": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } }, - "d3-polygon": { + "node_modules/d3-polygon": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } }, - "d3-quadtree": { + "node_modules/d3-quadtree": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } }, - "d3-random": { + "node_modules/d3-random": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } }, - "d3-sankey": { + "node_modules/d3-sankey": { "version": "0.12.3", "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", - "requires": { + "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" - }, + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", "dependencies": { - "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "requires": { - "internmap": "^1.0.0" - } - }, - "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==" - }, - "d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "requires": { - "d3-path": "1" - } - }, - "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - } + "internmap": "^1.0.0" + } + }, + "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==" + }, + "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==", + "dependencies": { + "d3-path": "1" } }, - "d3-scale": { + "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==" + }, + "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==", - "requires": { + "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, - "d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "requires": { + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "d3-selection": { + "node_modules/d3-selection": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } }, - "d3-shape": { + "node_modules/d3-shape": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "requires": { + "dependencies": { "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" } }, - "d3-time": { + "node_modules/d3-time": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "requires": { + "dependencies": { "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, - "d3-time-format": { + "node_modules/d3-time-format": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "requires": { + "dependencies": { "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "d3-timer": { + "node_modules/d3-timer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, - "d3-transition": { + "node_modules/d3-transition": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "requires": { + "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", "d3-ease": "1 - 3", "d3-interpolate": "1 - 3", "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" } }, - "d3-zoom": { + "node_modules/d3-zoom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "requires": { + "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" } }, - "dagre-d3-es": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", - "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", - "requires": { - "d3": "^7.8.2", + "node_modules/dagre-d3-es": { + "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==", + "dependencies": { + "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, - "dayjs": { - "version": "1.11.7", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", - "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "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==", "dev": true, - "requires": { - "ms": "2.0.0" + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "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==", "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, + "peer": true, "dependencies": { - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true - } + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "requires": { - "character-entities": "^2.0.0" + "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==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "requires": {} + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } }, - "deep-is": { + "node_modules/deep-is": { "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 }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true + "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, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "peer": true, - "requires": { + "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "requires": { - "robust-predicates": "^3.0.0" + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" } }, - "depd": { + "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } }, - "dev-ip": { + "node_modules/dev-ip": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", - "dev": true - }, - "diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" - }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true + "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "dir-glob": { + "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "requires": { + "dependencies": { "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "doctrine": { + "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "requires": { + "dependencies": { "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "dompurify": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.5.tgz", - "integrity": "sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==" + "node_modules/dompurify": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", + "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==" }, - "easy-extender": { + "node_modules/easy-extender": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", "dev": true, - "requires": { + "dependencies": { "lodash": "^4.17.10" + }, + "engines": { + "node": ">= 4.0.0" } }, - "eazy-logger": { + "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==", "dev": true, - "requires": { + "dependencies": { "chalk": "4.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "ee-first": { + "node_modules/ee-first": { "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 }, - "ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "requires": { - "jake": "^10.8.5" - } - }, - "electron-to-chromium": { - "version": "1.4.331", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.331.tgz", - "integrity": "sha512-tdtr9y9oJl8VDiS+HeB6e/JDJqdDGjIk3yRfEMHm5rDnWQ/D5SbafybAayInxolbfbH6pouV5g7ZUAwE/WVtHw==", - "dev": true - }, - "elkjs": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.1.tgz", - "integrity": "sha512-JWKDyqAdltuUcyxaECtYG6H4sqysXSLeoXuGUBfRNESMTkj+w+qdb0jya8Z/WI0jVd03WQtCGhS6FOFtlhD5FQ==" - }, - "emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true - }, - "emoji-regex": { + "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 }, - "encodeurl": { + "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 + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "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==", "dev": true, - "requires": { + "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1" }, - "dependencies": { - "debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "engines": { + "node": ">=10.2.0" } }, - "engine.io-client": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", - "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", + "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==", "dev": true, - "requires": { + "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "xmlhttprequest-ssl": "~2.1.1" } }, - "engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", - "dev": 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, + "engines": { + "node": ">=10.0.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, + "engines": { + "node": ">=6" + } }, - "error-ex": { + "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==", "dev": true, - "requires": { + "dependencies": { "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", - "dev": true, - "peer": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.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==", + "dev": true, + "peer": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "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", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", + "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", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", + "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", + "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.9" + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "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==", "dev": true, "peer": true, - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" } }, - "es-shim-unscopables": { + "node_modules/es-object-atoms": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "peer": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "peer": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "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==", "dev": true, "peer": true, - "requires": { - "has": "^1.0.3" + "dependencies": { + "hasown": "^2.0.0" } }, - "es-to-primitive": { + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "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, - "requires": { - "@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" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "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-sass-plugin": { + "node_modules/esbuild-sass-plugin": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-3.3.1.tgz", "integrity": "sha512-SnO1ls+d52n6j8gRRpjexXI8MsHEaumS0IdDHaYM29Y6gakzZYMls6i9ql9+AWMSQk/eryndmUpXEgT34QrX1A==", "dev": true, - "requires": { + "dependencies": { "resolve": "^1.22.8", "safe-identifier": "^0.4.2", "sass": "^1.71.1" + }, + "peerDependencies": { + "esbuild": ">=0.20.1", + "sass-embedded": "^1.71.1" } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "escape-html": { + "node_modules/escape-html": { "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 }, - "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 + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "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.", "dev": true, - "requires": { + "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -13980,459 +2923,517 @@ "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "peer": true, "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "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, - "requires": { - "is-glob": "^4.0.3" - } + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "engines": { + "node": ">=12.0.0" + }, + "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" } }, - "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-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, - "requires": {} + "peer": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } }, - "eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "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, - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - }, "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "peer": true - } + "ms": "^2.1.1" } }, - "eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "debug": "^3.2.7" }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "peer": true + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true } } }, - "eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "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, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "peer": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "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", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=8" } }, - "eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "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==", "dev": true, "peer": true, - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "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.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" + "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" + }, + "engines": { + "node": ">=4" }, + "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": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "peer": true - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true - } + "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" + } + }, + "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==", + "dev": true, + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.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==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" } }, - "eslint-plugin-n": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.6.1.tgz", - "integrity": "sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==", + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", + "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", "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" + "resolve": "^1.22.2", + "semver": "^7.5.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "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==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-n/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "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==", "dev": true, "peer": true, - "requires": {} + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } }, - "eslint-scope": { + "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==", "dev": true, - "requires": { + "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "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, - "peer": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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==", + "dev": true, "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "peer": true - } + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "eslint-visitor-keys": { - "version": "3.4.3", - "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 + "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, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "espree": { + "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==", "dev": true, - "requires": { + "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, - "requires": { + "dependencies": { "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, - "esrecurse": { + "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "requires": { + "dependencies": { "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" } }, - "estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "esutils": { + "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "etag": { + "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "eventemitter3": { + "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "requires": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "fast-deep-equal": { + "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 }, - "fast-glob": { + "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==", "dev": true, - "requires": { + "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" + }, + "engines": { + "node": ">=8.6.0" } }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "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 }, - "fast-levenshtein": { + "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 }, - "fastest-levenshtein": { + "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 + }, + "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 - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "requires": { - "reusify": "^1.0.4" + "engines": { + "node": ">= 4.9.1" } }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, - "requires": { - "bser": "2.1.1" + "dependencies": { + "reusify": "^1.0.4" } }, - "file-entry-cache": { + "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==", "dev": true, - "requires": { + "dependencies": { "flat-cache": "^3.0.4" - } - }, - "filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "requires": { - "minimatch": "^5.0.1" }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "fill-range": { + "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "requires": { + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "finalhandler": { + "node_modules/finalhandler": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.1", "escape-html": "~1.0.3", @@ -14440,3893 +3441,3876 @@ "parseurl": "~1.3.2", "statuses": "~1.3.1", "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" } }, - "find-up": { + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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, - "requires": { + "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "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==", "dev": true, - "requires": { - "flatted": "^3.1.0", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "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 }, - "follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true + "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==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } }, - "for-each": { + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "is-callable": "^1.1.3" } }, - "fresh": { + "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "fs-extra": { + "node_modules/fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^3.0.0", "universalify": "^0.1.0" } }, - "fs.realpath": { + "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 }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": 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, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "functions-have-names": { + "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "peer": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "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==", "dev": true, "peer": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "glob": { + "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, - "requires": { + "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" } }, - "glob-parent": { + "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, - "requires": { + "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "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": "*" } }, - "global-modules": { + "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, - "requires": { + "dependencies": { "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "global-prefix": { + "node_modules/global-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "globals": { + "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "requires": { + "dependencies": { "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "peer": true, - "requires": { - "define-properties": "^1.1.3" + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "globby": { + "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "requires": { + "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "globjoin": { + "node_modules/globjoin": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, - "gopd": { + "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "peer": true, - "requires": { + "dependencies": { "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "node_modules/graceful-fs": { + "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 }, - "graphemer": { + "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } + "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==" }, - "has-bigints": { + "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==", "dev": true, - "peer": true + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-flag": { + "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "peer": true, - "requires": { - "get-intrinsic": "^1.1.1" + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "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==", "dev": true, - "peer": true + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-symbols": { + "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==", "dev": true, - "peer": true + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "peer": true, - "requires": { - "has-symbols": "^1.0.2" + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "highlight.js": { + "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==" - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" + "integrity": "sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==", + "engines": { + "node": ">=12.0.0" } }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "html-tags": { + "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 + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "http-errors": { + "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, - "requires": { + "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" }, - "dependencies": { - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, - "http-proxy": { + "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, - "requires": { + "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "idb-keyval": { + "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==" }, - "ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true + "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, + "engines": { + "node": ">= 4" + } }, - "immutable": { + "node_modules/immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "import-fresh": { + "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==", "dev": true, - "requires": { + "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "inflight": { + "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, - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "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 }, - "ini": { + "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 }, - "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "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==", "dev": true, "peer": true, - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" } }, - "internmap": { + "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } }, - "is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "is-bigint": { + "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "peer": true, - "requires": { + "dependencies": { "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-binary-path": { + "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "requires": { + "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-boolean-object": { + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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==", + "dev": true, + "peer": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-callable": { + "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "peer": true + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "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==", "dev": true, - "requires": { - "has": "^1.0.3" + "peer": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-date-object": { + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-fullwidth-code-point": { + "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 - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-glob": { + "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, - "requires": { + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "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 + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-number": { + "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "is-number-like": { + "node_modules/is-number-like": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", "dev": true, - "requires": { + "dependencies": { "lodash.isfinite": "^3.3.2" } }, - "is-number-object": { + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-path-inside": { + "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 - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-plain-object": { + "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 + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-regex": { + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.2" + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-string": { + "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "peer": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "peer": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "peer": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "has-tostringtag": "^1.0.0" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jake": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", - "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", - "dev": true, - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" + "engines": { + "node": ">= 0.4" }, - "dependencies": { - "async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true - } - } - }, - "jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - } - }, - "jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - } - }, - "jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - } - }, - "jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - } - }, - "jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true - }, - "jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "requires": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true - }, - "jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "requires": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - } - }, - "jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - } - }, - "jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "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==", + "dev": true, + "peer": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "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==", "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "peer": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "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==", "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, + "peer": true, "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, - "requires": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "engines": { + "node": ">=4" } }, - "jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } + "peer": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "jquery": { + "node_modules/jquery": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz", "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==" }, - "js-tokens": { + "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 }, - "js-yaml": { + "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, - "requires": { + "dependencies": { "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/json-buffer": { + "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 }, - "json-parse-even-better-errors": { + "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 }, - "json-schema-traverse": { + "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 }, - "json-stable-stringify-without-jsonify": { + "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 }, - "json5": { + "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, - "requires": { + "dependencies": { "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "jsonfile": { + "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, - "requires": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, - "katex": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", - "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", - "requires": { + "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==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "dependencies": { "commander": "^8.3.0" }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - } + "json-buffer": "3.0.1" } }, - "khroma": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.0.0.tgz", - "integrity": "sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==" + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" }, - "kind-of": { + "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "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 }, - "known-css-properties": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", - "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", - "dev": true + "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==" }, - "layout-base": { + "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==", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "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==" }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { + "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, - "requires": { + "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "limiter": { + "node_modules/limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", "dev": true }, - "lines-and-columns": { + "node_modules/lines-and-columns": { "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 }, - "lit-html": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.0.tgz", - "integrity": "sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==", - "requires": { + "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==", + "dependencies": { "@types/trusted-types": "^2.0.2" } }, - "locate-path": { + "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==", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "requires": { + "dependencies": { "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lodash": { + "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, - "lodash-es": { + "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==" }, - "lodash.isfinite": { + "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 }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.merge": { + "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 - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "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==" - }, - "make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "requires": { - "semver": "^7.5.3" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true - }, - "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==" - }, - "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 - }, - "mdast-util-from-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.0.tgz", - "integrity": "sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - } - }, - "mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "requires": { - "@types/mdast": "^3.0.0" - } - }, - "mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true - }, - "meow": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", - "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.2", - "camelcase-keys": "^7.0.0", - "decamelize": "^5.0.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.2", - "read-pkg-up": "^8.0.0", - "redent": "^4.0.0", - "trim-newlines": "^4.0.2", - "type-fest": "^1.2.2", - "yargs-parser": "^20.2.9" - }, - "dependencies": { - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "mermaid": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.1.tgz", - "integrity": "sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==", - "requires": { - "@braintree/sanitize-url": "^6.0.1", - "@types/d3-scale": "^4.0.3", - "@types/d3-scale-chromatic": "^3.0.0", - "cytoscape": "^3.28.1", - "cytoscape-cose-bilkent": "^4.1.0", - "d3": "^7.4.0", - "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.10", - "dayjs": "^1.11.7", - "dompurify": "^3.0.5", - "elkjs": "^0.9.0", - "katex": "^0.16.9", - "khroma": "^2.0.0", - "lodash-es": "^4.17.21", - "mdast-util-from-markdown": "^1.3.0", - "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.3", - "ts-dedent": "^2.2.0", - "uuid": "^9.0.0", - "web-worker": "^1.2.0" - } - }, - "micromark": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", - "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", - "requires": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "micromark-core-commonmark": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", - "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", - "requires": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "micromark-factory-destination": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", - "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-factory-label": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", - "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-factory-space": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", - "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-factory-title": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", - "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", - "requires": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-factory-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", - "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", - "requires": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", - "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", - "requires": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-chunked": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", - "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", - "requires": { - "micromark-util-symbol": "^1.0.0" - } + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, - "micromark-util-classify-character": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", - "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } + "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 }, - "micromark-util-combine-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", - "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", - "requires": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" }, - "micromark-util-decode-numeric-character-reference": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", - "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", - "requires": { - "micromark-util-symbol": "^1.0.0" - } + "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==" }, - "micromark-util-decode-string": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", - "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", - "requires": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" + "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==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" } }, - "micromark-util-encode": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", - "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==" - }, - "micromark-util-html-tag-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", - "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==" + "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==" }, - "micromark-util-normalize-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", - "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", - "requires": { - "micromark-util-symbol": "^1.0.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, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "micromark-util-resolve-all": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", - "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", - "requires": { - "micromark-util-types": "^1.0.0" - } + "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 }, - "micromark-util-sanitize-uri": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", - "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.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, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "micromark-util-subtokenize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", - "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", - "requires": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" } }, - "micromark-util-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", - "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==" - }, - "micromark-util-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", - "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==" + "node_modules/mermaid": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.4.0.tgz", + "integrity": "sha512-mxCfEYvADJqOiHfGpJXLs4/fAjHz448rH0pfY5fAoxiz70rQiDSzUUy4dNET2T08i46IVpjohPd6WWbzmRHiPA==", + "dependencies": { + "@braintree/sanitize-url": "^7.0.1", + "@iconify/utils": "^2.1.32", + "@mermaid-js/parser": "^0.3.0", + "@types/d3": "^7.4.3", + "@types/dompurify": "^3.0.5", + "cytoscape": "^3.29.2", + "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", + "khroma": "^2.1.0", + "lodash-es": "^4.17.21", + "marked": "^13.0.2", + "roughjs": "^4.6.6", + "stylis": "^4.3.1", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.1" + } }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, - "requires": { - "braces": "^3.0.2", + "dependencies": { + "braces": "^3.0.3", "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, - "mime-db": { + "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "requires": { + "dependencies": { "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "requires": { - "brace-expansion": "^1.1.7" + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "minimist": { + "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 - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "mitt": { + "node_modules/mitt": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", "dev": true }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + "node_modules/mlly": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.2.tgz", + "integrity": "sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==", + "dependencies": { + "acorn": "^8.12.1", + "pathe": "^1.1.2", + "pkg-types": "^1.2.0", + "ufo": "^1.5.4" + } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "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==" }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, - "natural-compare": { + "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 }, - "negotiator": { + "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 - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "non-layered-tidy-tree-layout": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", - "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "engines": { + "node": ">= 0.6" } }, - "normalize-path": { + "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 + }, + "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 - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "requires": { - "path-key": "^3.0.0" + "engines": { + "node": ">=0.10.0" } }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "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==", "dev": true, - "peer": true + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "object-keys": { + "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "peer": true + "peer": true, + "engines": { + "node": ">= 0.4" + } }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "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, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "on-finished": { + "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, - "requires": { + "dependencies": { "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "once": { + "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, - "requires": { + "dependencies": { "wrappy": "1" } }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "opn": { + "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, - "requires": { + "dependencies": { "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", + "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" } }, - "p-limit": { + "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, - "requires": { + "dependencies": { "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "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==" }, - "parent-module": { + "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, - "requires": { + "dependencies": { "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "parse-json": { + "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "parseurl": { + "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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==" }, - "path-exists": { + "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 + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "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 + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "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 + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-parse": { + "node_modules/path-parse": { "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 }, - "path-type": { + "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 + "dev": true, + "engines": { + "node": ">=8" + } }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "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 }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true + "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==", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.2", + "pathe": "^1.1.2" + } }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } + "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==" + }, + "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==", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" } }, - "portscanner": { + "node_modules/portscanner": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dev": true, - "requires": { + "dependencies": { "async": "^2.6.0", "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "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==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" } }, - "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "postcss-media-query-parser": { + "node_modules/postcss-media-query-parser": { "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 }, - "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", + "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 }, - "postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, - "requires": {} + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } }, - "postcss-scss": { + "node_modules/postcss-scss": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "dev": true, - "requires": {} + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } }, - "postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "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==", "dev": true, - "requires": { + "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" } }, - "postcss-value-parser": { + "node_modules/postcss-value-parser": { "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 }, - "prelude-ls": { + "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 - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } + "engines": { + "node": ">= 0.8.0" } }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "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, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "engines": { + "node": ">=6" } }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "pure-rand": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", - "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", - "dev": true - }, - "queue-microtask": { + "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true + "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" + } + ] }, - "range-parser": { + "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 + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, - "requires": { + "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "read-pkg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", - "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" }, - "dependencies": { - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true - } + "engines": { + "node": ">= 0.8" } }, - "read-pkg-up": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", - "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "requires": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" - }, "dependencies": { - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true - } + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "readdirp": { + "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "requires": { + "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "redent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", - "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", - "dev": true, - "requires": { - "indent-string": "^5.0.0", - "strip-indent": "^4.0.0" - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "peer": true - }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "require-from-string": { + "node_modules/require-from-string": { "version": "2.0.2", "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 + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "requires-port": { + "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, - "resolve": { + "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, - "requires": { + "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-from": { + "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } }, - "resp-modifier": { + "node_modules/resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", "dev": true, - "requires": { + "dependencies": { "debug": "^2.2.0", "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/resp-modifier/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/resp-modifier/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": "*" } }, - "reusify": { + "node_modules/resp-modifier/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "rimraf": { + "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, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "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==", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } }, - "run-parallel": { + "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "requires": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { "queue-microtask": "^1.2.2" } }, - "rw": { + "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, - "rx": { + "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 }, - "rxjs": { + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "tslib": "^2.1.0" } }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "requires": { - "mri": "^1.1.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==", + "dev": true, + "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" } }, - "safe-identifier": { + "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 }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "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" } }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sass": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", - "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "node_modules/sass": { + "version": "1.80.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.3.tgz", + "integrity": "sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==", "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", + "dependencies": { + "@parcel/watcher": "^2.4.1", + "chokidar": "^4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" }, - "dependencies": { - "immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", - "dev": true - } + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" } }, - "sass-embedded": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.71.1.tgz", - "integrity": "sha512-nOmqErO1zd1wjvTbDscLZZ3fv5JPeQfaKuo0UCjYm7qPbpQcycp0l3nFZHxovjLjCetJ9IrLOADdznFYKV0f1A==", + "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==", "dev": true, "peer": true, - "requires": { - "@bufbuild/protobuf": "^1.0.0", + "dependencies": { + "@bufbuild/protobuf": "^2.0.0", "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", "immutable": "^4.0.0", "rxjs": "^7.4.0", - "sass-embedded-android-arm": "1.71.1", - "sass-embedded-android-arm64": "1.71.1", - "sass-embedded-android-ia32": "1.71.1", - "sass-embedded-android-x64": "1.71.1", - "sass-embedded-darwin-arm64": "1.71.1", - "sass-embedded-darwin-x64": "1.71.1", - "sass-embedded-linux-arm": "1.71.1", - "sass-embedded-linux-arm64": "1.71.1", - "sass-embedded-linux-ia32": "1.71.1", - "sass-embedded-linux-musl-arm": "1.71.1", - "sass-embedded-linux-musl-arm64": "1.71.1", - "sass-embedded-linux-musl-ia32": "1.71.1", - "sass-embedded-linux-musl-x64": "1.71.1", - "sass-embedded-linux-x64": "1.71.1", - "sass-embedded-win32-ia32": "1.71.1", - "sass-embedded-win32-x64": "1.71.1", "supports-color": "^8.1.1", "varint": "^6.0.0" }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "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_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==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "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==", + "dev": true, + "peer": true + }, + "node_modules/sass-embedded/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "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 + }, + "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==", + "dev": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "ms": "2.0.0" } }, - "sass-embedded-android-arm": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.71.1.tgz", - "integrity": "sha512-Pq6TlRg9lIYsZDo9XNQZnSg6grQKzBG3ssdv0W1SnYS1BzGKwbg8XnlUA/pVxK76BKEm8i+0DA4y8cZ8A3tmpw==", - "dev": true, - "optional": true, - "peer": true + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, - "sass-embedded-android-arm64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.71.1.tgz", - "integrity": "sha512-a7wJ1MM6sBwcM/8vIvvnwc9spoeNimNeXZpN9baSV4Ylthmr4GkTYYtf96Z/XYLdG5KBgYlxMs5T3OgqafdUMg==", + "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, - "optional": true, - "peer": true + "engines": { + "node": ">= 0.8" + } }, - "sass-embedded-android-ia32": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.71.1.tgz", - "integrity": "sha512-tn3WZNdKQtr/DSzl4cQIDZkTO3JuuMxPvM/T+U7gBFyhU62NyF5wvwBnuh+BN3iaMowfkSknzCZCjyJDwnkDjw==", + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } }, - "sass-embedded-android-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.71.1.tgz", - "integrity": "sha512-l72Pqxfb/pArpOLyWsuL9s8ODWupRGATWTPwUT/GjVdSQJO/lQL5DopXb55Cwh2T7t2G10e+uXTEMKz0qngoWQ==", + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">= 0.8" + } }, - "sass-embedded-darwin-arm64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.71.1.tgz", - "integrity": "sha512-3eZDAcJBwoG0Kyasa/EbaKt1Jn2y0GHvCd0Oas/VtMsYL+/6abiCO1l8YltdxER4jvuHUKE2Ow7J6T6sC+vVQQ==", + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "sass-embedded-darwin-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.71.1.tgz", - "integrity": "sha512-/9FtMPVdQalhsRCD9opNIlZqJKe7veCjWsdj0J9utbc2bNCTYswXNQtC/jWJTjE9/gQ0+w5zwg9+fQzltdYh1w==", + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "ms": "2.0.0" + } }, - "sass-embedded-linux-arm": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.71.1.tgz", - "integrity": "sha512-l7NEn0gji6GTN+p00DP2zZl9SE501Zy5obTA3beiD6+vQy7lCEC6vpNi/ZrlC6eRmgY2OKSBB2lfW7KSej9Hkg==", + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">= 0.6" + } }, - "sass-embedded-linux-arm64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.71.1.tgz", - "integrity": "sha512-zUSmqeqcgTb3VjZggk9a9xB2ZGaAe/TYAi/vYRPNLY/f7dZSrsa9Ejo+LUm2aNl6V8hFzMz7BpoKsaRQJnb9GQ==", + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } }, - "sass-embedded-linux-ia32": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.71.1.tgz", - "integrity": "sha512-NvzSljfc/Kw9/0CSn91AsINV2nh8vxhFe2cKexPMwvAqv/etU84dJMfJejxPJ39PmMqT1KvC4G+Qt2+6Mpe7oQ==", - "dev": true, - "optional": true, - "peer": true + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true }, - "sass-embedded-linux-musl-arm": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.71.1.tgz", - "integrity": "sha512-1O37K5EgSeQjCBizIF9xdZJw3mh5XYHOnsB4+65CLZg4ac84ragjFv9d9rYhwGs9QSgg1MoOv7VWnEIxQ8Pp9Q==", - "dev": true, - "optional": true, - "peer": true + "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 }, - "sass-embedded-linux-musl-arm64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.71.1.tgz", - "integrity": "sha512-Agtf6BcYQ0mt+jVDcRcN7bDPrMAQOWMeX15NTlQH1rO8voObLo6ThVl2NUkiZyyVmu7a6YOrCxpGBVAK1cLGOg==", - "dev": true, - "optional": true, - "peer": true + "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 }, - "sass-embedded-linux-musl-ia32": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.71.1.tgz", - "integrity": "sha512-Cd5sJkt70bSlYEXUSj9mPMKZLzDL8LGcBKUIfQRrcBKjmzD2Va2eLq4Zati9Xzt54unuDp4bAUUTyvQmjLzFmA==", + "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, - "optional": true, - "peer": true + "engines": { + "node": ">= 0.6" + } }, - "sass-embedded-linux-musl-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.71.1.tgz", - "integrity": "sha512-uVfYms/lf4QVSvtQXkSm+Bq3wVsvkRMI30ca82rRwpwebxSaTbUr+uLnskh8QvbyfsbMyrzZQU0SCrO3uCua1A==", + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "sass-embedded-linux-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.71.1.tgz", - "integrity": "sha512-7BXniYic16+MQx0InyH8OXburLPGMRYRWf0l/t/fRkNkUHWFl7NQPAX0yvj73c/PKOdaYEUY6isNB4OGUGtZHQ==", + "node_modules/serve-static/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "ms": "2.0.0" + } }, - "sass-embedded-win32-ia32": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.71.1.tgz", - "integrity": "sha512-ZDhL6hvekeKDkZ1wUj6wN0thrB/7wOO8HaQoagk+pKaHoa0Py7OLR/m9mQM8S13mZpUQduNsznmXV1fOss4GOg==", - "dev": true, - "optional": true, - "peer": true + "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, - "sass-embedded-win32-x64": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.71.1.tgz", - "integrity": "sha512-ecWP1TFUA9ujOuOTJfWC1iZsSZOdQy5OxIEHqoERxunyjwzkiTxfN8J7Y4bNQ5uwb4K0brxWyIM8Fq+UgDqcZA==", + "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, - "optional": true, - "peer": true + "engines": { + "node": ">= 0.8" + } }, - "semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true + "node_modules/serve-static/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "node_modules/serve-static/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - } + "engines": { + "node": ">= 0.8.0" } }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "node_modules/serve-static/node_modules/send/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, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "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 - } + "engines": { + "node": ">= 0.8" } }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "engines": { + "node": ">= 0.8" } }, - "server-destroy": { + "node_modules/server-destroy": { "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 }, - "setprototypeof": { + "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, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "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, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "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 }, - "shebang-command": { + "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, - "requires": { + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "slash": { + "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "slice-ansi": { + "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "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==", "dev": true, - "requires": { + "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "engines": { + "node": ">=10.2.0" } }, - "socket.io-adapter": { + "node_modules/socket.io-adapter": { "version": "2.5.5", "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, - "requires": { + "dependencies": { "debug": "~4.3.4", "ws": "~8.17.1" - }, - "dependencies": { - "debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, - "socket.io-client": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", - "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", + "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==", "dev": true, - "requires": { + "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.5.2", + "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "engines": { + "node": ">=10.0.0" } }, - "socket.io-parser": { + "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, - "requires": { + "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "engines": { + "node": ">=10.0.0" } }, - "spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "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, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "statuses": { + "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 + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "stream-throttle": { + "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, - "requires": { + "dependencies": { "commander": "^2.2.0", "limiter": "^1.0.5" + }, + "bin": { + "throttleproxy": "bin/throttleproxy.js" + }, + "engines": { + "node": ">= 0.10.0" } }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } + "node_modules/stream-throttle/node_modules/commander": { + "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 }, - "string-width": { + "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, - "requires": { + "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { + "dependencies": { "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-bom": { + "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 + "peer": true, + "engines": { + "node": ">=4" + } }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "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", + "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", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^9.1.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^6.0.2", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.34.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", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "supports-hyperlinks": "^3.1.0", + "svg-tags": "^1.0.0", + "table": "^6.8.2", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.1.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==", + "dev": true, + "dependencies": { + "postcss-scss": "^4.0.9", + "stylelint-config-recommended": "^14.0.1", + "stylelint-scss": "^6.4.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "postcss": "^8.3.3", + "stylelint": "^16.6.1" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "dependencies": { + "stylelint-config-recommended": "^14.0.1" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.1.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==", + "dev": true, + "dependencies": { + "stylelint-config-recommended-scss": "^14.0.0", + "stylelint-config-standard": "^36.0.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "postcss": "^8.3.3", + "stylelint": "^16.3.1" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } + } }, - "strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "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==", "dev": true, - "requires": { - "min-indent": "^1.0.1" + "dependencies": { + "css-tree": "^3.0.0", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.34.0", + "mdn-data": "^2.11.1", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.0.2" } }, - "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==", + "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 }, - "style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "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 }, - "stylelint": { - "version": "15.10.3", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.3.tgz", - "integrity": "sha512-aBQMMxYvFzJJwkmg+BUUg3YfPyeuCuKo2f+LOw7yYbU8AZMblibwzp9OV4srHVeQldxvSFdz0/Xu8blq2AesiA==", + "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==", "dev": true, - "requires": { - "@csstools/css-parser-algorithms": "^2.3.1", - "@csstools/css-tokenizer": "^2.2.0", - "@csstools/media-query-list-parser": "^2.1.4", - "@csstools/selector-specificity": "^3.0.0", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^8.2.0", - "css-functions-list": "^3.2.0", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.1", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^5.2.4", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.28.0", - "mathml-tag-names": "^2.1.3", - "meow": "^10.1.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.27", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "write-file-atomic": "^5.0.1" - }, "dependencies": { - "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 - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "stylelint-config-recommended": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz", - "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", - "dev": true, - "requires": {} - }, - "stylelint-config-recommended-scss": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-13.1.0.tgz", - "integrity": "sha512-8L5nDfd+YH6AOoBGKmhH8pLWF1dpfY816JtGMePcBqqSsLU+Ysawx44fQSlMOJ2xTfI9yTGpup5JU77c17w1Ww==", - "dev": true, - "requires": { - "postcss-scss": "^4.0.9", - "stylelint-config-recommended": "^13.0.0", - "stylelint-scss": "^5.3.0" + "flat-cache": "^5.0.0" + }, + "engines": { + "node": ">=18" } }, - "stylelint-config-standard": { - "version": "34.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-34.0.0.tgz", - "integrity": "sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==", + "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==", "dev": true, - "requires": { - "stylelint-config-recommended": "^13.0.0" + "dependencies": { + "flatted": "^3.3.1", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=18" } }, - "stylelint-config-standard-scss": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-11.1.0.tgz", - "integrity": "sha512-5gnBgeNTgRVdchMwiFQPuBOtj9QefYtfXiddrOMJA2pI22zxt6ddI2s+e5Oh7/6QYl7QLJujGnaUR5YyGq72ow==", + "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, - "requires": { - "stylelint-config-recommended-scss": "^13.1.0", - "stylelint-config-standard": "^34.0.0" + "engines": { + "node": ">= 4" } }, - "stylelint-scss": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.0.tgz", - "integrity": "sha512-Sc7S1uWqStMc99NREsHNxpxHHFRvjo2pWILNl/UCwWO8PxhODK8qbJH0GHWIALxl6BD5rwJL4cSm4jk36hi6fg==", + "node_modules/stylelint/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "requires": { - "known-css-properties": "^0.28.0", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0" + "engines": { + "node": ">=8" } }, - "stylis": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", - "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" + "node_modules/stylis": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", + "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==" }, - "supports-color": { + "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, - "requires": { + "dependencies": { "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "supports-hyperlinks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", - "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "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==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "supports-preserve-symlinks-flag": { + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "svg-tags": { + "node_modules/svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, - "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, - "requires": { + "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1" }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } + "engines": { + "node": ">=10.0.0" } }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "text-table": { + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/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 }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true + "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==" }, - "to-regex-range": { + "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, - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "toidentifier": { + "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "trim-newlines": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", - "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6" + } }, - "ts-api-utils": { + "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==", "dev": true, - "requires": {} + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } }, - "ts-dedent": { + "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==" - }, - "ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", - "dev": true, - "requires": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.6.3", - "yargs-parser": "^21.1.1" + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "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==", + "dev": true, + "peer": true + }, + "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==", + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "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, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "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" }, - "dependencies": { - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "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==", "dev": true, "peer": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" } }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "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==", "dev": true, - "peer": true + "peer": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "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==", "dev": true, - "requires": { - "prelude-ls": "^1.2.1" + "peer": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "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 - }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "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==", "dev": true, "peer": true, - "requires": { - "call-bind": "^1.0.2", + "dependencies": { + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "dev": true + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } }, - "ua-parser-js": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz", - "integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ==", - "dev": true + "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==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" }, - "unbox-primitive": { + "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==", "dev": true, "peer": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "requires": { - "@types/unist": "^2.0.0" - } + "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 }, - "universalify": { + "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 + "dev": true, + "engines": { + "node": ">= 4.0.0" + } }, - "unpipe": { + "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "engines": { + "node": ">= 0.8" } }, - "uri-js": { + "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, - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "utils-merge": { + "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 - }, - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" - }, - "uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "requires": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "dependencies": { - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" - } - } - }, - "v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - } + "engines": { + "node": ">= 0.4.0" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, - "varint": { + "node_modules/varint": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", "dev": true, "peer": true }, - "vary": { + "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "requires": { - "makeerror": "1.0.12" + "engines": { + "node": ">= 0.8" } }, - "web-worker": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", - "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "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==", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "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==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "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==" }, - "which": { + "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==" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + }, + "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, - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "which-boxed-primitive": { + "node_modules/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "peer": true, - "requires": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "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==", "dev": true, "peer": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "wrap-ansi": { + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "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==", "dev": true, - "requires": { + "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" } }, - "wrappy": { + "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 }, - "write-file-atomic": { + "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, - "requires": { + "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" }, - "dependencies": { - "signal-exit": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", - "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", - "dev": true - } + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "ws": { + "node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, - "requires": {} + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "dev": true + "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==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "y18n": { + "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yargs": { + "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, - "requires": { + "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", @@ -18334,19 +7318,31 @@ "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" } }, - "yargs-parser": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=12" + } }, - "yocto-queue": { + "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/templates/package.json b/templates/package.json index 74c51f0b355..294817e7768 100644 --- a/templates/package.json +++ b/templates/package.json @@ -14,7 +14,7 @@ "scripts": { "build": "node build.js", "lint": "eslint modern/src && stylelint modern/src", - "test": "jest", + "test": "node --import tsx --test modern/src/*.test.ts", "start": "node build.js --watch" }, "dependencies": { @@ -32,27 +32,25 @@ "highlight.js": "^11.10.0", "idb-keyval": "^6.2.1", "jquery": "3.7.0", - "lit-html": "^3.2.0", + "lit-html": "^3.2.1", "lunr": "2.3.9", "lunr-languages": "^1.14.0", "mathjax": "^3.2.2", - "mermaid": "^10.9.1" + "mermaid": "^11.4.0", + "tsx": "^4.19.2" }, "devDependencies": { - "@types/jest": "^29.5.12", "@types/lunr": "^2.3.7", - "@typescript-eslint/eslint-plugin": "^8.4.0", - "@typescript-eslint/parser": "^8.4.0", - "browser-sync": "^3.0.2", - "esbuild": "~0.23.1", + "@typescript-eslint/eslint-plugin": "^8.12.2", + "@typescript-eslint/parser": "^8.12.2", + "browser-sync": "^3.0.3", + "esbuild": "~0.24.0", "esbuild-sass-plugin": "~3.3.1", - "eslint": "^8.57.0", + "eslint": "^8.57.1", "eslint-config-standard": "^17.1.0", - "jest": "^29.7.0", - "stylelint": "^15.10.3", - "stylelint-config-standard-scss": "^11.1.0", - "ts-jest": "^29.2.5", - "typescript": "^5.5.4", + "stylelint": "^16.10.0", + "stylelint-config-standard-scss": "^13.1.0", + "typescript": "^5.6.3", "yargs": "^17.7.2" } } diff --git a/test/Directory.Build.props b/test/Directory.Build.props index bd3abf53eae..b4ab82100c6 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -18,7 +18,7 @@ <None Include="TestData\**" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup> - <PropertyGroup Condition="'$(ContinuousIntegrationBuild)' == 'true'"> + <PropertyGroup Condition="'$(ContinuousIntegrationBuild)' == 'true' AND '$(PERCY_TOKEN)' == ''"> <VSTestResultsDirectory>$(MSBuildThisFileDirectory)TestResults</VSTestResultsDirectory> <VSTestLogger>$(VSTestLogger);trx%3BLogFileName=TestResults-$(MSBuildProjectName)-$(TargetFramework).trx</VSTestLogger> <VSTestLogger>$(VSTestLogger);html%3BLogFileName=TestResults-$(MSBuildProjectName)-$(TargetFramework).html</VSTestLogger> diff --git a/test/Docfx.Build.Common.Tests/Docfx.Build.Common.Tests.csproj b/test/Docfx.Build.Common.Tests/Docfx.Build.Common.Tests.csproj index 1fa702a51c0..474324b4f13 100644 --- a/test/Docfx.Build.Common.Tests/Docfx.Build.Common.Tests.csproj +++ b/test/Docfx.Build.Common.Tests/Docfx.Build.Common.Tests.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\..\src\Docfx.Build.Common\Docfx.Build.Common.csproj" /> <ProjectReference Include="..\..\src\Docfx.Build\Docfx.Build.csproj" /> 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 d0e62ffdc09..943a81c22c2 100644 --- a/test/Docfx.Build.ManagedReference.Tests/Docfx.Build.ManagedReference.Tests.csproj +++ b/test/Docfx.Build.ManagedReference.Tests/Docfx.Build.ManagedReference.Tests.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\..\src\Docfx.Build\Docfx.Build.csproj" /> <ProjectReference Include="..\..\src\Docfx.Build.ManagedReference\Docfx.Build.ManagedReference.csproj" /> diff --git a/test/Docfx.Build.ManagedReference.Tests/ManagedReferenceDocumentProcessorTest.cs b/test/Docfx.Build.ManagedReference.Tests/ManagedReferenceDocumentProcessorTest.cs index 2e2aee978c5..1c46adc1a98 100644 --- a/test/Docfx.Build.ManagedReference.Tests/ManagedReferenceDocumentProcessorTest.cs +++ b/test/Docfx.Build.ManagedReference.Tests/ManagedReferenceDocumentProcessorTest.cs @@ -30,14 +30,14 @@ public ManagedReferenceDocumentProcessorTest() _outputFolder = GetRandomFolder(); string inputFolder = GetRandomFolder(); _defaultFiles = new FileCollection(Directory.GetCurrentDirectory()); - _defaultFiles.Add(DocumentType.Article, new[] { "TestData/mref/CatLibrary.Cat-2.yml" }, "TestData/"); + _defaultFiles.Add(DocumentType.Article, ["TestData/mref/CatLibrary.Cat-2.yml"], "TestData/"); _applyTemplateSettings = new ApplyTemplateSettings(inputFolder, _outputFolder) { RawModelExportSettings = { Export = true }, TransformDocument = true, }; - _templateManager = new TemplateManager(new List<string> { "template" }, null, "TestData/"); + _templateManager = new TemplateManager(["template"], null, "TestData/"); } [Fact] @@ -93,7 +93,7 @@ public void ProcessMrefWithComplexFileNameShouldSucceed() { FileCollection files = new(_defaultFiles); files.RemoveAll(s => true); - files.Add(DocumentType.Article, new string[] { "TestData/mref/Namespace1.Class1`2.yml", "TestData/mref/Namespace1.Class1`2.#ctor.yml" }, "TestData/"); + files.Add(DocumentType.Article, ["TestData/mref/Namespace1.Class1`2.yml", "TestData/mref/Namespace1.Class1`2.#ctor.yml"], "TestData/"); BuildDocument(files); var outputRawModelPath = GetRawModelFilePath("Namespace1.Class1`2.yml"); @@ -129,7 +129,7 @@ public void ProcessMrefWithXRefMapShouldSucceed() public void ProcessMrefWithDefaultOverwriteShouldSucceed() { FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/mref.overwrite.default.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/mref.overwrite.default.md"]); BuildDocument(files); { var outputRawModelPath = GetRawModelFilePath("CatLibrary.Cat-2.yml"); @@ -144,7 +144,7 @@ public void ProcessMrefWithDefaultOverwriteShouldSucceed() public void ProcessMrefWithSimpleOverwriteShouldSucceed() { FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/mref.overwrite.simple.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/mref.overwrite.simple.md"]); BuildDocument(files); var outputRawModelPath = GetRawModelFilePath("CatLibrary.Cat-2.yml"); Assert.True(File.Exists(outputRawModelPath)); @@ -157,7 +157,7 @@ public void ProcessMrefWithSimpleOverwriteShouldSucceed() public void ProcessMrefWithParametersOverwriteShouldSucceed() { var files = new FileCollection(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/mref.overwrite.parameters.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/mref.overwrite.parameters.md"]); BuildDocument(files); var outputRawModelPath = GetRawModelFilePath("CatLibrary.Cat-2.yml"); Assert.True(File.Exists(outputRawModelPath)); @@ -176,7 +176,7 @@ public void ProcessMrefWithParametersOverwriteShouldSucceed() public void ProcessMrefWithNotPredefinedOverwriteShouldSucceed() { FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/mref.overwrite.not.predefined.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/mref.overwrite.not.predefined.md"]); BuildDocument(files); { var outputRawModelPath = GetRawModelFilePath("CatLibrary.Cat-2.yml"); @@ -193,7 +193,7 @@ public void ProcessMrefWithDynamicDevLangsShouldSucceed() { FileCollection files = new(_defaultFiles); files.RemoveAll(s => true); - files.Add(DocumentType.Article, new[] { "TestData/mref/System.String.yml" }, "TestData/"); + files.Add(DocumentType.Article, ["TestData/mref/System.String.yml"], "TestData/"); BuildDocument(files); @@ -214,8 +214,8 @@ public void ProcessMrefWithDynamicDevLangsShouldSucceed() public void ProcessMrefWithInvalidCrossReferenceShouldWarn() { var files = new FileCollection(Directory.GetCurrentDirectory()); - files.Add(DocumentType.Article, new[] { "TestData/mref/System.String.yml" }, "TestData/"); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/mref.overwrite.invalid.ref.md" }); + files.Add(DocumentType.Article, ["TestData/mref/System.String.yml"], "TestData/"); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/mref.overwrite.invalid.ref.md"]); using var listener = new TestListenerScope(LogLevel.Info); @@ -238,7 +238,7 @@ public void ProcessMrefWithInvalidCrossReferenceShouldWarn() public void ProcessMrefWithInvalidOverwriteShouldFail() { FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/mref.overwrite.invalid.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/mref.overwrite.invalid.md"]); Assert.Throws<DocumentException>(() => BuildDocument(files)); } @@ -246,7 +246,7 @@ public void ProcessMrefWithInvalidOverwriteShouldFail() public void ProcessMrefWithRemarksOverwriteShouldSucceed() { var files = new FileCollection(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/mref.overwrite.remarks.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/mref.overwrite.remarks.md"]); BuildDocument(files); { var outputRawModelPath = GetRawModelFilePath("CatLibrary.Cat-2.yml"); @@ -261,7 +261,7 @@ public void ProcessMrefWithRemarksOverwriteShouldSucceed() public void ProcessMrefWithMultiUidOverwriteShouldSucceed() { var files = new FileCollection(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/mref.overwrite.multi.uid.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/mref.overwrite.multi.uid.md"]); BuildDocument(files); { var outputRawModelPath = GetRawModelFilePath("CatLibrary.Cat-2.yml"); @@ -281,7 +281,7 @@ public void SystemKeysListShouldBeComplete() var outputRawModelPath = GetRawModelFilePath("CatLibrary.Cat-2.yml"); Assert.True(File.Exists(outputRawModelPath)); var model = JsonUtility.Deserialize<Dictionary<string, object>>(outputRawModelPath); - var systemKeys = (JArray)model[Constants.PropertyName.SystemKeys]; + var systemKeys = ToList(model[Constants.PropertyName.SystemKeys]); Assert.NotEmpty(systemKeys); foreach (var key in model.Keys.Where(key => key[0] != '_' && key != "meta" && key != "anotherMeta")) { @@ -323,7 +323,7 @@ private void BuildDocument(FileCollection files) TemplateManager = _templateManager }; - using var builder = new DocumentBuilder(LoadAssemblies(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(), []); builder.Build(parameters); } @@ -341,4 +341,11 @@ private string GetOutputFilePath(string fileName) { return Path.GetFullPath(Path.Combine(_outputFolder, Path.ChangeExtension(fileName, "html"))); } + + private static List<object> ToList(object value) + { + return value is List<object> list + ? list + : ((JArray)value).Cast<object>().ToList(); + } } diff --git a/test/Docfx.Build.OverwriteDocuments.Tests/OverwriteDocumentModelCreatorTest.cs b/test/Docfx.Build.OverwriteDocuments.Tests/OverwriteDocumentModelCreatorTest.cs index d0aba296e8f..b4f82ef9148 100644 --- a/test/Docfx.Build.OverwriteDocuments.Tests/OverwriteDocumentModelCreatorTest.cs +++ b/test/Docfx.Build.OverwriteDocuments.Tests/OverwriteDocumentModelCreatorTest.cs @@ -106,7 +106,7 @@ public void DuplicateOPathInMarkdownSectionTest() } var logs = _listener.Items; - Assert.Single(logs.Where(l => l.Code == WarningCodes.Overwrite.InvalidMarkdownFragments)); + Assert.Single(logs, l => l.Code == WarningCodes.Overwrite.InvalidMarkdownFragments); Assert.Single(contentsMetadata); Assert.Equal("test2", ((ParagraphBlock)((MarkdownDocument)((Dictionary<object, object>)contentsMetadata["function"])["parameters"])[0]).Inline.FirstChild.ToString()); 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 2364686c799..6632e67a6a9 100644 --- a/test/Docfx.Build.RestApi.Tests/Docfx.Build.RestApi.Tests.csproj +++ b/test/Docfx.Build.RestApi.Tests/Docfx.Build.RestApi.Tests.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <None Include="TestData\**" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup> diff --git a/test/Docfx.Build.RestApi.Tests/RestApiDocumentProcessorTest.cs b/test/Docfx.Build.RestApi.Tests/RestApiDocumentProcessorTest.cs index 483f0f7e5a2..9eb31f8b71a 100644 --- a/test/Docfx.Build.RestApi.Tests/RestApiDocumentProcessorTest.cs +++ b/test/Docfx.Build.RestApi.Tests/RestApiDocumentProcessorTest.cs @@ -116,7 +116,7 @@ public void ProcessSwaggerShouldSucceed() Assert.Equal("<p sourcefile=\"TestData/swagger/contacts.json\" sourcestartlinenumber=\"1\">The request body <em sourcefile=\"TestData/swagger/contacts.json\" sourcestartlinenumber=\"1\">contains</em> a single property that specifies the URL of the user or contact to add as manager.</p>\n", item5.Parameters[2].Description); Assert.Equal("<p sourcefile=\"TestData/swagger/contacts.json\" sourcestartlinenumber=\"1\"><strong sourcefile=\"TestData/swagger/contacts.json\" sourcestartlinenumber=\"1\">uri</strong> description.</p>\n", - ((string)parameter2["description"])); + (string)parameter2["description"]); Assert.Equal("<p sourcefile=\"TestData/swagger/contacts.json\" sourcestartlinenumber=\"1\">No Content. Indicates <strong sourcefile=\"TestData/swagger/contacts.json\" sourcestartlinenumber=\"1\">success</strong>. No response body is returned.</p>\n", item5.Responses[0].Description); @@ -154,7 +154,7 @@ public void ProcessSwaggerWithExternalReferenceShouldSucceed() public void ProcessSwaggerWithExternalEmbeddedReferenceShouldSucceed() { var files = new FileCollection(Directory.GetCurrentDirectory()); - files.Add(DocumentType.Article, new[] { "TestData/swagger/contactsForExternalRef.json" }, "TestData/"); + files.Add(DocumentType.Article, ["TestData/swagger/contactsForExternalRef.json"], "TestData/"); BuildDocument(files); var outputRawModelPath = GetRawModelFilePath("contactsForExternalRef.json"); @@ -188,7 +188,7 @@ public void ProcessSwaggerWithNotExistedExternalReferenceShouldFail() public void ProcessSwaggerWithExternalReferenceHasRefInsideShouldFail() { var files = new FileCollection(Directory.GetCurrentDirectory()); - files.Add(DocumentType.Article, new[] { "TestData/swagger/externalRefWithRefInside.json" }, "TestData/"); + files.Add(DocumentType.Article, ["TestData/swagger/externalRefWithRefInside.json"], "TestData/"); var listener = TestLoggerListener.CreateLoggerListenerWithCodeFilter("InvalidInputFile"); Logger.RegisterListener(listener); @@ -227,7 +227,7 @@ public void ProcessSwaggerWithXRefMapShouldSucceed() public void ProcessSwaggerWithTagsOverwriteShouldSucceed() { FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.tags.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.tags.md"]); BuildDocument(files); { @@ -247,7 +247,7 @@ public void ProcessSwaggerWithTagsOverwriteShouldSucceed() public void ProcessSwaggerWithDefaultOverwriteShouldSucceed() { FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.default.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.default.md"]); BuildDocument(files); { @@ -278,9 +278,9 @@ public void ProcessSwaggerWithInvalidLinksOverwriteShouldSucceedWithWarning() using var listener = new TestListenerScope(); var files = new FileCollection(_defaultFiles); - files.Add(DocumentType.Article, new[] { "TestData/swagger/tag_swagger2.json" }, "TestData/"); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.invalid.links.first.md" }); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.invalid.links.second.md" }); + files.Add(DocumentType.Article, ["TestData/swagger/tag_swagger2.json"], "TestData/"); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.invalid.links.first.md"]); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.invalid.links.second.md"]); BuildDocument(files); Assert.Equal(7, listener.Items.Count); // Additional warning for "There is no template processing document type(s): RestApi" @@ -322,7 +322,7 @@ public void ProcessSwaggerWithInvalidLinksOverwriteShouldSucceedWithWarning() public void ProcessSwaggerWithParametersOverwriteShouldSucceed() { var files = new FileCollection(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.parameters.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.parameters.md"]); BuildDocument(files); var outputRawModelPath = GetRawModelFilePath("contacts.json"); Assert.True(File.Exists(outputRawModelPath)); @@ -335,7 +335,7 @@ public void ProcessSwaggerWithParametersOverwriteShouldSucceed() var bodyparam = parametersForUpdate.Single(p => p.Name == "bodyparam"); Assert.Equal("<p sourcefile=\"TestData/overwrite/rest.overwrite.parameters.md\" sourcestartlinenumber=\"1\">The new bodyparam description</p>\n", bodyparam.Description); - var properties = (JObject)(((JObject)bodyparam.Metadata["schema"])["properties"]); + var properties = (JObject)((JObject)bodyparam.Metadata["schema"])["properties"]; var objectType = properties["objectType"]; Assert.Equal("string", objectType["type"]); Assert.Equal("this is overwrite objectType description", objectType["description"]); @@ -364,7 +364,7 @@ public void ProcessSwaggerWithParametersOverwriteShouldSucceed() public void ProcessSwaggerWithNotPredefinedOverwriteShouldSucceed() { FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.not.predefined.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.not.predefined.md"]); BuildDocument(files); { var outputRawModelPath = GetRawModelFilePath("contacts.json"); @@ -387,7 +387,7 @@ public void ProcessSwaggerWithInvalidOverwriteShouldFail() public void ProcessSwaggerWithUnmergeableOverwriteShouldSucceed() { FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.unmergeable.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.unmergeable.md"]); BuildDocument(files); { var outputRawModelPath = GetRawModelFilePath("contacts.json"); @@ -401,7 +401,7 @@ public void ProcessSwaggerWithUnmergeableOverwriteShouldSucceed() public void ProcessSwaggerWithRemarksOverwriteShouldSucceed() { var files = new FileCollection(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.remarks.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.remarks.md"]); BuildDocument(files); { var outputRawModelPath = GetRawModelFilePath("contacts.json"); @@ -415,8 +415,8 @@ public void ProcessSwaggerWithRemarksOverwriteShouldSucceed() public void ProcessSwaggerWithMultiUidOverwriteShouldSucceed() { var files = new FileCollection(_defaultFiles); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.multi.uid.md" }); - files.Add(DocumentType.Overwrite, new[] { "TestData/overwrite/rest.overwrite.unmergeable.md" }); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.multi.uid.md"]); + files.Add(DocumentType.Overwrite, ["TestData/overwrite/rest.overwrite.unmergeable.md"]); BuildDocument(files); { var outputRawModelPath = GetRawModelFilePath("contacts.json"); @@ -439,7 +439,7 @@ public void SystemKeysListShouldBeComplete() var outputRawModelPath = GetRawModelFilePath("contacts.json"); Assert.True(File.Exists(outputRawModelPath)); var model = JsonUtility.Deserialize<Dictionary<string, object>>(outputRawModelPath); ; - var systemKeys = (JArray)model[Constants.PropertyName.SystemKeys]; + var systemKeys = ToList(model[Constants.PropertyName.SystemKeys]); Assert.NotEmpty(systemKeys); foreach (var key in model.Keys.Where(key => key[0] != '_' && !userKeys.Contains(key))) { @@ -460,7 +460,7 @@ private void BuildDocument(FileCollection files) }.ToImmutableDictionary() }; - using var builder = new DocumentBuilder(LoadAssemblies(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(), []); builder.Build(parameters); } @@ -473,4 +473,11 @@ private string GetRawModelFilePath(string fileName) { return Path.Combine(_outputFolder, SwaggerDirectory, Path.ChangeExtension(fileName, RawModelFileExtension)); } + + private static List<object> ToList(object value) + { + return value is List<object> list + ? list + : ((JArray)value).Cast<object>().ToList(); + } } diff --git a/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToOperationLevelTest.cs b/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToOperationLevelTest.cs index 1e0dd40bc2e..4f9f8656300 100644 --- a/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToOperationLevelTest.cs +++ b/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToOperationLevelTest.cs @@ -242,7 +242,7 @@ private void BuildDocument(FileCollection files, bool enableTagLevel = false) TemplateManager = _templateManager }; - using var builder = new DocumentBuilder(LoadAssemblies(enableTagLevel), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(enableTagLevel), []); builder.Build(parameters); } diff --git a/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToTagLevelTest.cs b/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToTagLevelTest.cs index dd4b1a1604e..22a06714040 100644 --- a/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToTagLevelTest.cs +++ b/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToTagLevelTest.cs @@ -31,13 +31,13 @@ public SplitRestApiToTagLevelTest() string inputFolder = GetRandomFolder(); _outputFolder = GetRandomFolder(); _defaultFiles = new FileCollection(Directory.GetCurrentDirectory()); - _defaultFiles.Add(DocumentType.Article, new[] { "TestData/swagger/petstore.json" }, "TestData/"); + _defaultFiles.Add(DocumentType.Article, ["TestData/swagger/petstore.json"], "TestData/"); _applyTemplateSettings = new ApplyTemplateSettings(inputFolder, _outputFolder) { RawModelExportSettings = { Export = true }, TransformDocument = true, }; - _templateManager = new TemplateManager(new List<string> { "template" }, null, "TestData/"); + _templateManager = new TemplateManager(["template"], null, "TestData/"); } [Fact] @@ -142,7 +142,7 @@ private void BuildDocument(FileCollection files) TemplateManager = _templateManager }; - using var builder = new DocumentBuilder(LoadAssemblies(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(), []); builder.Build(parameters); } 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 ef33cd35413..4ed255dbd06 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/Docfx.Build.SchemaDriven.Tests.csproj +++ b/test/Docfx.Build.SchemaDriven.Tests/Docfx.Build.SchemaDriven.Tests.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\..\src\Docfx.Build.Common\Docfx.Build.Common.csproj" /> <ProjectReference Include="..\..\src\Docfx.Build\Docfx.Build.csproj" /> diff --git a/test/Docfx.Build.SchemaDriven.Tests/JsonPointerTest.cs b/test/Docfx.Build.SchemaDriven.Tests/JsonPointerTest.cs index a0a77a528f8..381e10fa736 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/JsonPointerTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/JsonPointerTest.cs @@ -4,7 +4,7 @@ using Docfx.Common; using Docfx.Exceptions; using Docfx.Tests.Common; - +using FluentAssertions; using Xunit; namespace Docfx.Build.SchemaDriven.Tests; @@ -13,33 +13,34 @@ public class JsonPointerTest : TestBase [Fact] public void TestJsonPointerSpec() { - var root = ConvertToObjectHelper.ConvertToDynamic(ConvertToObjectHelper.ConvertJObjectToObject(JsonUtility.FromJsonString<object>(@" -{ - ""foo"": [""bar"", ""baz""], - """": 0, - ""a/b"": 1, - ""c%d"": 2, - ""e^f"": 3, - ""g|h"": 4, - ""i\\j"": 5, - ""k\""l"": 6, - "" "": 7, - ""m~n"": 8 - } -"))); + var root = ConvertToObjectHelper.ConvertToDynamic(ConvertToObjectHelper.ConvertJObjectToObject(JsonUtility.FromJsonString<object>( + """ + { + "foo": ["bar", "baz"], + "": 0, + "a/b": 1, + "c%d": 2, + "e^f": 3, + "g|h": 4, + "i\\j": 5, + "k\"l": 6, + " ": 7, + "m~n": 8 + } + """))); - Assert.Equal(root, new JsonPointer("").GetValue(root)); - Assert.Equal(((dynamic)root).foo, new JsonPointer("/foo").GetValue(root)); - Assert.Equal("bar", new JsonPointer("/foo/0").GetValue(root)); - Assert.Equal(0L, new JsonPointer("/").GetValue(root)); - Assert.Equal(1L, new JsonPointer("/a~1b").GetValue(root)); - Assert.Equal(2L, new JsonPointer("/c%d").GetValue(root)); - Assert.Equal(3L, new JsonPointer("/e^f").GetValue(root)); - Assert.Equal(4L, new JsonPointer("/g|h").GetValue(root)); - Assert.Equal(5L, new JsonPointer("/i\\j").GetValue(root)); - Assert.Equal(6L, new JsonPointer("/k\"l").GetValue(root)); - Assert.Equal(7L, new JsonPointer("/ ").GetValue(root)); - Assert.Equal(8L, new JsonPointer("/m~0n").GetValue(root)); + new JsonPointer("").GetValue(root).Should().Be(root); + new JsonPointer("/foo").GetValue(root).Should().Be(((dynamic)root).foo); + new JsonPointer("/foo/0").GetValue(root).Should().Be("bar"); + new JsonPointer("/").GetValue(root).Should().Be(0); + new JsonPointer("/a~1b").GetValue(root).Should().Be(1); + new JsonPointer("/c%d").GetValue(root).Should().Be(2); + new JsonPointer("/e^f").GetValue(root).Should().Be(3); + new JsonPointer("/g|h").GetValue(root).Should().Be(4); + new JsonPointer("/i\\j").GetValue(root).Should().Be(5); + new JsonPointer("/k\"l").GetValue(root).Should().Be(6); + new JsonPointer("/ ").GetValue(root).Should().Be(7); + new JsonPointer("/m~0n").GetValue(root).Should().Be(8); } [Fact] diff --git a/test/Docfx.Build.SchemaDriven.Tests/MarkdownFragmentsValidationTest.cs b/test/Docfx.Build.SchemaDriven.Tests/MarkdownFragmentsValidationTest.cs index 0fbfee19ba1..a04406a268e 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/MarkdownFragmentsValidationTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/MarkdownFragmentsValidationTest.cs @@ -36,7 +36,7 @@ public void OverwriteUnEditableTest() _defaultFiles = new FileCollection(Directory.GetCurrentDirectory()); _applyTemplateSettings = new ApplyTemplateSettings(_inputFolder, _outputFolder) { RawModelExportSettings = { Export = true }, TransformDocument = true, }; - _templateManager = new TemplateManager(new List<string> { "template" }, null, _templateFolder); + _templateManager = new TemplateManager(["template"], null, _templateFolder); _rawModelFilePath = GetRawModelFilePath("FragmentsValidation.yml"); @@ -44,7 +44,7 @@ public void OverwriteUnEditableTest() var yamlFile = CreateFile("FragmentsValidation.yml", File.ReadAllText("TestData/inputs/FragmentsValidation.yml"), _inputFolder); var mdFile = CreateFile("FragmentsValidation.yml.md", File.ReadAllText("TestData/inputs/FragmentsValidation.yml.md"), _inputFolder); _files = new FileCollection(_defaultFiles); - _files.Add(DocumentType.Article, new[] { yamlFile }, _inputFolder); + _files.Add(DocumentType.Article, [yamlFile], _inputFolder); // Act Logger.RegisterListener(_listener); @@ -83,7 +83,7 @@ private void BuildDocument(FileCollection files) TemplateManager = _templateManager, }; - using var builder = new DocumentBuilder(LoadAssemblies(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(), []); builder.Build(parameters); } diff --git a/test/Docfx.Build.SchemaDriven.Tests/MergeMarkdownFragmentsTest.cs b/test/Docfx.Build.SchemaDriven.Tests/MergeMarkdownFragmentsTest.cs index 7a81ebb9fe1..f82fa591e58 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/MergeMarkdownFragmentsTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/MergeMarkdownFragmentsTest.cs @@ -1,4 +1,7 @@ -using System.Collections.Immutable; +// 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; @@ -31,21 +34,21 @@ public MergeMarkdownFragmentsTest() var defaultFiles = new FileCollection(Directory.GetCurrentDirectory()); _applyTemplateSettings = new ApplyTemplateSettings(_inputFolder, _outputFolder) { RawModelExportSettings = { Export = true }, TransformDocument = true, }; - _templateManager = new TemplateManager(new List<string> { "template" }, null, templateFolder); + _templateManager = new TemplateManager(["template"], null, templateFolder); _rawModelFilePath = GetRawModelFilePath("Suppressions.yml"); - var schemaFile = CreateFile("template/schemas/rest.mixed.schema.json", File.ReadAllText("TestData/schemas/rest.mixed.schema.json"), templateFolder); + CreateFile("template/schemas/rest.mixed.schema.json", File.ReadAllText("TestData/schemas/rest.mixed.schema.json"), templateFolder); var yamlFile = CreateFile("Suppressions.yml", File.ReadAllText("TestData/inputs/Suppressions.yml"), _inputFolder); _files = new FileCollection(defaultFiles); - _files.Add(DocumentType.Article, new[] { yamlFile }, _inputFolder); + _files.Add(DocumentType.Article, [yamlFile], _inputFolder); } [Fact] void TestMergeMarkdownFragments() { // Arrange - var mdFile = CreateFile("Suppressions.yml.md", File.ReadAllText("TestData/inputs/Suppressions.yml.md"), _inputFolder); + CreateFile("Suppressions.yml.md", File.ReadAllText("TestData/inputs/Suppressions.yml.md"), _inputFolder); // Act BuildDocument(_files); @@ -63,7 +66,7 @@ void TestMergeMarkdownFragments() public void TestMissingStartingH1CodeHeading() { // Arrange - var mdFile = CreateFile( + CreateFile( "Suppressions.yml.md", @"## `summary` markdown content @@ -95,7 +98,7 @@ markdown content public void TestInvalidSpaceMissing() { // Arrange - var mdFile = CreateFile( + CreateFile( "Suppressions.yml.md", @"#head_1_without_space @@ -129,7 +132,7 @@ markdown content public void TestValidSpaceMissing() { // Arrange - var mdFile = CreateFile( + CreateFile( "Suppressions.yml.md", @"# `management.azure.com.advisor.suppressions` @@ -153,7 +156,7 @@ markdown content public void TestInvalidYaml() { // Arrange - var mdFile = CreateFile( + CreateFile( "Suppressions.yml.md", @"# `management.azure.com.advisor.suppressions` ``` @@ -190,7 +193,7 @@ markdown content public void TestInvalidOPath() { // Arrange - var mdFile = CreateFile( + CreateFile( "Suppressions.yml.md", @"# `management.azure.com.advisor.suppressions` @@ -228,7 +231,7 @@ markdown content public void TestNotExistedUid() { // Arrange - var mdFile = CreateFile( + CreateFile( "Suppressions.yml.md", @"# `uid_not_exist` @@ -284,7 +287,7 @@ Some empty lines between H2 and this paragraph is tolerant public void TestDuplicateOPathsInYamlCodeBlockAndContentsBlock() { // Arrange - var mdFile = CreateFile( + CreateFile( "Suppressions.yml.md", @"# `management.azure.com.advisor.suppressions` ``` @@ -327,7 +330,7 @@ public void TestFragmentsWithIncremental() ClearLog(listener.Items); // add fragments - var mdFile = CreateFile( + CreateFile( "Suppressions.yml.md", @"# `management.azure.com.advisor.suppressions` ## ``summary`` @@ -349,11 +352,12 @@ I add a summary. // modify fragments UpdateFile( "Suppressions.yml.md", - new string[] { "# `management.azure.com.advisor.suppressions`", + [ + "# `management.azure.com.advisor.suppressions`", "## ``summary``", "I update a summary.", - "With [!include[invalid](invalid.md)]", - }, + "With [!include[invalid](invalid.md)]" + ], _inputFolder); BuildDocument(_files); @@ -399,7 +403,7 @@ private void BuildDocument(FileCollection files) TemplateManager = _templateManager, }; - using var builder = new DocumentBuilder(LoadAssemblies(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(), []); builder.Build(parameters); } diff --git a/test/Docfx.Build.SchemaDriven.Tests/SchemaDrivenProcessorTest.cs b/test/Docfx.Build.SchemaDriven.Tests/SchemaDrivenProcessorTest.cs index b17f774dafc..400694d1d06 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/SchemaDrivenProcessorTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/SchemaDrivenProcessorTest.cs @@ -40,7 +40,7 @@ public SchemaDrivenProcessorTest() TransformDocument = true, }; - _templateManager = new TemplateManager(new List<string> { "template" }, null, _templateFolder); + _templateManager = new TemplateManager(["template"], null, _templateFolder); } [Fact] @@ -84,7 +84,7 @@ public void TestRef() - description: ""**outside**"" ", _inputFolder); FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Article, new[] { inputFile }, _inputFolder); + files.Add(DocumentType.Article, [inputFile], _inputFolder); BuildDocument(files); Assert.Single(listener.Items); @@ -111,7 +111,7 @@ public void TestRef() <p>3.1.1<strong>Hello</strong></p> <p><strong>outside</strong></p> " - .Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries), + .Split(["\r\n", "\n"], StringSplitOptions.RemoveEmptyEntries), File.ReadAllLines(outputFilePath).Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()).ToArray()); } @@ -134,7 +134,7 @@ public void TestXrefResolver() var inputFileName = "inputs/CatLibrary.ICat.yml"; var inputFile = CreateFile(inputFileName, File.ReadAllText("TestData/inputs/CatLibrary.ICat.yml"), _inputFolder); FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Article, new[] { inputFile }, _inputFolder); + files.Add(DocumentType.Article, [inputFile], _inputFolder); // act BuildDocument(files); @@ -161,7 +161,7 @@ public void TestXrefResolver() Assert.Equal(@" eat:<p>eat event of cat. Every cat must implement this event. This method is within <a class=""xref"" href=""CatLibrary.ICat.html"">ICat</a></p> -|666|<span>net472</span><span>netstandard2_0</span>".Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None), +|666|<span>net472</span><span>netstandard2_0</span>".Split(["\r\n", "\n"], StringSplitOptions.None), outputFileContent); } @@ -232,7 +232,7 @@ public void TestValidMetadataReferenceWithIncremental() ", _inputFolder); FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Article, new[] { inputFile1, inputFile2, dependentMarkdown }, _inputFolder); + files.Add(DocumentType.Article, [inputFile1, inputFile2, dependentMarkdown], _inputFolder); BuildDocument(files); @@ -258,7 +258,7 @@ public void TestValidMetadataReferenceWithIncremental() Assert.Equal("postbuild2", rawModel2["metadata"]["postMeta"].ToString()); // change dependent markdown - UpdateFile("toc.md", new string[] { "# Updated" }, _inputFolder); + UpdateFile("toc.md", ["# Updated"], _inputFolder); BuildDocument(files); rawModel = JsonUtility.Deserialize<JObject>(rawModelFilePath); @@ -280,7 +280,7 @@ public void TestInvalidSchemaDefinition() { // Json.NET schema has limitation of 1000 calls per hour using var listener = new TestListenerScope(); - var schemaFile = CreateFile("template/schemas/mta.reference.test.schema.json", @" + CreateFile("template/schemas/mta.reference.test.schema.json", @" { ""$schema"": ""http://dotnet.github.io/docfx/schemas/v1.0/schema.json#"", ""version"": ""1.0.0"", @@ -333,7 +333,7 @@ public void TestInvalidObjectAgainstSchema() ", _inputFolder); FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Article, new[] { inputFile }, _inputFolder); + files.Add(DocumentType.Article, [inputFile], _inputFolder); BuildDocument(files); var errors = listener.Items.Where(s => s.Code == "ViolateSchema").ToList(); Assert.Single(errors); @@ -376,7 +376,7 @@ public void TestInvalidMetadataReference() ", _inputFolder); FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Article, new[] { inputFile1 }, _inputFolder); + files.Add(DocumentType.Article, [inputFile1], _inputFolder); Assert.Throws<InvalidJsonPointerException>(() => BuildDocument(files)); } @@ -394,7 +394,7 @@ private void BuildDocument(FileCollection files, DocumentBuildParameters dbp = n TemplateManager = _templateManager, }; - using var builder = new DocumentBuilder(LoadAssemblies(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(), []); builder.Build(parameters); } diff --git a/test/Docfx.Build.SchemaDriven.Tests/SchemaFragmentsIteratorTest.cs b/test/Docfx.Build.SchemaDriven.Tests/SchemaFragmentsIteratorTest.cs index e8f76657d87..35f256a0879 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/SchemaFragmentsIteratorTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/SchemaFragmentsIteratorTest.cs @@ -36,11 +36,11 @@ public void TestSchemaFragmentsIterator() private class UidPropertyCounter : ISchemaFragmentsHandler { - public List<string> ExistingMarkdownProperties { get; private set; } = new(); + public List<string> ExistingMarkdownProperties { get; } = []; - public List<string> MissingMarkdownProperties { get; private set; } = new(); + public List<string> MissingMarkdownProperties { get; } = []; - public List<string> ExistingUids { get; private set; } = new(); + public List<string> ExistingUids { get; } = []; public void HandleUid(string uidKey, YamlMappingNode node, Dictionary<string, MarkdownFragment> fragments, BaseSchema schema, string oPathPrefix, string uid) { diff --git a/test/Docfx.Build.SchemaDriven.Tests/SchemaMergerTest.cs b/test/Docfx.Build.SchemaDriven.Tests/SchemaMergerTest.cs index a33b88b301d..9ede2aedd41 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/SchemaMergerTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/SchemaMergerTest.cs @@ -36,7 +36,7 @@ public SchemaMergerTest() TransformDocument = true, }; - _templateManager = new TemplateManager(new List<string> { "template" }, null, _templateFolder); + _templateManager = new TemplateManager(["template"], null, _templateFolder); } [Fact] @@ -121,7 +121,7 @@ public void TestSchemaOverwriteWithGeneralMergeTypes() } }, }; - var schemaFile = CreateFile("template/schemas/testmerger.schema.json", JsonUtility.Serialize(schema), _templateFolder); + CreateFile("template/schemas/testmerger.schema.json", JsonUtility.Serialize(schema), _templateFolder); var inputFileName = "src.yml"; var inputFile = CreateFile(inputFileName, @"### YamlMime:testmerger uid: uid1 @@ -216,8 +216,8 @@ public void TestSchemaOverwriteWithGeneralMergeTypes() Overwrite with content ", _inputFolder); FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Article, new[] { inputFile }, _inputFolder); - files.Add(DocumentType.Overwrite, new[] { overwriteFile }, _inputFolder); + files.Add(DocumentType.Article, [inputFile], _inputFolder); + files.Add(DocumentType.Overwrite, [overwriteFile], _inputFolder); BuildDocument(files); // One plugin warning for yml and one plugin warning for overwrite file @@ -290,7 +290,7 @@ Overwrite with content public void TestSchemaOverwriteWithGeneralSchemaOptions() { using var listener = new TestListenerScope(); - var templateFile = CreateFile("template/testmerger2.html.tmpl", @"<xref uid=""{{xref}}""/>", _templateFolder); + CreateFile("template/testmerger2.html.tmpl", @"<xref uid=""{{xref}}""/>", _templateFolder); var schema = new Dictionary<string, object> { ["type"] = "object", @@ -343,8 +343,8 @@ public void TestSchemaOverwriteWithGeneralSchemaOptions() Nice ", _inputFolder); FileCollection files = new(_defaultFiles); - files.Add(DocumentType.Article, new[] { inputFile }, _inputFolder); - files.Add(DocumentType.Overwrite, new[] { overwriteFile }, _inputFolder); + files.Add(DocumentType.Article, [inputFile], _inputFolder); + files.Add(DocumentType.Overwrite, [overwriteFile], _inputFolder); BuildDocument(files); // One plugin warning for yml and one plugin warning for overwrite file @@ -378,7 +378,7 @@ private void BuildDocument(FileCollection files) TemplateManager = _templateManager, }; - using var builder = new DocumentBuilder(LoadAssemblies(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(), []); builder.Build(parameters); } diff --git a/test/Docfx.Build.Tests/ConceptualDocumentProcessorTest.cs b/test/Docfx.Build.Tests/ConceptualDocumentProcessorTest.cs index 51051ed04ca..4d4c7961e93 100644 --- a/test/Docfx.Build.Tests/ConceptualDocumentProcessorTest.cs +++ b/test/Docfx.Build.Tests/ConceptualDocumentProcessorTest.cs @@ -144,7 +144,7 @@ public void SystemKeysListShouldBeComplete() var outputRawModelPath = GetRawModelFilePath(file); Assert.True(File.Exists(outputRawModelPath)); var model = JsonUtility.Deserialize<Dictionary<string, object>>(outputRawModelPath); - var systemKeys = (JArray)model[Constants.PropertyName.SystemKeys]; + var systemKeys = ToList(model[Constants.PropertyName.SystemKeys]); Assert.NotEmpty(systemKeys); foreach (var key in model.Keys.Where(key => key[0] != '_' && key != "meta")) { @@ -417,7 +417,7 @@ private void BuildDocument(FileCollection files, Dictionary<string, object> meta TemplateManager = _templateManager }; - using var builder = new DocumentBuilder(Array.Empty<Assembly>(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder([], []); builder.Build(parameters); } @@ -447,5 +447,12 @@ public string CreateFile(string content, string fileName = null, string folder = } } + private static List<object> ToList(object value) + { + return value is List<object> list + ? list + : ((JArray)value).Cast<object>().ToList(); + } + #endregion } diff --git a/test/Docfx.Build.Tests/Docfx.Build.Tests.csproj b/test/Docfx.Build.Tests/Docfx.Build.Tests.csproj index a83813dcf9b..61c730cef26 100644 --- a/test/Docfx.Build.Tests/Docfx.Build.Tests.csproj +++ b/test/Docfx.Build.Tests/Docfx.Build.Tests.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <Compile Remove="TestData\snippets\dataflowdegreeofparallelism.cs" /> </ItemGroup> diff --git a/test/Docfx.Build.Tests/DocumentBuilderTest.cs b/test/Docfx.Build.Tests/DocumentBuilderTest.cs index 0b23fdb7ced..67b4ae138f4 100644 --- a/test/Docfx.Build.Tests/DocumentBuilderTest.cs +++ b/test/Docfx.Build.Tests/DocumentBuilderTest.cs @@ -728,7 +728,7 @@ private void BuildDocument( string templateFolder = null, string versionDir = null) { - using var builder = new DocumentBuilder(LoadAssemblies(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(), []); if (applyTemplateSettings == null) { applyTemplateSettings = new ApplyTemplateSettings(_inputFolder, _outputFolder); diff --git a/test/Docfx.Build.Tests/JintProcessorHelperTest.cs b/test/Docfx.Build.Tests/JintProcessorHelperTest.cs index acc518771e1..e520143599f 100644 --- a/test/Docfx.Build.Tests/JintProcessorHelperTest.cs +++ b/test/Docfx.Build.Tests/JintProcessorHelperTest.cs @@ -1,4 +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 Jint; using Xunit; diff --git a/test/Docfx.Build.Tests/PostProcessors/SitemapGeneratorTests.cs b/test/Docfx.Build.Tests/PostProcessors/SitemapGeneratorTests.cs index 9192cdb5201..4e8658a653b 100644 --- a/test/Docfx.Build.Tests/PostProcessors/SitemapGeneratorTests.cs +++ b/test/Docfx.Build.Tests/PostProcessors/SitemapGeneratorTests.cs @@ -16,7 +16,6 @@ public class SitemapGeneratorTests : TestBase private readonly ITestOutputHelper _output; public SitemapGeneratorTests(ITestOutputHelper output) - : base() { _output = output; } diff --git a/test/Docfx.Build.Tests/TemplatePageLoaderUnitTest.cs b/test/Docfx.Build.Tests/TemplatePageLoaderUnitTest.cs index 223533997cf..c85c2c72929 100644 --- a/test/Docfx.Build.Tests/TemplatePageLoaderUnitTest.cs +++ b/test/Docfx.Build.Tests/TemplatePageLoaderUnitTest.cs @@ -25,18 +25,18 @@ public void TestLoaderWhenNoFileExists() Assert.Empty(listener.Items); Assert.Empty(templates); - var file1 = CreateFile("a.js", string.Empty, _inputFolder); + CreateFile("a.js", string.Empty, _inputFolder); templates = LoadAllTemplates(); Assert.Empty(listener.Items); Assert.Empty(templates); // only allows file under root folder - var file2 = CreateFile("sub/a.tmpl", string.Empty, _inputFolder); + CreateFile("sub/a.tmpl", string.Empty, _inputFolder); templates = LoadAllTemplates(); Assert.Empty(listener.Items); Assert.Empty(templates); - var file3 = CreateFile("a.tmpl.js", string.Empty, _inputFolder); + CreateFile("a.tmpl.js", string.Empty, _inputFolder); templates = LoadAllTemplates(); Assert.Empty(listener.Items); Assert.Empty(templates); @@ -45,7 +45,7 @@ public void TestLoaderWhenNoFileExists() [Fact] public void TestLoaderWhenRendererExists() { - var file1 = CreateFile("a.tmpl", string.Empty, _inputFolder); + CreateFile("a.tmpl", string.Empty, _inputFolder); using var listener = new TestListenerScope(); var templates = LoadAllTemplates(); @@ -67,8 +67,8 @@ public void TestLoaderWhenRendererExists() [Fact] public void TestLoaderWhenPreprocessorExists() { - var file1 = CreateFile("a.primary.tmpl", string.Empty, _inputFolder); - var file2 = CreateFile("a.primary.js", "exports.transform = function(){}", _inputFolder); + CreateFile("a.primary.tmpl", string.Empty, _inputFolder); + CreateFile("a.primary.js", "exports.transform = function(){}", _inputFolder); using var listener = new TestListenerScope(); var templates = LoadAllTemplates(); @@ -93,7 +93,7 @@ public void TestLoaderWhenPreprocessorExists() [Fact] public void TestLoaderWhenStandalonePreprocessorExists() { - var file1 = CreateFile("a.ext.TMPL.js", "exports.transform = function(){}", _inputFolder); + CreateFile("a.ext.TMPL.js", "exports.transform = function(){}", _inputFolder); using var listener = new TestListenerScope(); var templates = LoadAllTemplates(); diff --git a/test/Docfx.Build.Tests/TocDocumentProcessorTest.cs b/test/Docfx.Build.Tests/TocDocumentProcessorTest.cs index c654e1ef350..6b2dbc2ca47 100644 --- a/test/Docfx.Build.Tests/TocDocumentProcessorTest.cs +++ b/test/Docfx.Build.Tests/TocDocumentProcessorTest.cs @@ -300,11 +300,20 @@ public void ProcessYamlTocWithMetadataShouldSucceed() var model = JsonUtility.Deserialize<TocItemViewModel>(outputRawModelPath); - Assert.NotNull(model.Metadata["metadata"]); - - var meta = (JObject)model.Metadata["metadata"]; - Assert.Single(meta); - Assert.Equal("content", meta["meta"]); + if (JsonUtility.IsSystemTextJsonSupported<TocItemViewModel>()) + { + var meta = (IDictionary<string, object>)model.Metadata["metadata"]; + Assert.NotNull(meta); + Assert.Single(meta); + Assert.Equal("content", meta["meta"]); + } + else + { + var meta = (JObject)model.Metadata["metadata"]; + Assert.NotNull(meta); + Assert.Single(meta); + Assert.Equal("content", meta["meta"]); + } var expectedModel = new TocItemViewModel { @@ -927,7 +936,7 @@ private void BuildDocument(FileCollection files) }.ToImmutableDictionary(), }; - using var builder = new DocumentBuilder(Array.Empty<Assembly>(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder([], []); builder.Build(parameters); } diff --git a/test/Docfx.Build.Tests/XRefMapDownloaderTest.cs b/test/Docfx.Build.Tests/XRefMapDownloaderTest.cs index 43d78bca55b..b3557df9c27 100644 --- a/test/Docfx.Build.Tests/XRefMapDownloaderTest.cs +++ b/test/Docfx.Build.Tests/XRefMapDownloaderTest.cs @@ -40,7 +40,7 @@ public async Task ReadLocalXRefMapJsonFileTest() // Arrange var path = Path.Combine(Directory.GetCurrentDirectory(), "TestData", "xrefmap.json"); - XRefMapDownloader downloader = new XRefMapDownloader(); + var downloader = new XRefMapDownloader(); var xrefMap = await downloader.DownloadAsync(new Uri(path)) as XRefMap; // Assert @@ -54,7 +54,7 @@ public async Task ReadLocalXRefMapGZippedJsonFileTest() // Arrange var path = Path.Combine(Directory.GetCurrentDirectory(), "TestData", "xrefmap.json.gz"); - XRefMapDownloader downloader = new XRefMapDownloader(); + var downloader = new XRefMapDownloader(); var xrefMap = await downloader.DownloadAsync(new Uri(path)) as XRefMap; // Assert @@ -68,7 +68,7 @@ public async Task ReadLocalXRefMapGZippedYamlFileTest() // Arrange var path = Path.Combine(Directory.GetCurrentDirectory(), "TestData", "xrefmap.yml.gz"); - XRefMapDownloader downloader = new XRefMapDownloader(); + var downloader = new XRefMapDownloader(); var xrefMap = await downloader.DownloadAsync(new Uri(path)) as XRefMap; // Assert @@ -85,7 +85,7 @@ public async Task ReadRemoteXRefMapYamlFileTest1() // Arrange var path = "https://horizongir.github.io/ZedGraph/xrefmap.yml"; - XRefMapDownloader downloader = new XRefMapDownloader(); + var downloader = new XRefMapDownloader(); var xrefMap = await downloader.DownloadAsync(new Uri(path)) as XRefMap; // Assert @@ -114,7 +114,7 @@ public async Task ReadRemoteXRefMapJsonFileTest2() // Arrange var path = "https://normanderwan.github.io/UnityXrefMaps/xrefmap.yml"; - XRefMapDownloader downloader = new XRefMapDownloader(); + var downloader = new XRefMapDownloader(); var xrefMap = await downloader.DownloadAsync(new Uri(path)) as XRefMap; // Assert 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 68825da8592..3aeb509bbd8 100644 --- a/test/Docfx.Build.UniversalReference.Tests/Docfx.Build.UniversalReference.Tests.csproj +++ b/test/Docfx.Build.UniversalReference.Tests/Docfx.Build.UniversalReference.Tests.csproj @@ -1,8 +1,8 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <None Include="TestData\**" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup> - + <ItemGroup> <ProjectReference Include="..\..\src\Docfx.Build\Docfx.Build.csproj" /> <ProjectReference Include="..\..\src\Docfx.Build.UniversalReference\Docfx.Build.UniversalReference.csproj" /> diff --git a/test/Docfx.Build.UniversalReference.Tests/UniversalReferenceDocumentProcessorTest.cs b/test/Docfx.Build.UniversalReference.Tests/UniversalReferenceDocumentProcessorTest.cs index 2ec94eb53f6..04240ae3d34 100644 --- a/test/Docfx.Build.UniversalReference.Tests/UniversalReferenceDocumentProcessorTest.cs +++ b/test/Docfx.Build.UniversalReference.Tests/UniversalReferenceDocumentProcessorTest.cs @@ -193,7 +193,7 @@ private void BuildDocument(FileCollection files) TemplateManager = _templateManager }; - using var builder = new DocumentBuilder(LoadAssemblies(), ImmutableArray<string>.Empty); + using var builder = new DocumentBuilder(LoadAssemblies(), []); builder.Build(parameters); } diff --git a/test/Docfx.Common.Tests/Docfx.Common.Tests.csproj b/test/Docfx.Common.Tests/Docfx.Common.Tests.csproj index d753b3a2558..241d5099754 100644 --- a/test/Docfx.Common.Tests/Docfx.Common.Tests.csproj +++ b/test/Docfx.Common.Tests/Docfx.Common.Tests.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\..\src\Docfx.YamlSerialization\Docfx.YamlSerialization.csproj" /> <ProjectReference Include="..\..\src\Docfx.Plugins\Docfx.Plugins.csproj" /> diff --git a/test/Docfx.Dotnet.Tests/Docfx.Dotnet.Tests.csproj b/test/Docfx.Dotnet.Tests/Docfx.Dotnet.Tests.csproj index 981e7f088ae..b5042bdb201 100644 --- a/test/Docfx.Dotnet.Tests/Docfx.Dotnet.Tests.csproj +++ b/test/Docfx.Dotnet.Tests/Docfx.Dotnet.Tests.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <None Include="TestDataReferences\**" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup> diff --git a/test/Docfx.Dotnet.Tests/GenerateMetadataFromCSUnitTest.cs b/test/Docfx.Dotnet.Tests/GenerateMetadataFromCSUnitTest.cs index 5ea684af187..862bdf0d125 100644 --- a/test/Docfx.Dotnet.Tests/GenerateMetadataFromCSUnitTest.cs +++ b/test/Docfx.Dotnet.Tests/GenerateMetadataFromCSUnitTest.cs @@ -475,16 +475,16 @@ public interface IFooBar : IFoo, IBar { } Assert.Equal("Test1", item.Parent); Assert.Equal( - new[] { "Test1.Bar`1", null, "System.String", null }, + ["Test1.Bar`1", null, "System.String", null], item.NameParts[SyntaxLanguage.CSharp].Select(p => p.Name)); Assert.Equal( - new[] { "Bar", "<", "string", ">" }, + ["Bar", "<", "string", ">"], item.NameParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName)); Assert.Equal( - new[] { "Bar", "<", "string", ">" }, + ["Bar", "<", "string", ">"], item.NameWithTypeParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName)); Assert.Equal( - new[] { "Test1", ".", "Bar", "<", "string", ">" }, + ["Test1", ".", "Bar", "<", "string", ">"], item.QualifiedNameParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName)); } { @@ -496,16 +496,16 @@ public interface IFooBar : IFoo, IBar { } Assert.Equal(6, item.NameParts[SyntaxLanguage.CSharp].Count); Assert.Equal( - new[] { "Test1.Foo`1", null, null, null, null, null }, + ["Test1.Foo`1", null, null, null, null, null], item.NameParts[SyntaxLanguage.CSharp].Select(p => p.Name)); Assert.Equal( - new[] { "Foo", "<", "T", "[", "]", ">" }, + ["Foo", "<", "T", "[", "]", ">"], item.NameParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName)); Assert.Equal( - new[] { "Foo", "<", "T", "[", "]", ">" }, + ["Foo", "<", "T", "[", "]", ">"], item.NameWithTypeParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName)); Assert.Equal( - new[] { "Test1", ".", "Foo", "<", "T", "[", "]", ">" }, + ["Test1", ".", "Foo", "<", "T", "[", "]", ">"], item.QualifiedNameParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName)); } { @@ -515,16 +515,16 @@ public interface IFooBar : IFoo, IBar { } Assert.Equal("Test1", item.Parent); Assert.Equal( - new[] { "Test1.Foo`1", null, "System.String", null, null, null }, + ["Test1.Foo`1", null, "System.String", null, null, null], item.NameParts[SyntaxLanguage.CSharp].Select(p => p.Name)); Assert.Equal( - new[] { "Foo", "<", "string", "[", "]", ">" }, + ["Foo", "<", "string", "[", "]", ">"], item.NameParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName)); Assert.Equal( - new[] { "Foo", "<", "string", "[", "]", ">" }, + ["Foo", "<", "string", "[", "]", ">"], item.NameWithTypeParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName)); Assert.Equal( - new[] { "Test1", ".", "Foo", "<", "string", "[", "]", ">" }, + ["Test1", ".", "Foo", "<", "string", "[", "]", ">"], item.QualifiedNameParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName)); } } @@ -2580,12 +2580,7 @@ public void Undefined(ConsoleKey key = ConsoleKey.None) { } var undefined = output.Items[0].Items[0].Items[1]; Assert.NotNull(undefined); - -#if NET8_0_OR_GREATER Assert.Equal("public void Undefined(ConsoleKey key = ConsoleKey.None)", undefined.Syntax.Content[SyntaxLanguage.CSharp]); -#else - Assert.Equal("public void Undefined(ConsoleKey key = default)", undefined.Syntax.Content[SyntaxLanguage.CSharp]); -#endif } [Fact] @@ -2653,12 +2648,8 @@ public void EnumUndefinedValue(ConsoleKey? key = (ConsoleKey)999) { } var enumUndefinedDefault = output.Items[0].Items[0].Items[3]; Assert.NotNull(enumUndefinedDefault); - -#if NET8_0_OR_GREATER Assert.Equal("public void EnumUndefinedDefault(ConsoleKey? key = ConsoleKey.None)", enumUndefinedDefault.Syntax.Content[SyntaxLanguage.CSharp]); -#else - Assert.Equal("public void EnumUndefinedDefault(ConsoleKey? key = null)", enumUndefinedDefault.Syntax.Content[SyntaxLanguage.CSharp]); -#endif + var enumUndefinedValue = output.Items[0].Items[0].Items[4]; Assert.NotNull(enumUndefinedValue); Assert.Equal("public void EnumUndefinedValue(ConsoleKey? key = (ConsoleKey)999)", enumUndefinedValue.Syntax.Content[SyntaxLanguage.CSharp]); @@ -3612,45 +3603,40 @@ public class Bar var output = Verify(code); var type = output.Items[0].Items[0]; - Assert.Equal(new[] - { + Assert.Equal([ "Test.Bar.op_Implicit(System.UInt32)~Test.Bar", "Test.Bar.op_Implicit(System.String)~Test.Bar", "Test.Bar.op_CheckedExplicit(Test.Bar)~System.UInt32", - "Test.Bar.op_CheckedExplicit(Test.Bar)~System.String[]", - }, type.Items.Select(item => item.Name)); + "Test.Bar.op_CheckedExplicit(Test.Bar)~System.String[]" + ], type.Items.Select(item => item.Name)); - Assert.Equal(new[] - { + Assert.Equal([ "implicit operator Bar(uint)", "implicit operator Bar(string)", "explicit operator checked uint(Bar)", - "explicit operator checked string[](Bar)", - }, type.Items.Select(item => item.DisplayNames[SyntaxLanguage.CSharp])); + "explicit operator checked string[](Bar)" + ], type.Items.Select(item => item.DisplayNames[SyntaxLanguage.CSharp])); - Assert.Equal(new[] - { + Assert.Equal([ "Bar.implicit operator Bar(uint)", "Bar.implicit operator Bar(string)", "Bar.explicit operator checked uint(Bar)", - "Bar.explicit operator checked string[](Bar)", - }, type.Items.Select(item => item.DisplayNamesWithType[SyntaxLanguage.CSharp])); + "Bar.explicit operator checked string[](Bar)" + ], type.Items.Select(item => item.DisplayNamesWithType[SyntaxLanguage.CSharp])); - Assert.Equal(new[] - { + Assert.Equal([ "Test.Bar.implicit operator Test.Bar(uint)", "Test.Bar.implicit operator Test.Bar(string)", "Test.Bar.explicit operator checked uint(Test.Bar)", - "Test.Bar.explicit operator checked string[](Test.Bar)", - }, type.Items.Select(item => item.DisplayQualifiedNames[SyntaxLanguage.CSharp])); + "Test.Bar.explicit operator checked string[](Test.Bar)" + ], type.Items.Select(item => item.DisplayQualifiedNames[SyntaxLanguage.CSharp])); - Assert.Equal(new[] - { + Assert.Equal([ "Test.Bar.op_Implicit*", "Test.Bar.op_Implicit*", "Test.Bar.op_CheckedExplicit*", - "Test.Bar.op_CheckedExplicit*", - }, type.Items.Select(item => item.Overload)); + "Test.Bar.op_CheckedExplicit*" + ], type.Items.Select(item => item.Overload)); Assert.Equal("implicit operator", string.Concat(output.References["Test.Bar.op_Implicit*"].NameParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName))); Assert.Equal("explicit operator checked", string.Concat(output.References["Test.Bar.op_CheckedExplicit*"].NameParts[SyntaxLanguage.CSharp].Select(p => p.DisplayName))); @@ -3678,13 +3664,12 @@ internal interface IFoo { } var output = Verify(code, new() { IncludePrivateMembers = true }); var foo = output.Items[0].Items[0]; Assert.Equal("internal class Foo : IFoo", foo.Syntax.Content[SyntaxLanguage.CSharp]); - Assert.Equal(new[] - { + Assert.Equal([ "internal void M1()", "protected internal void M2()", "private protected void M3()", - "private void M4()", - }, foo.Items.Select(item => item.Syntax.Content[SyntaxLanguage.CSharp])); + "private void M4()" + ], foo.Items.Select(item => item.Syntax.Content[SyntaxLanguage.CSharp])); } [Fact] diff --git a/test/Docfx.Glob.Tests/Docfx.Glob.Tests.csproj b/test/Docfx.Glob.Tests/Docfx.Glob.Tests.csproj index b6824f92d81..38cbb3cdba2 100644 --- a/test/Docfx.Glob.Tests/Docfx.Glob.Tests.csproj +++ b/test/Docfx.Glob.Tests/Docfx.Glob.Tests.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\..\src\Docfx.Glob\Docfx.Glob.csproj" /> <ProjectReference Include="..\Docfx.Tests.Common\Docfx.Tests.Common.csproj" /> diff --git a/test/Docfx.Glob.Tests/GlobFileTest.cs b/test/Docfx.Glob.Tests/GlobFileTest.cs index aa42185b374..da22b713f17 100644 --- a/test/Docfx.Glob.Tests/GlobFileTest.cs +++ b/test/Docfx.Glob.Tests/GlobFileTest.cs @@ -51,33 +51,33 @@ public void TestGlobGetFilesShouldAbleToGetFiles() CreateFilesOrFolders(_workingDirectory, files); var result = FileGlob.GetFiles( _workingDirectory, - new string[] { "**.md" }, + ["**.md"], null).ToArray(); Assert.Equal(3, result.Length); result = FileGlob.GetFiles( _workingDirectory, null, - new string[] { "**.md" }).ToArray(); + ["**.md"]).ToArray(); Assert.Empty(result); result = FileGlob.GetFiles( _workingDirectory, - new string[] { "**" }, - new string[] { "**.md" }).ToArray(); + ["**"], + ["**.md"]).ToArray(); Assert.Equal(6, result.Length); result = FileGlob.GetFiles( _workingDirectory, - new string[] { "**.md" }, - new string[] { "**{J,L}/**" }).ToArray(); + ["**.md"], + ["**{J,L}/**"]).ToArray(); Assert.Single(result); result = FileGlob.GetFiles( _workingDirectory, - new string[] { "**.md", "**.csproj" }, - new string[] { "**J/**", "**/M/**" }).ToArray(); + ["**.md", "**.csproj"], + ["**J/**", "**/M/**"]).ToArray(); Assert.Single(result); result = FileGlob.GetFiles( _workingDirectory + "/Root", - new string[] { "[EJ]/*.{md,cs,csproj}" }, - new string[] { "**.cs" }).ToArray(); + ["[EJ]/*.{md,cs,csproj}"], + ["**.cs"]).ToArray(); Assert.Equal(2, result.Length); } diff --git a/test/Docfx.MarkdigEngine.Extensions.Tests/CodeTest.cs b/test/Docfx.MarkdigEngine.Extensions.Tests/CodeTest.cs index 1c4fe5204f6..35b563d1c86 100644 --- a/test/Docfx.MarkdigEngine.Extensions.Tests/CodeTest.cs +++ b/test/Docfx.MarkdigEngine.Extensions.Tests/CodeTest.cs @@ -60,7 +60,7 @@ void TableColumnsProperty() tbl.Columns[1].Background = Brushes.AliceBlue; tbl.Columns[2].Width = new GridLength(20); tbl.Columns[3].Background = Brushes.AliceBlue; -#endregion +#endregion // Get a count of columns hosted by the table. // <Snippet_Table_Columns_Count> @@ -169,7 +169,7 @@ void TableRowGroupRows() tbl.RowGroups.Add(trg); // Add rows to a TableRowGroup collection. - int rowsToAdd = 4; + int rowsToAdd = 4; for (int x = 0; x < rowsToAdd; x++) trg.Rows.Add(new TableRow()); @@ -200,7 +200,7 @@ void TableRowGroupRows() // Remove all rows... trg.Rows.Clear(); - // </Snippet_TableRowGroup_Rows> + // </Snippet_TableRowGroup_Rows> } void TableCellConst() @@ -717,14 +717,14 @@ int main() AppDomain^ root = AppDomain::CurrentDomain; AppDomainSetup^ setup = gcnew AppDomainSetup(); - setup->ApplicationBase = + setup->ApplicationBase = root->SetupInformation->ApplicationBase + ""MyAppSubfolder\\""; AppDomain^ domain = AppDomain::CreateDomain(""MyDomain"", nullptr, setup); - Console::WriteLine(""Application base of {0}:\r\n\t{1}"", + Console::WriteLine(""Application base of {0}:\r\n\t{1}"", root->FriendlyName, root->SetupInformation->ApplicationBase); - Console::WriteLine(""Application base of {0}:\r\n\t{1}"", + Console::WriteLine(""Application base of {0}:\r\n\t{1}"", domain->FriendlyName, domain->SetupInformation->ApplicationBase); AppDomain::Unload(domain); @@ -955,14 +955,14 @@ int main() AppDomain^ root = AppDomain::CurrentDomain; AppDomainSetup^ setup = gcnew AppDomainSetup(); - setup->ApplicationBase = + setup->ApplicationBase = root->SetupInformation->ApplicationBase + ""MyAppSubfolder\\""; AppDomain^ domain = AppDomain::CreateDomain(""MyDomain"", nullptr, setup); - Console::WriteLine(""Application base of {0}:\r\n\t{1}"", + Console::WriteLine(""Application base of {0}:\r\n\t{1}"", root->FriendlyName, root->SetupInformation->ApplicationBase); - Console::WriteLine(""Application base of {0}:\r\n\t{1}"", + Console::WriteLine(""Application base of {0}:\r\n\t{1}"", domain->FriendlyName, domain->SetupInformation->ApplicationBase); AppDomain::Unload(domain); @@ -1315,14 +1315,14 @@ int main() AppDomain^ root = AppDomain::CurrentDomain; AppDomainSetup^ setup = gcnew AppDomainSetup(); - setup->ApplicationBase = + setup->ApplicationBase = root->SetupInformation->ApplicationBase + "MyAppSubfolder\\"; AppDomain^ domain = AppDomain::CreateDomain("MyDomain", nullptr, setup); - Console::WriteLine("Application base of {0}:\r\n\t{1}", + Console::WriteLine("Application base of {0}:\r\n\t{1}", root->FriendlyName, root->SetupInformation->ApplicationBase); - Console::WriteLine("Application base of {0}:\r\n\t{1}", + Console::WriteLine("Application base of {0}:\r\n\t{1}", domain->FriendlyName, domain->SetupInformation->ApplicationBase); AppDomain::Unload(domain); @@ -1870,8 +1870,8 @@ public void CodeTestBlockGeneral(string source, string expected) public void CodeTestBlockGeneralCSharp_Error(string source) { // arrange - var filename = string.Empty; - var content = string.Empty; + string filename; + string content; if (source.Contains("source.cs")) { filename = "source.cs"; diff --git a/test/Docfx.MarkdigEngine.Extensions.Tests/NolocTest.cs b/test/Docfx.MarkdigEngine.Extensions.Tests/NolocTest.cs index cd9341fff8c..40b239e1ab1 100644 --- a/test/Docfx.MarkdigEngine.Extensions.Tests/NolocTest.cs +++ b/test/Docfx.MarkdigEngine.Extensions.Tests/NolocTest.cs @@ -1,4 +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 Xunit; namespace Docfx.MarkdigEngine.Tests; diff --git a/test/Docfx.MarkdigEngine.Tests/Docfx.MarkdigEngine.Tests.csproj b/test/Docfx.MarkdigEngine.Tests/Docfx.MarkdigEngine.Tests.csproj index 816e8a6a788..8c61517ccfb 100644 --- a/test/Docfx.MarkdigEngine.Tests/Docfx.MarkdigEngine.Tests.csproj +++ b/test/Docfx.MarkdigEngine.Tests/Docfx.MarkdigEngine.Tests.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <ProjectReference Include="..\..\src\Docfx.Build\Docfx.Build.csproj" /> <ProjectReference Include="..\..\src\Docfx.MarkdigEngine.Extensions\Docfx.MarkdigEngine.Extensions.csproj" /> diff --git a/test/Docfx.MarkdigEngine.Tests/InclusionTest.cs b/test/Docfx.MarkdigEngine.Tests/InclusionTest.cs index 98acf3606bc..d10bb7f7668 100644 --- a/test/Docfx.MarkdigEngine.Tests/InclusionTest.cs +++ b/test/Docfx.MarkdigEngine.Tests/InclusionTest.cs @@ -13,11 +13,11 @@ namespace Docfx.MarkdigEngine.Tests; [Collection("docfx STA")] public class InclusionTest { - [Fact] - [Trait("Related", "Inclusion")] - public void TestBlockLevelInclusion_General() - { - var root = @" + [Fact] + [Trait("Related", "Inclusion")] + public void TestBlockLevelInclusion_General() + { + var root = @" # Hello World Test Include File @@ -28,7 +28,7 @@ Test Include File "; - var refa = @"--- + var refa = @"--- title: include file description: include file --- @@ -39,37 +39,37 @@ Test Include File "; - var refb = @"--- + var refb = @"--- title: include file description: include file --- # Hello Include File B "; - TestUtility.WriteToFile("r/root.md", root); - TestUtility.WriteToFile("r/a.md", refa); - TestUtility.WriteToFile("r/b.md", refb); + TestUtility.WriteToFile("r/root.md", root); + TestUtility.WriteToFile("r/a.md", refa); + TestUtility.WriteToFile("r/b.md", refb); - var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); - var expected = @"<h1 id=""hello-world"">Hello World</h1> + var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); + var expected = @"<h1 id=""hello-world"">Hello World</h1> <p>Test Include File</p> <h1 id=""hello-include-file-a"">Hello Include File A</h1> <p>This is a file A included by another file. # Hello Include File B [!include<a href=""%7E/r/b.md"">refb</a> ]</p> <p>[!include<a href=""a.md"">refa</a> ]</p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); + Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); - var dependency = result.Dependency; - var expectedDependency = new List<string> { "a.md", "b.md" }; - Assert.Equal(expectedDependency.ToImmutableList(), dependency); - } + var dependency = result.Dependency; + var expectedDependency = new List<string> { "a.md", "b.md" }; + Assert.Equal(expectedDependency.ToImmutableList(), dependency); + } - [Fact] - [Trait("Related", "IncludeFile")] - public void TestBlockLevelInclusion_Escape() - { - var root = @" + [Fact] + [Trait("Related", "IncludeFile")] + public void TestBlockLevelInclusion_Escape() + { + var root = @" # Hello World Test Include File @@ -78,33 +78,33 @@ Test Include File "; - var refa = @" + var refa = @" # Hello Include File A This is a file A included by another file. "; - TestUtility.WriteToFile("r/root.md", root); - TestUtility.WriteToFile("r/a(x).md", refa); + TestUtility.WriteToFile("r/root.md", root); + TestUtility.WriteToFile("r/a(x).md", refa); - var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); - var expected = @"<h1 id=""hello-world"">Hello World</h1> + var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); + var expected = @"<h1 id=""hello-world"">Hello World</h1> <p>Test Include File</p> <h1 id=""hello-include-file-a"">Hello Include File A</h1> <p>This is a file A included by another file.</p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); + Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); - var dependency = result.Dependency; - var expectedDependency = new List<string> { "a(x).md" }; - Assert.Equal(expectedDependency.ToImmutableList(), dependency); - } + var dependency = result.Dependency; + var expectedDependency = new List<string> { "a(x).md" }; + Assert.Equal(expectedDependency.ToImmutableList(), dependency); + } - [Fact] - [Trait("Related", "Inclusion")] - public void TestBlockLevelInclusion_RelativePath() - { - var root = @" + [Fact] + [Trait("Related", "Inclusion")] + public void TestBlockLevelInclusion_RelativePath() + { + var root = @" # Hello World Test Include File @@ -113,33 +113,33 @@ Test Include File "; - var refa = @" + var refa = @" # Hello Include File A This is a file A included by another file. "; - TestUtility.WriteToFile("r/root.md", root); - TestUtility.WriteToFile("r/a.md", refa); + TestUtility.WriteToFile("r/root.md", root); + TestUtility.WriteToFile("r/a.md", refa); - var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); - var expected = @"<h1 id=""hello-world"">Hello World</h1> + var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); + var expected = @"<h1 id=""hello-world"">Hello World</h1> <p>Test Include File</p> <h1 id=""hello-include-file-a"">Hello Include File A</h1> <p>This is a file A included by another file.</p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); + Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); - var dependency = result.Dependency; - var expectedDependency = new List<string> { "a.md" }; - Assert.Equal(expectedDependency.ToImmutableList(), dependency); - } + var dependency = result.Dependency; + var expectedDependency = new List<string> { "a.md" }; + Assert.Equal(expectedDependency.ToImmutableList(), dependency); + } - [Fact] - [Trait("Related", "Inclusion")] - public void TestBlockLevelInclusion_CycleInclude() - { - var root = @" + [Fact] + [Trait("Related", "Inclusion")] + public void TestBlockLevelInclusion_CycleInclude() + { + var root = @" # Hello World Test Include File @@ -148,7 +148,7 @@ Test Include File "; - var refa = @" + var refa = @" # Hello Include File A This is a file A included by another file. @@ -157,37 +157,37 @@ This is a file A included by another file. "; - var refb = @" + var refb = @" # Hello Include File B [!include[refa](a.md)] "; - TestUtility.WriteToFile("r/root.md", root); - TestUtility.WriteToFile("r/a.md", refa); - TestUtility.WriteToFile("r/b.md", refb); + TestUtility.WriteToFile("r/root.md", root); + TestUtility.WriteToFile("r/a.md", refa); + TestUtility.WriteToFile("r/b.md", refb); - var listener = new TestLoggerListener(); - Logger.RegisterListener(listener); - var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); - var expected = @"<h1 id=""hello-world"">Hello World</h1> + var listener = new TestLoggerListener(); + Logger.RegisterListener(listener); + var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); + var expected = @"<h1 id=""hello-world"">Hello World</h1> <p>Test Include File</p> <h1 id=""hello-include-file-a"">Hello Include File A</h1> <p>This is a file A included by another file.</p> <h1 id=""hello-include-file-b"">Hello Include File B</h1> [!include[refa](a.md)]"; - Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); - Logger.UnregisterListener(listener); - Assert.Collection(listener.Items, log => Assert.Equal( - "Build has identified file(s) referencing each other: 'r/root.md' --> '~/r/a.md' --> '~/r/b.md' --> '~/r/a.md'", - log.Message)); - } - - [Fact] - [Trait("Related", "Inclusion")] - public void TestInlineLevelInclusion_General() - { - var root = @" + Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); + Logger.UnregisterListener(listener); + Assert.Collection(listener.Items, log => Assert.Equal( + "Build has identified file(s) referencing each other: 'r/root.md' --> '~/r/a.md' --> '~/r/b.md' --> '~/r/a.md'", + log.Message)); + } + + [Fact] + [Trait("Related", "Inclusion")] + public void TestInlineLevelInclusion_General() + { + var root = @" # Hello World Test Inline Included File: \\[!include[refa](~/r/a.md)]. @@ -195,122 +195,122 @@ public void TestInlineLevelInclusion_General() Test Escaped Inline Included File: \[!include[refa](~/r/a.md)]. "; - var refa = "This is a **included** token"; + var refa = "This is a **included** token"; - TestUtility.WriteToFile("r/root.md", root); - TestUtility.WriteToFile("r/a.md", refa); + TestUtility.WriteToFile("r/root.md", root); + TestUtility.WriteToFile("r/a.md", refa); - var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); ; - var expected = @"<h1 id=""hello-world"">Hello World</h1> + var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); ; + var expected = @"<h1 id=""hello-world"">Hello World</h1> <p>Test Inline Included File: \This is a <strong>included</strong> token.</p> <p>Test Escaped Inline Included File: [!include<a href=""%7E/r/a.md"">refa</a>].</p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); + Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); - var dependency = result.Dependency; - var expectedDependency = new List<string> { "a.md" }; - Assert.Equal(expectedDependency.ToImmutableList(), dependency); - } + var dependency = result.Dependency; + var expectedDependency = new List<string> { "a.md" }; + Assert.Equal(expectedDependency.ToImmutableList(), dependency); + } - [Fact] - [Trait("Related", "Inclusion")] - public void TestInlineLevelInclusion_CycleInclude() - { - var root = @" + [Fact] + [Trait("Related", "Inclusion")] + public void TestInlineLevelInclusion_CycleInclude() + { + var root = @" # Hello World Test Inline Included File: [!include[refa](~/r/a.md)]. "; - var refa = "This is a **included** token with [!include[root](~/r/root.md)]"; + var refa = "This is a **included** token with [!include[root](~/r/root.md)]"; - TestUtility.WriteToFile("r/root.md", root); - TestUtility.WriteToFile("r/a.md", refa); + TestUtility.WriteToFile("r/root.md", root); + TestUtility.WriteToFile("r/a.md", refa); - var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); - var expected = @"<h1 id=""hello-world"">Hello World</h1> + var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); + var expected = @"<h1 id=""hello-world"">Hello World</h1> <p>Test Inline Included File: This is a <strong>included</strong> token with [!include[root](~/r/root.md)].</p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); - } + Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); + } - [Fact] - [Trait("Related", "Inclusion")] - public void TestInlineLevelInclusion_Block() - { - var root = @" + [Fact] + [Trait("Related", "Inclusion")] + public void TestInlineLevelInclusion_Block() + { + var root = @" # Hello World Test Inline Included File: [!include[refa](~/r/a.md)]. "; - var refa = @"## This is a included token + var refa = @"## This is a included token block content in Inline Inclusion."; - TestUtility.WriteToFile("r/root.md", root); - TestUtility.WriteToFile("r/a.md", refa); + TestUtility.WriteToFile("r/root.md", root); + TestUtility.WriteToFile("r/a.md", refa); - var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); - var expected = @"<h1 id=""hello-world"">Hello World</h1> + var result = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); + var expected = @"<h1 id=""hello-world"">Hello World</h1> <p>Test Inline Included File: ## This is a included tokenblock content in Inline Inclusion..</p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); - - var dependency = result.Dependency; - var expectedDependency = new List<string> { "a.md" }; - Assert.Equal(expectedDependency.ToImmutableList(), dependency); - } - - [Fact] - [Trait("Related", "DfmMarkdown")] - public void TestBlockLevelInclusion() - { - // -r - // |- root.md - // |- empty.md - // |- a - // | |- refc.md - // |- b - // | |- linkAndRefRoot.md - // | |- a.md - // | |- img - // | | |- img.jpg - // |- c - // | |- c.md - // |- link - // |- link2.md - // |- md - // |- c.md - var root = @" + Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); + + var dependency = result.Dependency; + var expectedDependency = new List<string> { "a.md" }; + Assert.Equal(expectedDependency.ToImmutableList(), dependency); + } + + [Fact] + [Trait("Related", "DfmMarkdown")] + public void TestBlockLevelInclusion() + { + // -r + // |- root.md + // |- empty.md + // |- a + // | |- refc.md + // |- b + // | |- linkAndRefRoot.md + // | |- a.md + // | |- img + // | | |- img.jpg + // |- c + // | |- c.md + // |- link + // |- link2.md + // |- md + // |- c.md + var root = @" [!include[linkAndRefRoot](b/linkAndRefRoot.md)] [!include[refc](a/refc.md ""This is root"")] [!include[refc_using_cache](a/refc.md)] [!include[empty](empty.md)] [!include[external](http://microsoft.com/a.md)]"; - var linkAndRefRoot = @" + var linkAndRefRoot = @" Paragraph1 [link](a.md) [!include-[link2](../link/link2.md)] ![Image](img/img.jpg) [!include-[root](../root.md)]"; - var link2 = "[link](md/c.md)"; - var refc = @"[!include[c](../c/c.md ""This is root"")]"; - var c = "**Hello**"; - TestUtility.WriteToFile("r/root.md", root); - - TestUtility.WriteToFile("r/a/refc.md", refc); - TestUtility.WriteToFile("r/b/linkAndRefRoot.md", linkAndRefRoot); - TestUtility.WriteToFile("r/link/link2.md", link2); - TestUtility.WriteToFile("r/c/c.md", c); - TestUtility.WriteToFile("r/empty.md", string.Empty); - var marked = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); - var dependency = marked.Dependency; - var expected = @"<p>Paragraph1 + var link2 = "[link](md/c.md)"; + var refc = @"[!include[c](../c/c.md ""This is root"")]"; + var c = "**Hello**"; + TestUtility.WriteToFile("r/root.md", root); + + TestUtility.WriteToFile("r/a/refc.md", refc); + TestUtility.WriteToFile("r/b/linkAndRefRoot.md", linkAndRefRoot); + TestUtility.WriteToFile("r/link/link2.md", link2); + TestUtility.WriteToFile("r/c/c.md", c); + TestUtility.WriteToFile("r/empty.md", string.Empty); + var marked = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); + var dependency = marked.Dependency; + var expected = @"<p>Paragraph1 <a href=""%7E/r/b/a.md"">link</a> <a href=""%7E/r/link/md/c.md"">link</a> <img src=""%7E/r/b/img/img.jpg"" alt=""Image"" /> @@ -319,154 +319,154 @@ public void TestBlockLevelInclusion() <p><strong>Hello</strong></p> [!include[external](http://microsoft.com/a.md)]".Replace("\r\n", "\n"); - Assert.Equal(expected, marked.Html); - Assert.Equal( - new[] - { + Assert.Equal(expected, marked.Html); + Assert.Equal( + new[] + { "a/refc.md", "b/linkAndRefRoot.md", "c/c.md", "empty.md", "link/link2.md", "root.md", - }, - dependency.OrderBy(x => x).ToArray()); - } - - [Fact] - [Trait("Related", "DfmMarkdown")] - public void TestBlockLevelInclusionWithSameFile() - { - // -r - // |- r.md - // |- a - // | |- a.md - // |- b - // | |- token.md - // |- c - // |- d - // |- d.md - // |- img - // | |- img.jpg - var r = @" + }, + dependency.OrderBy(x => x).ToArray()); + } + + [Fact] + [Trait("Related", "DfmMarkdown")] + public void TestBlockLevelInclusionWithSameFile() + { + // -r + // |- r.md + // |- a + // | |- a.md + // |- b + // | |- token.md + // |- c + // |- d + // |- d.md + // |- img + // | |- img.jpg + var r = @" [!include[](a/a.md)] [!include[](c/d/d.md)] "; - var a = @" + var a = @" [!include[](../b/token.md)]"; - var token = @" + var token = @" ![](../img/img.jpg) [](#anchor) [a](../a/a.md) [](invalid.md) [d](../c/d/d.md#anchor) "; - var d = @" + var d = @" [!include[](../../b/token.md)]"; - TestUtility.WriteToFile("r/r.md", r); - TestUtility.WriteToFile("r/a/a.md", a); - TestUtility.WriteToFile("r/b/token.md", token); - TestUtility.WriteToFile("r/c/d/d.md", d); - var marked = TestUtility.MarkupWithoutSourceInfo(a, "r/a/a.md"); - var expected = @"<p><img src=""%7E/r/img/img.jpg"" alt="""" /> + TestUtility.WriteToFile("r/r.md", r); + TestUtility.WriteToFile("r/a/a.md", a); + TestUtility.WriteToFile("r/b/token.md", token); + TestUtility.WriteToFile("r/c/d/d.md", d); + var marked = TestUtility.MarkupWithoutSourceInfo(a, "r/a/a.md"); + var expected = @"<p><img src=""%7E/r/img/img.jpg"" alt="""" /> <a href=""#anchor""></a> <a href=""%7E/r/a/a.md"">a</a> <a href=""%7E/r/b/invalid.md""></a> <a href=""%7E/r/c/d/d.md#anchor"">d</a></p>".Replace("\r\n", "\n") + "\n"; - var dependency = marked.Dependency; - Assert.Equal(expected, marked.Html); - Assert.Equal( - new[] { "../b/token.md" }, - dependency.OrderBy(x => x).ToArray()); - - marked = TestUtility.MarkupWithoutSourceInfo(d, "r/c/d/d.md"); - dependency = marked.Dependency; - Assert.Equal(expected, marked.Html); - Assert.Equal( - new[] { "../../b/token.md" }, - dependency.OrderBy(x => x).ToArray()); - - dependency.Clear(); - marked = TestUtility.MarkupWithoutSourceInfo(r, "r/r.md"); - dependency = marked.Dependency; - Assert.Equal($"{expected}{expected}", marked.Html); - Assert.Equal( - new[] { "a/a.md", "b/token.md", "c/d/d.md" }, - dependency.OrderBy(x => x).ToArray()); - } - - [Fact] - [Trait("Related", "DfmMarkdown")] - public void TestBlockLevelInclusionWithWorkingFolder() - { - // -r - // |- root.md - // |- b - // | |- linkAndRefRoot.md - var root = "[!include[linkAndRefRoot](~/r/b/linkAndRefRoot.md)]"; - var linkAndRefRoot = "Paragraph1"; - TestUtility.WriteToFile("r/root.md", root); - TestUtility.WriteToFile("r/b/linkAndRefRoot.md", linkAndRefRoot); - var marked = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); - var expected = "<p>Paragraph1</p>" + "\n"; - Assert.Equal(expected, marked.Html); - } - - #region Fallback folders testing - - [Fact(Skip = "won't support")] - [Trait("Related", "DfmMarkdown")] - public void TestFallback_Inclusion_random_name() - { - // -root_folder (this is also docset folder) - // |- root.md - // |- a_folder - // | |- a.md - // |- token_folder - // | |- token1.md - // -fallback_folder - // |- token_folder - // |- token2.md - - // 1. Prepare data - var uniqueFolderName = Path.GetRandomFileName(); - var root = $@"1markdown root.md main content start. + var dependency = marked.Dependency; + Assert.Equal(expected, marked.Html); + Assert.Equal( + new[] { "../b/token.md" }, + dependency.OrderBy(x => x).ToArray()); + + marked = TestUtility.MarkupWithoutSourceInfo(d, "r/c/d/d.md"); + dependency = marked.Dependency; + Assert.Equal(expected, marked.Html); + Assert.Equal( + new[] { "../../b/token.md" }, + dependency.OrderBy(x => x).ToArray()); + + dependency.Clear(); + marked = TestUtility.MarkupWithoutSourceInfo(r, "r/r.md"); + dependency = marked.Dependency; + Assert.Equal($"{expected}{expected}", marked.Html); + Assert.Equal( + new[] { "a/a.md", "b/token.md", "c/d/d.md" }, + dependency.OrderBy(x => x).ToArray()); + } + + [Fact] + [Trait("Related", "DfmMarkdown")] + public void TestBlockLevelInclusionWithWorkingFolder() + { + // -r + // |- root.md + // |- b + // | |- linkAndRefRoot.md + var root = "[!include[linkAndRefRoot](~/r/b/linkAndRefRoot.md)]"; + var linkAndRefRoot = "Paragraph1"; + TestUtility.WriteToFile("r/root.md", root); + TestUtility.WriteToFile("r/b/linkAndRefRoot.md", linkAndRefRoot); + var marked = TestUtility.MarkupWithoutSourceInfo(root, "r/root.md"); + var expected = "<p>Paragraph1</p>" + "\n"; + Assert.Equal(expected, marked.Html); + } + + #region Fallback folders testing + + [Fact(Skip = "won't support")] + [Trait("Related", "DfmMarkdown")] + public void TestFallback_Inclusion_random_name() + { + // -root_folder (this is also docset folder) + // |- root.md + // |- a_folder + // | |- a.md + // |- token_folder + // | |- token1.md + // -fallback_folder + // |- token_folder + // |- token2.md + + // 1. Prepare data + var uniqueFolderName = Path.GetRandomFileName(); + var root = $@"1markdown root.md main content start. [!include[a](a_folder_{uniqueFolderName}/a_{uniqueFolderName}.md ""This is a.md"")] markdown root.md main content end."; - var a = $@"1markdown a.md main content start. + var a = $@"1markdown a.md main content start. [!include[token1](../token_folder_{uniqueFolderName}/token1_{uniqueFolderName}.md ""This is token1.md"")] [!include[token1](../token_folder_{uniqueFolderName}/token2_{uniqueFolderName}.md ""This is token2.md"")] markdown a.md main content end."; - var token1 = $@"1markdown token1.md content start. + var token1 = $@"1markdown token1.md content start. [!include[token2](token2_{uniqueFolderName}.md ""This is token2.md"")] markdown token1.md content end."; - var token2 = "**1markdown token2.md main content**"; + var token2 = "**1markdown token2.md main content**"; - TestUtility.WriteToFile($"{uniqueFolderName}/root_folder_{uniqueFolderName}/root_{uniqueFolderName}.md", root); - TestUtility.WriteToFile($"{uniqueFolderName}/root_folder_{uniqueFolderName}/a_folder_{uniqueFolderName}/a_{uniqueFolderName}.md", a); - TestUtility.WriteToFile($"{uniqueFolderName}/root_folder_{uniqueFolderName}/token_folder_{uniqueFolderName}/token1_{uniqueFolderName}.md", token1); - TestUtility.WriteToFile($"{uniqueFolderName}/fallback_folder_{uniqueFolderName}/token_folder_{uniqueFolderName}/token2_{uniqueFolderName}.md", token2); + TestUtility.WriteToFile($"{uniqueFolderName}/root_folder_{uniqueFolderName}/root_{uniqueFolderName}.md", root); + TestUtility.WriteToFile($"{uniqueFolderName}/root_folder_{uniqueFolderName}/a_folder_{uniqueFolderName}/a_{uniqueFolderName}.md", a); + TestUtility.WriteToFile($"{uniqueFolderName}/root_folder_{uniqueFolderName}/token_folder_{uniqueFolderName}/token1_{uniqueFolderName}.md", token1); + TestUtility.WriteToFile($"{uniqueFolderName}/fallback_folder_{uniqueFolderName}/token_folder_{uniqueFolderName}/token2_{uniqueFolderName}.md", token2); - var fallbackFolders = new List<string> { { Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/fallback_folder_{uniqueFolderName}") } }; - var parameter = new MarkdownServiceParameters - { - BasePath = "." - }; - var service = new MarkdigMarkdownService(parameter); - //var marked = service.Markup(Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/root_folder_{uniqueFolderName}"), root, fallbackFolders, $"root_{uniqueFolderName}.md"); - var marked = service.Markup("place", "holder"); - var dependency = marked.Dependency; - - Assert.Equal(@"<p>1markdown root.md main content start.</p> + var fallbackFolders = new List<string> { { Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/fallback_folder_{uniqueFolderName}") } }; + var parameter = new MarkdownServiceParameters + { + BasePath = "." + }; + var service = new MarkdigMarkdownService(parameter); + //var marked = service.Markup(Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/root_folder_{uniqueFolderName}"), root, fallbackFolders, $"root_{uniqueFolderName}.md"); + var marked = service.Markup("place", "holder"); + var dependency = marked.Dependency; + + Assert.Equal(@"<p>1markdown root.md main content start.</p> <p>1markdown a.md main content start.</p> <p>1markdown token1.md content start.</p> <p><strong>1markdown token2.md main content</strong></p> @@ -475,29 +475,29 @@ public void TestFallback_Inclusion_random_name() <p>markdown a.md main content end.</p> <p>markdown root.md main content end.</p> ".Replace("\r\n", "\n"), marked.Html); - Assert.Equal( - new[] { $"../fallback_folder_{uniqueFolderName}/token_folder_{uniqueFolderName}/token2_{uniqueFolderName}.md", $"a_folder_{uniqueFolderName}/a_{uniqueFolderName}.md", $"token_folder_{uniqueFolderName}/token1_{uniqueFolderName}.md", $"token_folder_{uniqueFolderName}/token2_{uniqueFolderName}.md" }, - dependency.OrderBy(x => x).ToArray()); - } - - [Fact(Skip = "won't support")] - [Trait("Related", "DfmMarkdown")] - public void TestFallback_InclusionWithCodeFences() - { - // -root_folder (this is also docset folder) - // |- root.md - // |- a_folder - // |- a.md - // |- code_folder - // |- sample1.cs - // -fallback_folder - // |- a_folder - // |- code_in_a.cs - // |- code_folder - // |- sample2.cs - - // 1. Prepare data - var root = @"markdown root.md main content start. + Assert.Equal( + new[] { $"../fallback_folder_{uniqueFolderName}/token_folder_{uniqueFolderName}/token2_{uniqueFolderName}.md", $"a_folder_{uniqueFolderName}/a_{uniqueFolderName}.md", $"token_folder_{uniqueFolderName}/token1_{uniqueFolderName}.md", $"token_folder_{uniqueFolderName}/token2_{uniqueFolderName}.md" }, + dependency.OrderBy(x => x).ToArray()); + } + + [Fact(Skip = "won't support")] + [Trait("Related", "DfmMarkdown")] + public void TestFallback_InclusionWithCodeFences() + { + // -root_folder (this is also docset folder) + // |- root.md + // |- a_folder + // |- a.md + // |- code_folder + // |- sample1.cs + // -fallback_folder + // |- a_folder + // |- code_in_a.cs + // |- code_folder + // |- sample2.cs + + // 1. Prepare data + var root = @"markdown root.md main content start. markdown a content in root.md content start @@ -519,7 +519,7 @@ sample 2 code in root.md content end markdown root.md main content end."; - var a = @"markdown a.md main content start. + var a = @"markdown a.md main content start. code_in_a code in a.md content start @@ -529,31 +529,31 @@ code_in_a in a.md content end markdown a.md a.md content end."; - var code_in_a = "namespace code_in_a{}"; + var code_in_a = "namespace code_in_a{}"; - var sample1 = "namespace sample1{}"; + var sample1 = "namespace sample1{}"; - var sample2 = "namespace sample2{}"; + var sample2 = "namespace sample2{}"; - var uniqueFolderName = Path.GetRandomFileName(); - TestUtility.WriteToFile($"{uniqueFolderName}/root_folder/root.md", root); - TestUtility.WriteToFile($"{uniqueFolderName}/root_folder/a_folder/a.md", a); - TestUtility.WriteToFile($"{uniqueFolderName}/root_folder/code_folder/sample1.cs", sample1); - TestUtility.WriteToFile($"{uniqueFolderName}/fallback_folder/a_folder/code_in_a.cs", code_in_a); - TestUtility.WriteToFile($"{uniqueFolderName}/fallback_folder/code_folder/sample2.cs", sample2); + var uniqueFolderName = Path.GetRandomFileName(); + TestUtility.WriteToFile($"{uniqueFolderName}/root_folder/root.md", root); + TestUtility.WriteToFile($"{uniqueFolderName}/root_folder/a_folder/a.md", a); + TestUtility.WriteToFile($"{uniqueFolderName}/root_folder/code_folder/sample1.cs", sample1); + TestUtility.WriteToFile($"{uniqueFolderName}/fallback_folder/a_folder/code_in_a.cs", code_in_a); + TestUtility.WriteToFile($"{uniqueFolderName}/fallback_folder/code_folder/sample2.cs", sample2); - var fallbackFolders = new List<string> { { Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/fallback_folder") } }; + var fallbackFolders = new List<string> { { Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/fallback_folder") } }; - // Verify root.md markup result - var parameter = new MarkdownServiceParameters - { - BasePath = "." - }; - var service = new MarkdigMarkdownService(parameter); - //var rootMarked = service.Markup(Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/root_folder"), root, fallbackFolders, "root.md"); - var rootMarked = service.Markup("place", "holder"); - var rootDependency = rootMarked.Dependency; - Assert.Equal(@"<p>markdown root.md main content start.</p> + // Verify root.md markup result + var parameter = new MarkdownServiceParameters + { + BasePath = "." + }; + var service = new MarkdigMarkdownService(parameter); + //var rootMarked = service.Markup(Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/root_folder"), root, fallbackFolders, "root.md"); + var rootMarked = service.Markup("place", "holder"); + var rootDependency = rootMarked.Dependency; + Assert.Equal(@"<p>markdown root.md main content start.</p> <p>markdown a content in root.md content start</p> <p>markdown a.md main content start.</p> <p>code_in_a code in a.md content start</p> @@ -569,93 +569,93 @@ code_in_a in a.md content end </code></pre><p>sample 2 code in root.md content end</p> <p>markdown root.md main content end.</p> ".Replace("\r\n", "\n"), rootMarked.Html); - Assert.Equal( - new[] { "../fallback_folder/a_folder/code_in_a.cs", "../fallback_folder/code_folder/sample2.cs", "a_folder/a.md", "a_folder/code_in_a.cs", "code_folder/sample1.cs", "code_folder/sample2.cs" }, - rootDependency.OrderBy(x => x).ToArray()); - - // Verify a.md markup result - //var aMarked = service.Markup(Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/root_folder"), a, fallbackFolders, "a_folder/a.md"); - var aMarked = service.Markup("place", "holder"); - var aDependency = aMarked.Dependency; - Assert.Equal(@"<p>markdown a.md main content start.</p> + Assert.Equal( + new[] { "../fallback_folder/a_folder/code_in_a.cs", "../fallback_folder/code_folder/sample2.cs", "a_folder/a.md", "a_folder/code_in_a.cs", "code_folder/sample1.cs", "code_folder/sample2.cs" }, + rootDependency.OrderBy(x => x).ToArray()); + + // Verify a.md markup result + //var aMarked = service.Markup(Path.Combine(Directory.GetCurrentDirectory(), $"{uniqueFolderName}/root_folder"), a, fallbackFolders, "a_folder/a.md"); + var aMarked = service.Markup("place", "holder"); + var aDependency = aMarked.Dependency; + Assert.Equal(@"<p>markdown a.md main content start.</p> <p>code_in_a code in a.md content start</p> <pre><code class=""lang-cs"" name=""this is code_in_a code"">namespace code_in_a{} </code></pre><p>code_in_a in a.md content end</p> <p>markdown a.md a.md content end.</p> ".Replace("\r\n", "\n"), aMarked.Html); - Assert.Equal( - new[] { "../../fallback_folder/a_folder/code_in_a.cs", "code_in_a.cs" }, - aDependency.OrderBy(x => x).ToArray()); - } - - #endregion - - [Fact] - [Trait("Related", "DfmMarkdown")] - public void TestInclusion_InlineLevel() - { - // 1. Prepare data - var root = @" + Assert.Equal( + new[] { "../../fallback_folder/a_folder/code_in_a.cs", "code_in_a.cs" }, + aDependency.OrderBy(x => x).ToArray()); + } + + #endregion + + [Fact] + [Trait("Related", "DfmMarkdown")] + public void TestInclusion_InlineLevel() + { + // 1. Prepare data + var root = @" Inline [!include[ref1](ref1.md ""This is root"")] Inline [!include[ref3](ref3.md ""This is root"")] "; - var ref1 = @"[!include[ref2](ref2.md ""This is root"")]"; - var ref2 = @"## Inline inclusion do not parse header [!include[root](root.md ""This is root"")]"; - var ref3 = "**Hello** "; - File.WriteAllText("root.md", root); - File.WriteAllText("ref1.md", ref1); - File.WriteAllText("ref2.md", ref2); - File.WriteAllText("ref3.md", ref3); + var ref1 = @"[!include[ref2](ref2.md ""This is root"")]"; + var ref2 = @"## Inline inclusion do not parse header [!include[root](root.md ""This is root"")]"; + var ref3 = "**Hello** "; + File.WriteAllText("root.md", root); + File.WriteAllText("ref1.md", ref1); + File.WriteAllText("ref2.md", ref2); + File.WriteAllText("ref3.md", ref3); - var marked = TestUtility.MarkupWithoutSourceInfo(root, "root.md"); - var dependency = marked.Dependency; - var expected = "<p>Inline ## Inline inclusion do not parse header [!include[root](root.md)]\nInline <strong>Hello</strong></p>\n"; + var marked = TestUtility.MarkupWithoutSourceInfo(root, "root.md"); + var dependency = marked.Dependency; + var expected = "<p>Inline ## Inline inclusion do not parse header [!include[root](root.md)]\nInline <strong>Hello</strong></p>\n"; - Assert.Equal(expected, marked.Html); - Assert.Equal( - new[] { "ref1.md", "ref2.md", "ref3.md", "root.md" }, - dependency.OrderBy(x => x).ToArray()); - } + Assert.Equal(expected, marked.Html); + Assert.Equal( + new[] { "ref1.md", "ref2.md", "ref3.md", "root.md" }, + dependency.OrderBy(x => x).ToArray()); + } - [Fact] - [Trait("Related", "DfmMarkdown")] - public void TestBlockInclude_ShouldExcludeBracketInRegex() - { - // 1. Prepare data - var root = @"[!INCLUDE [azure-probe-intro-include](inc1.md)]. + [Fact] + [Trait("Related", "DfmMarkdown")] + public void TestBlockInclude_ShouldExcludeBracketInRegex() + { + // 1. Prepare data + var root = @"[!INCLUDE [azure-probe-intro-include](inc1.md)]. [!INCLUDE [azure-arm-classic-important-include](inc2.md)] [Resource Manager model](inc1.md). [!INCLUDE [azure-ps-prerequisites-include.md](inc3.md)]"; - var expected = @"<p>inc1.</p> + var expected = @"<p>inc1.</p> <p>inc2 <a href=""inc1.md"">Resource Manager model</a>.</p> <p>inc3</p> "; - var inc1 = "inc1"; - var inc2 = "inc2"; - var inc3 = "inc3"; - File.WriteAllText("root.md", root); - File.WriteAllText("inc1.md", inc1); - File.WriteAllText("inc2.md", inc2); - File.WriteAllText("inc3.md", inc3); - - var marked = TestUtility.MarkupWithoutSourceInfo(root, "root.md"); - var dependency = marked.Dependency; - Assert.Equal(expected.Replace("\r\n", "\n"), marked.Html); - Assert.Equal( - new[] { "inc1.md", "inc2.md", "inc3.md" }, - dependency.OrderBy(x => x).ToArray()); - } - - [Fact] - [Trait("Related", "Inclusion")] - public void TestBlockInclude_ImageRelativePath() - { - var root = @" + var inc1 = "inc1"; + var inc2 = "inc2"; + var inc3 = "inc3"; + File.WriteAllText("root.md", root); + File.WriteAllText("inc1.md", inc1); + File.WriteAllText("inc2.md", inc2); + File.WriteAllText("inc3.md", inc3); + + var marked = TestUtility.MarkupWithoutSourceInfo(root, "root.md"); + var dependency = marked.Dependency; + Assert.Equal(expected.Replace("\r\n", "\n"), marked.Html); + Assert.Equal( + new[] { "inc1.md", "inc2.md", "inc3.md" }, + dependency.OrderBy(x => x).ToArray()); + } + + [Fact] + [Trait("Related", "Inclusion")] + public void TestBlockInclude_ImageRelativePath() + { + var root = @" # Hello World Test Include File @@ -664,34 +664,34 @@ Test Include File "; - var refa = @" + var refa = @" # Hello Include File A ![img](./media/refb.png) "; - var rootPath = "r/parent_folder/child_folder/root.md"; - TestUtility.WriteToFile(rootPath, root); - TestUtility.WriteToFile("r/include/a.md", refa); + var rootPath = "r/parent_folder/child_folder/root.md"; + TestUtility.WriteToFile(rootPath, root); + TestUtility.WriteToFile("r/include/a.md", refa); - var result = TestUtility.MarkupWithoutSourceInfo(root, rootPath); - var expected = @"<h1 id=""hello-world"">Hello World</h1> + var result = TestUtility.MarkupWithoutSourceInfo(root, rootPath); + var expected = @"<h1 id=""hello-world"">Hello World</h1> <p>Test Include File</p> <h1 id=""hello-include-file-a"">Hello Include File A</h1> <p><img src=""%7E/r/include/media/refb.png"" alt=""img"" /></p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); + Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); - var dependency = result.Dependency; - var expectedDependency = new List<string> { "../../include/a.md" }; - Assert.Equal(expectedDependency.ToImmutableList(), dependency); - } + var dependency = result.Dependency; + var expectedDependency = new List<string> { "../../include/a.md" }; + Assert.Equal(expectedDependency.ToImmutableList(), dependency); + } - [Fact] - [Trait("Related", "Inclusion")] - public void TestBlockInclude_WithYamlHeader() - { - var root = @" + [Fact] + [Trait("Related", "Inclusion")] + public void TestBlockInclude_WithYamlHeader() + { + var root = @" # Hello World Test Include File @@ -700,99 +700,99 @@ Test Include File "; - var refa = @"--- + var refa = @"--- a: b --- body"; - var rootPath = "r/parent_folder/child_folder/root.md"; - TestUtility.WriteToFile(rootPath, root); - TestUtility.WriteToFile("r/include/a.md", refa); + var rootPath = "r/parent_folder/child_folder/root.md"; + TestUtility.WriteToFile(rootPath, root); + TestUtility.WriteToFile("r/include/a.md", refa); - var result = TestUtility.MarkupWithoutSourceInfo(root, rootPath); - var expected = @"<h1 id=""hello-world"">Hello World</h1> + var result = TestUtility.MarkupWithoutSourceInfo(root, rootPath); + var expected = @"<h1 id=""hello-world"">Hello World</h1> <p>Test Include File</p> <p>body</p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); + Assert.Equal(expected.Replace("\r\n", "\n"), result.Html); - var dependency = result.Dependency; - var expectedDependency = new List<string> { "../../include/a.md" }; - Assert.Equal(expectedDependency.ToImmutableList(), dependency); - } + var dependency = result.Dependency; + var expectedDependency = new List<string> { "../../include/a.md" }; + Assert.Equal(expectedDependency.ToImmutableList(), dependency); + } - [Fact(Skip = "failed frequently")] - [Trait("Related", "Inclusion")] - public void TestInclusionContext_CurrentFile_RootFile() - { - var root = "[!include[](embed)]"; + [Fact(Skip = "failed frequently")] + [Trait("Related", "Inclusion")] + public void TestInclusionContext_CurrentFile_RootFile() + { + var root = "[!include[](embed)]"; - var context = new MarkdownContext( - readFile: (path, _) => - { - Assert.Equal("embed", path); + var context = new MarkdownContext( + readFile: (path, _) => + { + Assert.Equal("embed", path); - Assert.Equal("root", InclusionContext.RootFile); - Assert.Equal("root", InclusionContext.File); + Assert.Equal("root", InclusionContext.RootFile); + Assert.Equal("root", InclusionContext.File); - return ("embed [content](c.md)", "embed"); - }); + return ("embed [content](c.md)", "embed"); + }); - var pipeline = new MarkdownPipelineBuilder().UseDocfxExtensions(context).Build(); + var pipeline = new MarkdownPipelineBuilder().UseDocfxExtensions(context).Build(); - Assert.Null(InclusionContext.RootFile); - Assert.Null(InclusionContext.File); + Assert.Null(InclusionContext.RootFile); + Assert.Null(InclusionContext.File); - using (InclusionContext.PushFile("root")) - { - Assert.Equal("root", InclusionContext.RootFile); - Assert.Equal("root", InclusionContext.File); + using (InclusionContext.PushFile("root")) + { + Assert.Equal("root", InclusionContext.RootFile); + Assert.Equal("root", InclusionContext.File); - var result = Markdown.ToHtml(root, pipeline); + var result = Markdown.ToHtml(root, pipeline); - Assert.Equal("<p>embed <a href=\"c.md\">content</a></p>", result.Trim()); - Assert.Equal("root", InclusionContext.RootFile); - Assert.Equal("root", InclusionContext.File); - } - Assert.Null(InclusionContext.RootFile); - Assert.Null(InclusionContext.File); + Assert.Equal("<p>embed <a href=\"c.md\">content</a></p>", result.Trim()); + Assert.Equal("root", InclusionContext.RootFile); + Assert.Equal("root", InclusionContext.File); } - - [Fact] - [Trait("Related", "DfmMarkdown")] - public void TestComplexImageBlockSrcResolveInToken() - { - // -r - // |- r.md - // |- b - // | |- token.md - // | |- img.jpg - var r = @" + Assert.Null(InclusionContext.RootFile); + Assert.Null(InclusionContext.File); + } + + [Fact] + [Trait("Related", "DfmMarkdown")] + public void TestComplexImageBlockSrcResolveInToken() + { + // -r + // |- r.md + // |- b + // | |- token.md + // | |- img.jpg + var r = @" [!include[](b/token.md)] "; - var token = @" + var token = @" :::image source=""example.jpg"" type=""complex"" alt-text=""example""::: Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. :::image-end::: "; - TestUtility.WriteToFile("r/r.md", r); - TestUtility.WriteToFile("r/b/token.md", token); - var marked = TestUtility.MarkupWithoutSourceInfo(r, "r/r.md"); + TestUtility.WriteToFile("r/r.md", r); + TestUtility.WriteToFile("r/b/token.md", token); + var marked = TestUtility.MarkupWithoutSourceInfo(r, "r/r.md"); - var expected = @"<p class=""mx-imgBorder""> + var expected = @"<p class=""mx-imgBorder""> <img src=""~/r/b/example.jpg"" alt=""example"" aria-describedby=""1-0""> <div id=""1-0"" class=""visually-hidden""><p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p></div> </p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), marked.Html); - } + Assert.Equal(expected.Replace("\r\n", "\n"), marked.Html); + } - [Fact] - public void ImageTestBlockGeneralWithInclude() - { - var source = "[!include[](includes/source.md)]"; - var includeContent = @":::image type=""content"" source=""../media/example.jpg"" alt-text=""example"" lightbox=""../media/example.jpg""::: + [Fact] + public void ImageTestBlockGeneralWithInclude() + { + var source = "[!include[](includes/source.md)]"; + var includeContent = @":::image type=""content"" source=""../media/example.jpg"" alt-text=""example"" lightbox=""../media/example.jpg""::: :::image type=""content"" source=""~/media/example.jpg"" alt-text=""example"" lightbox=""~/media/example.jpg""::: @@ -800,11 +800,11 @@ public void ImageTestBlockGeneralWithInclude() :::image type=""content"" source=""../media/example.jpg"" alt-text=""example"" lightbox=""~/media/example.jpg"":::"; - TestUtility.WriteToFile("a.md", source); - TestUtility.WriteToFile("includes/source.md", includeContent); - var marked = TestUtility.MarkupWithoutSourceInfo(source, "a.md"); + TestUtility.WriteToFile("a.md", source); + TestUtility.WriteToFile("includes/source.md", includeContent); + var marked = TestUtility.MarkupWithoutSourceInfo(source, "a.md"); - var expected = @"<p><span class=""mx-imgBorder""> + var expected = @"<p><span class=""mx-imgBorder""> <a href=""~/media/example.jpg#lightbox"" data-linktype=""relative-path""> <img src=""~/media/example.jpg"" alt=""example""> </a> @@ -830,30 +830,30 @@ public void ImageTestBlockGeneralWithInclude() </p> "; - Assert.Equal(expected.Replace("\r\n", "\n").Replace("\n", ""), marked.Html.Replace("\r\n", "\n").Replace("\n", "")); - } + Assert.Equal(expected.Replace("\r\n", "\n").Replace("\n", ""), marked.Html.Replace("\r\n", "\n").Replace("\n", "")); + } - [Fact] - [Trait("Related", "DfmMarkdown")] - public void TestImageWithIconTypeBlockSrcResolveInToken() - { - // -r - // |- r.md - // |- b - // | |- token.md - // | |- img.jpg - var r = @" + [Fact] + [Trait("Related", "DfmMarkdown")] + public void TestImageWithIconTypeBlockSrcResolveInToken() + { + // -r + // |- r.md + // |- b + // | |- token.md + // | |- img.jpg + var r = @" [!include[](b/token.md)] "; - var token = @" + var token = @" :::image source=""example.svg"" type=""icon"" alt-text=""example""::: "; - TestUtility.WriteToFile("r/r.md", r); - TestUtility.WriteToFile("r/b/token.md", token); - var marked = TestUtility.MarkupWithoutSourceInfo(r, "r/r.md"); - var expected = @"<p><img src=""~/r/b/example.svg"" role=""presentation""> + TestUtility.WriteToFile("r/r.md", r); + TestUtility.WriteToFile("r/b/token.md", token); + var marked = TestUtility.MarkupWithoutSourceInfo(r, "r/r.md"); + var expected = @"<p><img src=""~/r/b/example.svg"" role=""presentation""> </p> "; - Assert.Equal(expected.Replace("\r\n", "\n"), marked.Html); - } + Assert.Equal(expected.Replace("\r\n", "\n"), marked.Html); + } } diff --git a/test/Docfx.Tests.Common/Docfx.Tests.Common.csproj b/test/Docfx.Tests.Common/Docfx.Tests.Common.csproj index e4874e726bf..5ba17a6a447 100644 --- a/test/Docfx.Tests.Common/Docfx.Tests.Common.csproj +++ b/test/Docfx.Tests.Common/Docfx.Tests.Common.csproj @@ -1,5 +1,9 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <IsTestProject>false</IsTestProject> + </PropertyGroup> + <ItemGroup> <ProjectReference Include="..\..\src\Docfx.Common\Docfx.Common.csproj" /> </ItemGroup> - </Project> +</Project> diff --git a/test/Docfx.Tests.Common/TestBase.cs b/test/Docfx.Tests.Common/TestBase.cs index de225743eca..77abe916218 100644 --- a/test/Docfx.Tests.Common/TestBase.cs +++ b/test/Docfx.Tests.Common/TestBase.cs @@ -43,7 +43,7 @@ protected static string CreateFile(string fileName, string[] lines, string baseF ArgumentNullException.ThrowIfNull(lines); var dir = Path.GetDirectoryName(fileName); - dir = CreateDirectory(dir, baseFolder); + CreateDirectory(dir, baseFolder); var file = Path.Combine(baseFolder, fileName); File.WriteAllLines(file, lines); return file; @@ -56,7 +56,7 @@ protected static string CreateFile(string fileName, string content, string baseF ArgumentNullException.ThrowIfNull(baseFolder); var dir = Path.GetDirectoryName(fileName); - dir = CreateDirectory(dir, baseFolder); + CreateDirectory(dir, baseFolder); var file = Path.Combine(baseFolder, fileName); File.WriteAllText(file, content); return file.Replace('\\', '/'); diff --git a/test/Docfx.Tests.Common/TestListenerScope.cs b/test/Docfx.Tests.Common/TestListenerScope.cs index 9c9764168e8..9607a8c084c 100644 --- a/test/Docfx.Tests.Common/TestListenerScope.cs +++ b/test/Docfx.Tests.Common/TestListenerScope.cs @@ -24,7 +24,7 @@ public void Flush() { } public void WriteLine(ILogItem item) { if (item.LogLevel >= _logLevel) - s_items.Value.Add(item); + s_items.Value?.Add(item); } public IEnumerable<ILogItem> GetItemsByLogLevel(LogLevel logLevel) diff --git a/test/docfx.Snapshot.Tests/PercyTest.cs b/test/docfx.Snapshot.Tests/PercyTest.cs index 99d51eb4262..7d7449b9a36 100644 --- a/test/docfx.Snapshot.Tests/PercyTest.cs +++ b/test/docfx.Snapshot.Tests/PercyTest.cs @@ -48,7 +48,8 @@ public async Task SeedHtml() var samplePath = $"{s_samplesDir}/seed"; Clean(samplePath); - Process.Start("dotnet", $"build \"{s_samplesDir}/seed/dotnet/assembly/BuildFromAssembly.csproj\"").WaitForExit(); + using var process = Process.Start("dotnet", $"build \"{s_samplesDir}/seed/dotnet/assembly/BuildFromAssembly.csproj\""); + await process.WaitForExitAsync(); var docfxPath = Path.GetFullPath(OperatingSystem.IsWindows() ? "docfx.exe" : "docfx"); Assert.Equal(0, Exec(docfxPath, $"metadata {samplePath}/docfx.json")); @@ -62,7 +63,7 @@ public async Task SeedHtml() }, TaskContinuationOptions.OnlyOnFaulted); // Wait until web server started. - bool isStarted = SpinWait.SpinUntil(() => { Thread.Sleep(100); return IsActiveLocalTcpPort(port); }, TimeSpan.FromSeconds(10)); + SpinWait.SpinUntil(() => { Thread.Sleep(100); return IsActiveLocalTcpPort(port); }, TimeSpan.FromSeconds(10)); using var playwright = await Playwright.CreateAsync(); var browser = await playwright.Chromium.LaunchAsync(); @@ -118,7 +119,7 @@ private static int Exec(string filename, string args, string workingDirectory = psi.EnvironmentVariables.Add("DOCFX_SOURCE_BRANCH_NAME", "main"); if (workingDirectory != null) psi.WorkingDirectory = Path.GetFullPath(workingDirectory); - var process = Process.Start(psi); + using var process = Process.Start(psi); process.WaitForExit(); return process.ExitCode; } diff --git a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.CatException-1.verified.md b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.CatException-1.verified.md index 4831a85a189..6c0a8a74e25 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.CatException-1.verified.md +++ b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.CatException-1.verified.md @@ -24,7 +24,6 @@ public class CatException<T> : Exception, ISerializable #### Inherited Members [Exception.GetBaseException\(\)](https://learn.microsoft.com/dotnet/api/system.exception.getbaseexception), -[Exception.GetObjectData\(SerializationInfo, StreamingContext\)](https://learn.microsoft.com/dotnet/api/system.exception.getobjectdata), [Exception.GetType\(\)](https://learn.microsoft.com/dotnet/api/system.exception.gettype), [Exception.ToString\(\)](https://learn.microsoft.com/dotnet/api/system.exception.tostring), [Exception.Data](https://learn.microsoft.com/dotnet/api/system.exception.data), diff --git a/test/docfx.Snapshot.Tests/SamplesTest.cs b/test/docfx.Snapshot.Tests/SamplesTest.cs index abe94c7cad0..662345724fb 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.cs +++ b/test/docfx.Snapshot.Tests/SamplesTest.cs @@ -37,6 +37,8 @@ private class SamplesFactAttribute : FactAttribute { public SamplesFactAttribute() { + // When target framework is changed. + // It need to modify TargetFrameworks property of `docfx.Snapshot.Tests.csproj` #if !NET8_0 Skip = "Skip by target framework"; #endif @@ -49,7 +51,8 @@ public async Task Seed() var samplePath = $"{s_samplesDir}/seed"; Clean(samplePath); - Process.Start("dotnet", $"build \"{s_samplesDir}/seed/dotnet/assembly/BuildFromAssembly.csproj\"").WaitForExit(); + using var process = Process.Start("dotnet", $"build \"{s_samplesDir}/seed/dotnet/assembly/BuildFromAssembly.csproj\""); + await process.WaitForExitAsync(); if (Debugger.IsAttached) { @@ -148,10 +151,12 @@ public Task Extensions() Clean(samplePath); #if DEBUG - Process.Start("dotnet", $"build \"{samplePath}/build\"").WaitForExit(); + using var process = Process.Start("dotnet", $"build \"{samplePath}/build\""); + process.WaitForExit(); Assert.Equal(0, Exec("dotnet", "run --no-build --project build", workingDirectory: samplePath)); #else - Process.Start("dotnet", $"build -c Release \"{samplePath}/build\"").WaitForExit(); + using var process = Process.Start("dotnet", $"build -c Release \"{samplePath}/build\""); + process.WaitForExit(); Assert.Equal(0, Exec("dotnet", "run --no-build -c Release --project build", workingDirectory: samplePath)); #endif @@ -164,7 +169,7 @@ private static int Exec(string filename, string args, string workingDirectory = psi.EnvironmentVariables.Add("DOCFX_SOURCE_BRANCH_NAME", "main"); if (workingDirectory != null) psi.WorkingDirectory = Path.GetFullPath(workingDirectory); - var process = Process.Start(psi); + using var process = Process.Start(psi); process.WaitForExit(); return process.ExitCode; } diff --git a/test/docfx.Snapshot.Tests/docfx.Snapshot.Tests.csproj b/test/docfx.Snapshot.Tests/docfx.Snapshot.Tests.csproj index 24c17a9ecf2..56c718ed26b 100644 --- a/test/docfx.Snapshot.Tests/docfx.Snapshot.Tests.csproj +++ b/test/docfx.Snapshot.Tests/docfx.Snapshot.Tests.csproj @@ -1,4 +1,8 @@ <Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <TargetFrameworks>net8.0</TargetFrameworks> + </PropertyGroup> + <ItemGroup> <PackageReference Include="Microsoft.Playwright" /> <PackageReference Include="Verify.DiffPlex" /> diff --git a/test/docfx.Tests/Api.verified.cs b/test/docfx.Tests/Api.verified.cs index af7f5981e91..7b2cf6fc589 100644 --- a/test/docfx.Tests/Api.verified.cs +++ b/test/docfx.Tests/Api.verified.cs @@ -58,13 +58,11 @@ public override System.IO.Stream GetResourceStream(string name) { } } public sealed class DocumentBuildContext : Docfx.Plugins.IDocumentBuildContext { - public DocumentBuildContext(Docfx.Build.Engine.DocumentBuildParameters parameters) { } - public DocumentBuildContext(string buildOutputFolder) { } - public DocumentBuildContext(string buildOutputFolder, System.Collections.Generic.IEnumerable<Docfx.Plugins.FileAndType> allSourceFiles, System.Collections.Immutable.ImmutableArray<string> externalReferencePackages, System.Collections.Immutable.ImmutableArray<string> xrefMaps, int maxParallelism, string baseFolder, string versionName, Docfx.Build.Engine.ApplyTemplateSettings applyTemplateSetting, string rootTocPath) { } - public DocumentBuildContext(string buildOutputFolder, System.Collections.Generic.IEnumerable<Docfx.Plugins.FileAndType> allSourceFiles, System.Collections.Immutable.ImmutableArray<string> externalReferencePackages, System.Collections.Immutable.ImmutableArray<string> xrefMaps, int maxParallelism, string baseFolder, string versionName, Docfx.Build.Engine.ApplyTemplateSettings applyTemplateSetting, string rootTocPath, string versionFolder, Docfx.Plugins.GroupInfo groupInfo) { } + public DocumentBuildContext(Docfx.Build.Engine.DocumentBuildParameters parameters, System.Threading.CancellationToken cancellationToken) { } public System.Collections.Immutable.ImmutableDictionary<string, Docfx.Plugins.FileAndType> AllSourceFiles { get; } public Docfx.Build.Engine.ApplyTemplateSettings ApplyTemplateSettings { get; set; } public string BuildOutputFolder { get; } + public System.Threading.CancellationToken CancellationToken { get; } public System.Collections.Immutable.ImmutableArray<string> ExternalReferencePackages { get; } public System.Collections.Concurrent.ConcurrentDictionary<string, string> FileMap { get; } public Docfx.Plugins.GroupInfo GroupInfo { get; } @@ -120,7 +118,7 @@ public class DocumentBuilder : System.IDisposable { public DocumentBuilder(System.Collections.Generic.IEnumerable<System.Reflection.Assembly> assemblies, System.Collections.Immutable.ImmutableArray<string> postProcessorNames) { } public void Build(Docfx.Build.Engine.DocumentBuildParameters parameter) { } - public void Build(System.Collections.Generic.IList<Docfx.Build.Engine.DocumentBuildParameters> parameters, string outputDirectory) { } + public void Build(System.Collections.Generic.IList<Docfx.Build.Engine.DocumentBuildParameters> parameters, string outputDirectory, System.Threading.CancellationToken cancellationToken = default) { } public void Dispose() { } } public sealed class EmptyResourceReader : Docfx.Build.Engine.ResourceFileReader @@ -391,7 +389,7 @@ public static Docfx.Build.Engine.XRefArchive Open(string file, Docfx.Build.Engin public class XRefArchiveBuilder { public XRefArchiveBuilder() { } - public System.Threading.Tasks.Task<bool> DownloadAsync(System.Uri uri, string outputFile) { } + public System.Threading.Tasks.Task<bool> DownloadAsync(System.Uri uri, string outputFile, System.Threading.CancellationToken cancellationToken = default) { } } public enum XRefArchiveMode { @@ -1170,9 +1168,11 @@ public ApiReferenceBuildOutput() { } [Docfx.YamlSerialization.ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] + [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] public System.Collections.Generic.Dictionary<string, object> Metadata { get; set; } [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [YamlDotNet.Serialization.YamlIgnore] public Docfx.Common.CompositeDictionary MetadataJson { get; } [Newtonsoft.Json.JsonProperty("name")] @@ -1867,14 +1867,12 @@ public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, } public static class JsonUtility { - public static readonly System.Threading.ThreadLocal<Newtonsoft.Json.JsonSerializer> DefaultSerializer; - public static T Deserialize<T>(System.IO.TextReader reader, Newtonsoft.Json.JsonSerializer serializer = null) { } - public static T Deserialize<T>(string path, Newtonsoft.Json.JsonSerializer serializer = null) { } - public static T FromJsonString<T>(this string json, Newtonsoft.Json.JsonSerializer serializer = null) { } - public static string Serialize(object graph, Newtonsoft.Json.Formatting formatting = 0, Newtonsoft.Json.JsonSerializer serializer = null) { } - public static void Serialize(System.IO.TextWriter writer, object graph, Newtonsoft.Json.Formatting formatting = 0, Newtonsoft.Json.JsonSerializer serializer = null) { } - public static void Serialize(string path, object graph, Newtonsoft.Json.Formatting formatting = 0, Newtonsoft.Json.JsonSerializer serializer = null) { } - public static string ToJsonString(this object graph, Newtonsoft.Json.Formatting formatting = 0, Newtonsoft.Json.JsonSerializer serializer = null) { } + public static T Deserialize<T>(System.IO.TextReader reader) { } + public static T Deserialize<T>(string path) { } + public static T FromJsonString<T>(this string json) { } + public static string Serialize<T>(T graph, bool indented = false) { } + public static void Serialize<T>(string path, T graph, bool indented = false) { } + public static string ToJsonString<T>(this T graph) { } } public enum LogLevel { @@ -2275,13 +2273,15 @@ public DocfxException(string message, System.Exception innerException) { } } namespace Docfx { + [System.Text.Json.Serialization.JsonConverter(typeof(Docfx.FileItemsConverter))] public class FileItems : System.Collections.Generic.List<string> { public FileItems(System.Collections.Generic.IEnumerable<string> files) { } public FileItems(string file) { } public static Docfx.FileItems op_Explicit(string input) { } } - [Newtonsoft.Json.JsonConverter(typeof(Docfx.FileMappingConverter))] + [Newtonsoft.Json.JsonConverter(typeof(Docfx.FileMappingConverter.NewtonsoftJsonConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(Docfx.FileMappingConverter.SystemTextJsonConverter))] public class FileMapping { public FileMapping() { } @@ -2460,7 +2460,7 @@ public static class TableOfContents } public class ExternalReferencePackageCollection : System.IDisposable { - public ExternalReferencePackageCollection(System.Collections.Generic.IEnumerable<string> packageFiles, int maxParallelism) { } + public ExternalReferencePackageCollection(System.Collections.Generic.IEnumerable<string> packageFiles, int maxParallelism, System.Threading.CancellationToken cancellationToken) { } public System.Collections.Immutable.ImmutableList<Docfx.DataContracts.Common.ExternalReferencePackageReader> Readers { get; } public void Dispose() { } protected virtual void Dispose(bool disposing) { } @@ -2515,6 +2515,7 @@ public ReferenceViewModel() { } [Docfx.DataContracts.Common.UniqueIdentityReferenceIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [YamlDotNet.Serialization.YamlIgnore] public Docfx.Common.CompositeDictionary AdditionalJson { get; } [Newtonsoft.Json.JsonProperty("commentId")] @@ -2661,9 +2662,11 @@ public TocItemViewModel() { } [Docfx.YamlSerialization.ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] + [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] public System.Collections.Generic.Dictionary<string, object> Metadata { get; set; } [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [YamlDotNet.Serialization.YamlIgnore] public Docfx.Common.CompositeDictionary MetadataJson { get; } [Newtonsoft.Json.JsonProperty("name")] @@ -2889,6 +2892,7 @@ public ItemViewModel() { } [Docfx.DataContracts.Common.UniqueIdentityReferenceIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [YamlDotNet.Serialization.YamlIgnore] public System.Collections.Generic.IDictionary<string, object> ExtensionData { get; } [Docfx.Common.EntityMergers.MergeOption(Docfx.Common.EntityMergers.MergeOption.Ignore)] @@ -2950,6 +2954,7 @@ public ItemViewModel() { } [Docfx.YamlSerialization.ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] + [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] public System.Collections.Generic.Dictionary<string, object> Metadata { get; set; } [Newtonsoft.Json.JsonProperty("name")] [System.Text.Json.Serialization.JsonPropertyName("name")] @@ -3164,6 +3169,7 @@ public SyntaxDetailViewModel() { } [Docfx.DataContracts.Common.UniqueIdentityReferenceIgnore] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] + [System.Text.Json.Serialization.JsonInclude] [YamlDotNet.Serialization.YamlIgnore] public System.Collections.Generic.IDictionary<string, object> ExtensionData { get; } [Newtonsoft.Json.JsonProperty("parameters")] @@ -3587,8 +3593,9 @@ public LineNumberExtension(System.Func<object, string> getFilePath = null) { } public void Setup(Markdig.MarkdownPipelineBuilder pipeline) { } public void Setup(Markdig.MarkdownPipeline pipeline, Markdig.Renderers.IMarkdownRenderer renderer) { } } - [Newtonsoft.Json.JsonConverter(typeof(Docfx.MarkdigEngine.Extensions.MarkdigExtensionSettingConverter))] + [Newtonsoft.Json.JsonConverter(typeof(Docfx.MarkdigEngine.Extensions.MarkdigExtensionSettingConverter.NewtonsoftJsonConverter))] [System.Diagnostics.DebuggerDisplay("Name = {Name}")] + [System.Text.Json.Serialization.JsonConverter(typeof(Docfx.MarkdigEngine.Extensions.MarkdigExtensionSettingConverter.SystemTextJsonConverter))] public class MarkdigExtensionSetting { public MarkdigExtensionSetting(string name, System.Text.Json.Nodes.JsonNode? options = null) { } @@ -3962,11 +3969,11 @@ public DocumentException(string message, System.Exception inner) { } } public static class DocumentExceptionExtensions { - public static void RunAll<TElement>(this System.Collections.Generic.IEnumerable<TElement> elements, System.Action<TElement> action) { } - public static void RunAll<TElement>(this System.Collections.Generic.IReadOnlyList<TElement> elements, System.Action<TElement> action) { } - public static void RunAll<TElement>(this System.Collections.Generic.IEnumerable<TElement> elements, System.Action<TElement> action, int parallelism) { } - public static void RunAll<TElement>(this System.Collections.Generic.IReadOnlyList<TElement> elements, System.Action<TElement> action, int parallelism) { } - public static TResult[] RunAll<TElement, TResult>(this System.Collections.Generic.IReadOnlyList<TElement> elements, System.Func<TElement, TResult> func) { } + public static void RunAll<TElement>(this System.Collections.Generic.IEnumerable<TElement> elements, System.Action<TElement> action, System.Threading.CancellationToken cancellationToken = default) { } + public static void RunAll<TElement>(this System.Collections.Generic.IReadOnlyList<TElement> elements, System.Action<TElement> action, System.Threading.CancellationToken cancellationToken = default) { } + public static void RunAll<TElement>(this System.Collections.Generic.IEnumerable<TElement> elements, System.Action<TElement> action, int parallelism, System.Threading.CancellationToken cancellationToken = default) { } + public static void RunAll<TElement>(this System.Collections.Generic.IReadOnlyList<TElement> elements, System.Action<TElement> action, int parallelism, System.Threading.CancellationToken cancellationToken = default) { } + public static TResult[] RunAll<TElement, TResult>(this System.Collections.Generic.IReadOnlyList<TElement> elements, System.Func<TElement, TResult> func, System.Threading.CancellationToken cancellationToken = default) { } } public enum DocumentType { @@ -4072,6 +4079,7 @@ public interface ICustomHrefGenerator } public interface IDocumentBuildContext { + System.Threading.CancellationToken CancellationToken { get; } Docfx.Plugins.GroupInfo GroupInfo { get; } Docfx.Plugins.ICustomHrefGenerator HrefGenerator { get; } string RootTocPath { get; } @@ -4162,7 +4170,7 @@ public interface IMarkdownService public interface IPostProcessor { System.Collections.Immutable.ImmutableDictionary<string, object> PrepareMetadata(System.Collections.Immutable.ImmutableDictionary<string, object> metadata); - Docfx.Plugins.Manifest Process(Docfx.Plugins.Manifest manifest, string outputFolder); + Docfx.Plugins.Manifest Process(Docfx.Plugins.Manifest manifest, string outputFolder, System.Threading.CancellationToken cancellationToken); } public readonly struct LinkSourceInfo { @@ -4175,9 +4183,6 @@ public class Manifest { public Manifest() { } public Manifest(System.Collections.Generic.IEnumerable<Docfx.Plugins.ManifestItem> files) { } - [Newtonsoft.Json.JsonProperty("files")] - [System.Text.Json.Serialization.JsonPropertyName("files")] - public System.Collections.Generic.List<Docfx.Plugins.ManifestItem> Files { get; } [Newtonsoft.Json.JsonProperty("groups")] [System.Text.Json.Serialization.JsonPropertyName("groups")] public System.Collections.Generic.List<Docfx.Plugins.ManifestGroupInfo> Groups { get; set; } @@ -4191,9 +4196,13 @@ public Manifest(System.Collections.Generic.IEnumerable<Docfx.Plugins.ManifestIte [System.Obsolete] [System.Text.Json.Serialization.JsonPropertyName("xrefmap")] public object Xrefmap { get; set; } + [Newtonsoft.Json.JsonProperty("files")] + [System.Text.Json.Serialization.JsonPropertyName("files")] + public System.Collections.Generic.List<Docfx.Plugins.ManifestItem> Files { get; init; } } public class ManifestGroupInfo { + public ManifestGroupInfo() { } public ManifestGroupInfo(Docfx.Plugins.GroupInfo groupInfo) { } [Newtonsoft.Json.JsonProperty("dest")] [System.Text.Json.Serialization.JsonPropertyName("dest")] @@ -4217,9 +4226,6 @@ public ManifestItem() { } [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] public System.Collections.Generic.Dictionary<string, object> Metadata { get; set; } - [Newtonsoft.Json.JsonProperty("output")] - [System.Text.Json.Serialization.JsonPropertyName("output")] - public System.Collections.Generic.Dictionary<string, Docfx.Plugins.OutputFileInfo> Output { get; } [Newtonsoft.Json.JsonProperty("source_relative_path")] [System.Text.Json.Serialization.JsonPropertyName("source_relative_path")] public string SourceRelativePath { get; set; } @@ -4229,6 +4235,9 @@ public ManifestItem() { } [Newtonsoft.Json.JsonProperty("version")] [System.Text.Json.Serialization.JsonPropertyName("version")] public string Version { get; set; } + [Newtonsoft.Json.JsonProperty("output")] + [System.Text.Json.Serialization.JsonPropertyName("output")] + public System.Collections.Generic.Dictionary<string, Docfx.Plugins.OutputFileInfo> Output { get; init; } } public class MarkupResult { diff --git a/test/docfx.Tests/Assets/multi-frameworks-test.csproj.sample.1 b/test/docfx.Tests/Assets/multi-frameworks-test.csproj.sample.1 index f7aca45d3c0..a8c7f4b4265 100644 --- a/test/docfx.Tests/Assets/multi-frameworks-test.csproj.sample.1 +++ b/test/docfx.Tests/Assets/multi-frameworks-test.csproj.sample.1 @@ -1,10 +1,10 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFrameworks>net6.0;netstandard2.0</TargetFrameworks> + <TargetFrameworks>net8.0;netstandard2.0</TargetFrameworks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="Microsoft.CSharp" /> </ItemGroup> -</Project> \ No newline at end of file +</Project> diff --git a/test/docfx.Tests/Assets/ref.csproj.sample.1 b/test/docfx.Tests/Assets/ref.csproj.sample.1 index 1b5656b92f9..de34d27f8d4 100644 --- a/test/docfx.Tests/Assets/ref.csproj.sample.1 +++ b/test/docfx.Tests/Assets/ref.csproj.sample.1 @@ -1,5 +1,5 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFrameworks>net6.0</TargetFrameworks> + <TargetFrameworks>net8.0</TargetFrameworks> </PropertyGroup> -</Project> \ No newline at end of file +</Project> diff --git a/test/docfx.Tests/Assets/template/plugins/CustomPostProcessor.cs b/test/docfx.Tests/Assets/template/plugins/CustomPostProcessor.cs index cf7bb040ee1..88107a82d84 100644 --- a/test/docfx.Tests/Assets/template/plugins/CustomPostProcessor.cs +++ b/test/docfx.Tests/Assets/template/plugins/CustomPostProcessor.cs @@ -1,4 +1,7 @@ -using System.Collections.Immutable; +// 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.Plugins; @@ -9,7 +12,7 @@ public class CustomPostProcessor : IPostProcessor { public ImmutableDictionary<string, object> PrepareMetadata(ImmutableDictionary<string, object> metadata) => metadata; - public Manifest Process(Manifest manifest, string outputFolder) + public Manifest Process(Manifest manifest, string outputFolder, CancellationToken cancellationToken = default) { File.WriteAllText(Path.Combine(outputFolder, "customPostProcessor.txt"), "customPostProcessor"); return manifest; diff --git a/test/docfx.Tests/Assets/template/plugins/plugins.csproj b/test/docfx.Tests/Assets/template/plugins/plugins.csproj index 1714e2a73bb..a95ef2ec35b 100644 --- a/test/docfx.Tests/Assets/template/plugins/plugins.csproj +++ b/test/docfx.Tests/Assets/template/plugins/plugins.csproj @@ -1,7 +1,7 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>net6.0</TargetFramework> + <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> diff --git a/test/docfx.Tests/Assets/test.csproj.sample.1 b/test/docfx.Tests/Assets/test.csproj.sample.1 index fb237e64e04..03511f974ed 100644 --- a/test/docfx.Tests/Assets/test.csproj.sample.1 +++ b/test/docfx.Tests/Assets/test.csproj.sample.1 @@ -1,6 +1,6 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFrameworks>net6.0</TargetFrameworks> + <TargetFrameworks>net8.0</TargetFrameworks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> </PropertyGroup> <ItemGroup> @@ -8,4 +8,4 @@ <Name>ClassLibrary1</Name> </ProjectReference> </ItemGroup> -</Project> \ No newline at end of file +</Project> diff --git a/test/docfx.Tests/Assets/test.vbproj.sample.1 b/test/docfx.Tests/Assets/test.vbproj.sample.1 index 05d1cf1730f..57aa05d91c7 100644 --- a/test/docfx.Tests/Assets/test.vbproj.sample.1 +++ b/test/docfx.Tests/Assets/test.vbproj.sample.1 @@ -1,6 +1,6 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFrameworks>net6.0</TargetFrameworks> + <TargetFrameworks>net8.0</TargetFrameworks> <RootNamespace>testVBproj1</RootNamespace> <AssemblyName>test.sample.1</AssemblyName> <OptionExplicit>On</OptionExplicit> diff --git a/test/docfx.Tests/Attributes/WindowsOnlyFactAttribute.cs b/test/docfx.Tests/Attributes/WindowsOnlyFactAttribute.cs index d59a7a4e951..0f2bad2b44b 100644 --- a/test/docfx.Tests/Attributes/WindowsOnlyFactAttribute.cs +++ b/test/docfx.Tests/Attributes/WindowsOnlyFactAttribute.cs @@ -1,5 +1,5 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. using System.Runtime.InteropServices; diff --git a/test/docfx.Tests/DocsetBuildTest.cs b/test/docfx.Tests/DocsetBuildTest.cs index 5fecde33aaa..b49110d0ac8 100644 --- a/test/docfx.Tests/DocsetBuildTest.cs +++ b/test/docfx.Tests/DocsetBuildTest.cs @@ -24,12 +24,12 @@ private static async Task<Dictionary<string, Func<string>>> Build(Dictionary<str { var filePath = Path.GetFullPath(Path.Combine(testDirectory, path)); Directory.CreateDirectory(Path.GetDirectoryName(filePath)); - File.WriteAllText(filePath, content); + await File.WriteAllTextAsync(filePath, content); } if (!files.ContainsKey("docfx.json")) { - File.WriteAllText($"{testDirectory}/docfx.json", + await File.WriteAllTextAsync($"{testDirectory}/docfx.json", """ { "build": { @@ -224,7 +224,7 @@ public static async Task Build_With_RedirectUri_Files() <meta http-equiv="refresh" content="0;URL='redirected.html'"> </head> </html> - """.Replace("\r\n","\n"), result.Trim()); + """.Replace("\r\n", "\n"), result.Trim()); // Test redirect page.is excluded from sitemap. var sitemapXml = outputs["sitemap.xml"](); diff --git a/test/docfx.Tests/JsonConverterTest.cs b/test/docfx.Tests/JsonConverterTest.cs index 1e54eb635b8..795fa6b4c30 100644 --- a/test/docfx.Tests/JsonConverterTest.cs +++ b/test/docfx.Tests/JsonConverterTest.cs @@ -4,6 +4,7 @@ using System.Collections; using System.Reflection; using Docfx.Common; +using FluentAssertions; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; @@ -62,17 +63,15 @@ public void TestFileMetadataPairsConverterCouldSerializeAndDeserialize() new("*/*.cs", new object[] { "1", "2" }), new("**", new Dictionary<string, object>{ ["key"] = new object[] {"1", "2" } }), }); + var result = JsonUtility.Serialize(item); Assert.Equal("{\"*.md\":1,\"*.m\":true,\"abc\":\"string\",\"/[]\\\\*.cs\":{\"key\":\"2\"},\"*/*.cs\":[\"1\",\"2\"],\"**\":{\"key\":[\"1\",\"2\"]}}", result); using var reader = new StringReader(result); var pairs = JsonUtility.Deserialize<FileMetadataPairs>(reader); Assert.Equal(item.Count, pairs.Count); - for (int i = 0; i < pairs.Count; i++) - { - Assert.Equal(item[i].Glob.Raw, pairs[i].Glob.Raw); - var parsedValue = pairs[i].Value; - Assert.Equal(item[i].Value, parsedValue); - } + + // Assert + pairs.Should().BeEquivalentTo(item); } [Fact] @@ -102,7 +101,8 @@ public void TestFileMappingItemOutputShouldContainSrcOnly() internal class SkipEmptyOrNullContractResolver : DefaultContractResolver { - public SkipEmptyOrNullContractResolver(bool shareCache = false) : base() { } + public SkipEmptyOrNullContractResolver(bool shareCache = false) + { } protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) diff --git a/test/docfx.Tests/MetadataCommandTest.cs b/test/docfx.Tests/MetadataCommandTest.cs index f83da132da0..e01761fb414 100644 --- a/test/docfx.Tests/MetadataCommandTest.cs +++ b/test/docfx.Tests/MetadataCommandTest.cs @@ -69,7 +69,7 @@ await DotnetApiCatalog.Exec( { Dest = _outputFolder, Src = new(new FileMappingItem(projectFile)) { Expanded = true }, - Properties = new() { ["TargetFramework"] = "net6.0" }, + Properties = new() { ["TargetFramework"] = "net8.0" }, }), new(), Directory.GetCurrentDirectory()); diff --git a/test/docfx.Tests/PublicApiContractTest.cs b/test/docfx.Tests/PublicApiContractTest.cs index d54d39da116..5a3c43f1b6c 100644 --- a/test/docfx.Tests/PublicApiContractTest.cs +++ b/test/docfx.Tests/PublicApiContractTest.cs @@ -14,6 +14,10 @@ public static Task TestPublicApiContract() var assemblies = new HashSet<Assembly>(); GetAssemblies(typeof(Docset).Assembly); + + var ass = assemblies.Select(x => x.GetName().Name).OrderBy(x => x).ToArray(); + + var publicApi = string.Join('\n', assemblies .OrderBy(a => a.FullName) .Select(a => a.GeneratePublicApi(new() { IncludeAssemblyAttributes = false }))); diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationEncoderTest.cs b/test/docfx.Tests/SerializationTests/JsonSerializationEncoderTest.cs new file mode 100644 index 00000000000..f01b44e125d --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationEncoderTest.cs @@ -0,0 +1,56 @@ +// 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 FluentAssertions; + +namespace docfx.Tests; + +public partial class JsonSerializationEncoderTest +{ + [Theory] + [InlineData("abcdefghighlmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")] + [InlineData("0123456789")] + [InlineData("\0\a\b\t\n\v\f\r\e")] + [InlineData("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~")] + [InlineData("①②③")] // NonAscii chars (Enclosed Alphanumerics) + [InlineData("123")] // NonAscii chars (Full-width digits) + [InlineData("äöü")] // Umlaut + [InlineData("漢字")] // Kanji + public void JsonEncoderTest(string data) + { + // Arrange + var model = data; + + //Act + var systemTextJsonResult = SystemTextJsonUtility.Serialize(model); + var newtonsoftJsonResult = NewtonsoftJsonUtility.Serialize(model); + + // Assert + // 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) + } + + [Theory] + [InlineData(" ", @"\u3000")] // Full-Width space (Excaped by global block list (https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/character-encoding#global-block-list)) + [InlineData("𠮟", @"\uD842\uDF9F")] // Kanji (that use Surrogate Pair) + [InlineData("📄", @"\uD83D\uDCC4")] // Emoji + [InlineData("👁🗨", @"\uD83D\uDC41\uD83D\uDDE8")] // Emoji (with ZWJ (ZERO WIDTH JOINER)) + public void JsonEncoderTest_NoCompatibility(string data, string expected) + { + // Arrange + var model = data; + + //Act + var systemTextJsonResult = SystemTextJsonUtility.Serialize(model); + var newtonsoftJsonResult = NewtonsoftJsonUtility.Serialize(model); + + // Assert + systemTextJsonResult.Should().NotBe(newtonsoftJsonResult); + + systemTextJsonResult.Should().Contain(expected); + newtonsoftJsonResult.Should().Contain(data); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.BuildJsonConfig.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.BuildJsonConfig.cs new file mode 100644 index 00000000000..16c4599c03a --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.BuildJsonConfig.cs @@ -0,0 +1,22 @@ +// 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 FluentAssertions; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<BuildJsonConfig>] + public void JsonSerializationTest_BuildJsonConfig(string path) + { + // Arrange + var model = TestData.Load<BuildJsonConfig>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.DocfxConfig.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.DocfxConfig.cs new file mode 100644 index 00000000000..50473ad2ab3 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.DocfxConfig.cs @@ -0,0 +1,22 @@ +// 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 FluentAssertions; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<DocfxConfig>] + public void JsonSerializationTest_DocfxConfig(string path) + { + // Arrange + var model = TestData.Load<DocfxConfig>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMapping.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMapping.cs new file mode 100644 index 00000000000..488be5c6d49 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMapping.cs @@ -0,0 +1,22 @@ +// 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 FluentAssertions; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<FileMapping>] + public void JsonSerializationTest_FileMapping(string path) + { + // Arrange + var model = TestData.Load<FileMapping>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMetadataPairs.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMetadataPairs.cs new file mode 100644 index 00000000000..4a026e26a87 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMetadataPairs.cs @@ -0,0 +1,22 @@ +// 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 FluentAssertions; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<FileMetadataPairs>] + public void JsonSerializationTest_FileMetadataPairs(string path) + { + // Arrange + var model = TestData.Load<FileMetadataPairs>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.ListWithStringFallback.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.ListWithStringFallback.cs new file mode 100644 index 00000000000..f7557fe6429 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.ListWithStringFallback.cs @@ -0,0 +1,22 @@ +// 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 FluentAssertions; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<ListWithStringFallback>] + public void JsonSerializationTest_ListWithStringFallback(string path) + { + // Arrange + var model = TestData.Load<ListWithStringFallback>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.Manifest.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.Manifest.cs new file mode 100644 index 00000000000..0784927eb9c --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.Manifest.cs @@ -0,0 +1,24 @@ +// 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; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<Manifest>] + public void JsonSerializationTest_Manifest(string path) + { + // Arrange + var model = TestData.Load<Manifest>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.MarkdownServiceProperties.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MarkdownServiceProperties.cs new file mode 100644 index 00000000000..51546b4c973 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MarkdownServiceProperties.cs @@ -0,0 +1,35 @@ +// 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 Docfx.Plugins; +using FluentAssertions; +using Markdig.Extensions.MediaLinks; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<MarkdownServiceProperties>] + public void JsonSerializationTest_MarkdownServiceProperties(string path) + { + // Arrange + var model = TestData.Load<MarkdownServiceProperties>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + + // Additional test to validate deserialized result. + var medialinksSettings = model.MarkdigExtensions.First(x => x.Name == "MediaLinks"); + var options = medialinksSettings.GetOptions(fallbackValue: new MediaOptions()); + options.Should().BeEquivalentTo(new MediaOptions + { + Width = "800", + Height = "400", + }); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.MergeJsonConfig.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MergeJsonConfig.cs new file mode 100644 index 00000000000..0d5617f01a1 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MergeJsonConfig.cs @@ -0,0 +1,22 @@ +// 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 FluentAssertions; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<MergeJsonConfig>] + public void JsonSerializationTest_MergeJsonConfig(string path) + { + // Arrange + var model = TestData.Load<MergeJsonConfig>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.MetadataJsonConfig.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MetadataJsonConfig.cs new file mode 100644 index 00000000000..6308a02daa9 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MetadataJsonConfig.cs @@ -0,0 +1,22 @@ +// 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 FluentAssertions; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<MetadataJsonConfig>] + public void JsonSerializationTest_MetadataJsonConfig(string path) + { + // Arrange + var model = TestData.Load<MetadataJsonConfig>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.TocItemViewModel.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.TocItemViewModel.cs new file mode 100644 index 00000000000..3d248bfab97 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.TocItemViewModel.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Docfx.DataContracts.Common; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<TocItemViewModel>] + public void JsonSerializationTest_TocItemViewModel(string path) + { + // Arrange + var model = TestData.Load<TocItemViewModel>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.XRefMap.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.XRefMap.cs new file mode 100644 index 00000000000..24679084df3 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.XRefMap.cs @@ -0,0 +1,24 @@ +// 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; + +public partial class JsonSerializationTest +{ + [Theory] + [TestData<XRefMap>] + public void JsonSerializationTest_XRefMap(string path) + { + // Arrange + var model = TestData.Load<XRefMap>(path); + + // Act/Assert + ValidateJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.cs new file mode 100644 index 00000000000..8acf7ad79d7 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.cs @@ -0,0 +1,43 @@ +// 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.Common; +using FluentAssertions; +using FluentAssertions.Equivalency; +using FluentAssertions.Equivalency.Tracing; + +namespace docfx.Tests; + +public partial class JsonSerializationTest +{ + /// <summary> + /// Helper method to validate serialize/deserialize results. + /// </summary> + protected void ValidateJsonRoundTrip<T>(T model) + { + // 1. Validate serialized result. + var newtonsoftJson = NewtonsoftJsonUtility.Serialize(model); + var systemTextJson = SystemTextJsonUtility.Serialize(model); + systemTextJson.Should().Be(newtonsoftJson); + + // 2. Validate deserialized result. + var json = systemTextJson; + var systemTextJsonModel = SystemTextJsonUtility.Deserialize<T>(json); + var newtonsoftJsonModel = NewtonsoftJsonUtility.Deserialize<T>(new StringReader(json)); + systemTextJsonModel.Should().BeEquivalentTo(model, customAssertionOptions); + newtonsoftJsonModel.Should().BeEquivalentTo(model, customAssertionOptions); + + // 3. Validate JsonUtility roundtrip result. + json = JsonUtility.Serialize(model); + var result = JsonUtility.Deserialize<T>(new StringReader(json)); + result.Should().BeEquivalentTo(model, customAssertionOptions); + } + + private static EquivalencyAssertionOptions<T> customAssertionOptions<T>(EquivalencyAssertionOptions<T> opt) + { + // By default. JsonElement is compared by reference because JsonElement don't override Equals. + return opt.ComparingByMembers<JsonElement>() + .Using(new CustomEqualityEquivalencyStep()); + } +} diff --git a/test/docfx.Tests/SerializationTests/Shared/CustomEqualityEquivalencyStep.cs b/test/docfx.Tests/SerializationTests/Shared/CustomEqualityEquivalencyStep.cs new file mode 100644 index 00000000000..e8266a0d3d5 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/Shared/CustomEqualityEquivalencyStep.cs @@ -0,0 +1,70 @@ +// 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 Newtonsoft.Json.Linq; + +#nullable enable + +namespace docfx.Tests; + +internal class CustomEqualityEquivalencyStep : IEquivalencyStep +{ + public EquivalencyResult Handle( + Comparands comparands, + IEquivalencyValidationContext context, + IEquivalencyValidator nestedValidator) + { + if (comparands.Subject is null || comparands.Expectation is null) + return EquivalencyResult.ContinueWithNext; + + var subject = comparands.Subject; + var expected = comparands.Expectation; + + Type subjectType = subject.GetType(); + Type expectedType = expected.GetType(); + if (subjectType == expectedType || expectedType.IsAssignableFrom(subjectType)) + { + return EquivalencyResult.ContinueWithNext; + } + + // Try to convert `expection` to `subject` type. + switch (expected) + { + // Required to comparing models that are loaded by SystemTextJsonUtility/NewtonsoftJsonUtility. + case JToken jToken: + comparands.Expectation = jToken.ToObject(subjectType); + return EquivalencyResult.ContinueWithNext; + + // Required to comparing models that are loaded by YamlUtility/JsonUtility. + case Dictionary<object, object> dict: + { + comparands.Expectation = dict.ToDictionary(x => (string)x.Key, x => x.Value); + return EquivalencyResult.ContinueWithNext; + } + } + + // Try to convert `subject` to `expected` type. + switch (subject) + { + case JToken jToken: + comparands.Subject = jToken.ToObject(expectedType); + return EquivalencyResult.ContinueWithNext; + + case Dictionary<object, object> dict: + { + var convertedSubject = dict.ToDictionary(x => (string)x.Key, x => x.Value); + comparands.Subject = convertedSubject; + return EquivalencyResult.ContinueWithNext; + } + } + + // Use default validation if custom type conversion is not found. + // (e.g. NewtonsoftJson deserialize integer as `Int64`. but SystemTextJson try to convert integer value to specific type by using `ObjectToInferredTypesConverter) + return EquivalencyResult.ContinueWithNext; + } +} diff --git a/test/docfx.Tests/SerializationTests/TestData/ApiPage/ApiPage.yml b/test/docfx.Tests/SerializationTests/TestData/ApiPage/ApiPage.yml new file mode 100644 index 00000000000..b25d28d2265 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ApiPage/ApiPage.yml @@ -0,0 +1,15 @@ +### YamlMime:ApiPage +title: Class Class1 +body: +- api1: Class Class1 + id: BuildFromAssembly_Class1 + metadata: + uid: BuildFromAssembly.Class1 + commentId: T:BuildFromAssembly.Class1 +languageId: csharp +metadata: + description: This is a test class. + listOfString: + - aaa + - bbb + - ccc diff --git a/test/docfx.Tests/SerializationTests/TestData/ApiPage/BuildFromAssembly.Class1.yml b/test/docfx.Tests/SerializationTests/TestData/ApiPage/BuildFromAssembly.Class1.yml new file mode 100644 index 00000000000..6311af13cfa --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ApiPage/BuildFromAssembly.Class1.yml @@ -0,0 +1,57 @@ +### YamlMime:ApiPage +title: Class Class1 +body: +- api1: Class Class1 + id: BuildFromAssembly_Class1 + metadata: + uid: BuildFromAssembly.Class1 + commentId: T:BuildFromAssembly.Class1 +- facts: + - name: Namespace + value: + text: BuildFromAssembly + url: BuildFromAssembly.html + - name: Assembly + value: BuildFromAssembly.dll +- markdown: This is a test class. +- code: public class Class1 +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: Class1 + url: BuildFromAssembly.Class1.html +- h4: Inherited Members +- list: + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.MemberwiseClone() + url: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring + - text: object.Equals(object?) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object?, object?) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.ReferenceEquals(object?, object?) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode +- h2: Constructors +- api3: Class1() + id: BuildFromAssembly_Class1__ctor + metadata: + uid: BuildFromAssembly.Class1.#ctor + commentId: M:BuildFromAssembly.Class1.#ctor +- code: public Class1() +- h2: Methods +- api3: HelloWorld() + id: BuildFromAssembly_Class1_HelloWorld + metadata: + uid: BuildFromAssembly.Class1.HelloWorld + commentId: M:BuildFromAssembly.Class1.HelloWorld +- markdown: Hello World. +- code: public static void HelloWorld() +languageId: csharp +metadata: + description: This is a test class. diff --git a/test/docfx.Tests/SerializationTests/TestData/ApiPage/BuildFromAssembly.Issue5432.yml b/test/docfx.Tests/SerializationTests/TestData/ApiPage/BuildFromAssembly.Issue5432.yml new file mode 100644 index 00000000000..969ab4f0858 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ApiPage/BuildFromAssembly.Issue5432.yml @@ -0,0 +1,43 @@ +### YamlMime:ApiPage +title: Struct Issue5432 +body: +- api1: Struct Issue5432 + id: BuildFromAssembly_Issue5432 + metadata: + uid: BuildFromAssembly.Issue5432 + commentId: T:BuildFromAssembly.Issue5432 +- facts: + - name: Namespace + value: + text: BuildFromAssembly + url: BuildFromAssembly.html + - name: Assembly + value: BuildFromAssembly.dll +- code: public struct Issue5432 +- h4: Inherited Members +- list: + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring + - text: object.Equals(object?) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object?, object?) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.ReferenceEquals(object?, object?) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode +- h2: Properties +- api3: Name + id: BuildFromAssembly_Issue5432_Name + metadata: + uid: BuildFromAssembly.Issue5432.Name + commentId: P:BuildFromAssembly.Issue5432.Name +- code: public string Name { get; } +- h4: Property Value +- parameters: + - type: + - text: string + url: https://learn.microsoft.com/dotnet/api/system.string +languageId: csharp diff --git a/test/docfx.Tests/SerializationTests/TestData/ApiPage/BuildFromProject.Class1.Issue8696Attribute.yml b/test/docfx.Tests/SerializationTests/TestData/ApiPage/BuildFromProject.Class1.Issue8696Attribute.yml new file mode 100644 index 00000000000..5ac63efdba0 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ApiPage/BuildFromProject.Class1.Issue8696Attribute.yml @@ -0,0 +1,165 @@ +### YamlMime:ApiPage +title: Class Class1.Issue8696Attribute +body: +- api1: Class Class1.Issue8696Attribute + id: BuildFromProject_Class1_Issue8696Attribute + preview: "[DOCFX001](https://example.org/DOCFX001): 'BuildFromProject.Class1.Issue8696Attribute' is for evaluation purposes only and is subject to change or removal in future updates." + src: https://github.com/dotnet/docfx/blob/main/samples/seed/dotnet/project/Project/Class1.cs#L126 + metadata: + uid: BuildFromProject.Class1.Issue8696Attribute + commentId: T:BuildFromProject.Class1.Issue8696Attribute +- facts: + - name: Namespace + value: + text: BuildFromProject + url: BuildFromProject.html + - name: Assembly + value: BuildFromProject.dll +- code: 'public class Class1.Issue8696Attribute : Attribute' +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: Attribute + url: https://learn.microsoft.com/dotnet/api/system.attribute + - text: Class1.Issue8696Attribute + url: BuildFromProject.Class1.Issue8696Attribute.html +- h4: Inherited Members +- list: + - text: Attribute.Equals(object?) + url: https://learn.microsoft.com/dotnet/api/system.attribute.equals + - text: Attribute.GetCustomAttribute(Assembly, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-assembly-system-type) + - text: Attribute.GetCustomAttribute(Assembly, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-assembly-system-type-system-boolean) + - text: Attribute.GetCustomAttribute(MemberInfo, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-memberinfo-system-type) + - text: Attribute.GetCustomAttribute(MemberInfo, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-memberinfo-system-type-system-boolean) + - text: Attribute.GetCustomAttribute(Module, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-module-system-type) + - text: Attribute.GetCustomAttribute(Module, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-module-system-type-system-boolean) + - text: Attribute.GetCustomAttribute(ParameterInfo, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-parameterinfo-system-type) + - text: Attribute.GetCustomAttribute(ParameterInfo, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattribute#system-attribute-getcustomattribute(system-reflection-parameterinfo-system-type-system-boolean) + - text: Attribute.GetCustomAttributes(Assembly) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly) + - text: Attribute.GetCustomAttributes(Assembly, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly-system-boolean) + - text: Attribute.GetCustomAttributes(Assembly, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly-system-type) + - text: Attribute.GetCustomAttributes(Assembly, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-assembly-system-type-system-boolean) + - text: Attribute.GetCustomAttributes(MemberInfo) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo) + - text: Attribute.GetCustomAttributes(MemberInfo, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo-system-boolean) + - text: Attribute.GetCustomAttributes(MemberInfo, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo-system-type) + - text: Attribute.GetCustomAttributes(MemberInfo, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-memberinfo-system-type-system-boolean) + - text: Attribute.GetCustomAttributes(Module) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module) + - text: Attribute.GetCustomAttributes(Module, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module-system-boolean) + - text: Attribute.GetCustomAttributes(Module, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module-system-type) + - text: Attribute.GetCustomAttributes(Module, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-module-system-type-system-boolean) + - text: Attribute.GetCustomAttributes(ParameterInfo) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo) + - text: Attribute.GetCustomAttributes(ParameterInfo, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-boolean) + - text: Attribute.GetCustomAttributes(ParameterInfo, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-type) + - text: Attribute.GetCustomAttributes(ParameterInfo, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-type-system-boolean) + - text: Attribute.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.attribute.gethashcode + - text: Attribute.IsDefaultAttribute() + url: https://learn.microsoft.com/dotnet/api/system.attribute.isdefaultattribute + - text: Attribute.IsDefined(Assembly, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-assembly-system-type) + - text: Attribute.IsDefined(Assembly, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-assembly-system-type-system-boolean) + - text: Attribute.IsDefined(MemberInfo, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-memberinfo-system-type) + - text: Attribute.IsDefined(MemberInfo, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-memberinfo-system-type-system-boolean) + - text: Attribute.IsDefined(Module, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-module-system-type) + - text: Attribute.IsDefined(Module, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-module-system-type-system-boolean) + - text: Attribute.IsDefined(ParameterInfo, Type) + url: https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-parameterinfo-system-type) + - text: Attribute.IsDefined(ParameterInfo, Type, bool) + url: https://learn.microsoft.com/dotnet/api/system.attribute.isdefined#system-attribute-isdefined(system-reflection-parameterinfo-system-type-system-boolean) + - text: Attribute.Match(object?) + url: https://learn.microsoft.com/dotnet/api/system.attribute.match + - text: Attribute.TypeId + url: https://learn.microsoft.com/dotnet/api/system.attribute.typeid + - text: object.Equals(object?) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object?, object?) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.MemberwiseClone() + url: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - text: object.ReferenceEquals(object?, object?) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Constructors +- api3: Issue8696Attribute(string?, int, int, string[]?, bool, Type?) + id: BuildFromProject_Class1_Issue8696Attribute__ctor_System_String_System_Int32_System_Int32_System_String___System_Boolean_System_Type_ + src: https://github.com/dotnet/docfx/blob/main/samples/seed/dotnet/project/Project/Class1.cs#L128 + metadata: + uid: BuildFromProject.Class1.Issue8696Attribute.#ctor(System.String,System.Int32,System.Int32,System.String[],System.Boolean,System.Type) + commentId: M:BuildFromProject.Class1.Issue8696Attribute.#ctor(System.String,System.Int32,System.Int32,System.String[],System.Boolean,System.Type) +- code: >- + [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) +- h4: Parameters +- parameters: + - name: description + type: + - text: string + url: https://learn.microsoft.com/dotnet/api/system.string + - '?' + optional: true + - name: boundsMin + type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + optional: true + - name: boundsMax + type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + optional: true + - name: validGameModes + type: + - text: string + url: https://learn.microsoft.com/dotnet/api/system.string + - '[' + - ']' + - '?' + optional: true + - name: hasMultipleSelections + type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + optional: true + - name: enumType + type: + - text: Type + url: https://learn.microsoft.com/dotnet/api/system.type + - '?' + optional: true +languageId: csharp diff --git a/test/docfx.Tests/SerializationTests/TestData/BuildJsonConfig/buildJsonConfig_01.json b/test/docfx.Tests/SerializationTests/TestData/BuildJsonConfig/buildJsonConfig_01.json new file mode 100644 index 00000000000..b19b965c390 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/BuildJsonConfig/buildJsonConfig_01.json @@ -0,0 +1,41 @@ +{ + "content": [ + { + "files": [ "**/*.{md,yml}" ], + "exclude": [ "_site/**", "obj/**" ] + } + ], + "resource": [ + { + "files": [ "**/images/**", "**/media/**", "codesnippet/**" ], + "exclude": [ "_site/**", "obj/**" ] + } + ], + "postProcessors": [ "ExtractSearchIndex" ], + "globalMetadata": { + "_appTitle": "docfx", + "_appName": "docfx", + "_appFooter": "<span>Supported by the <a href=\"https://dotnetfoundation.org\">.NET Foundation</a>. Made with <a href=\"https://dotnet.github.io/docfx\">docfx</a></span>", + "_googleAnalyticsTagId": "G-Q5N6XJHEX5", + "pdf": true + }, + "markdownEngineProperties": { + "alerts": { + "TODO": "alert alert-secondary" + } + }, + "sitemap": { + "baseUrl": "https://dotnet.github.io/docfx", + "priority": 0.5, + "changefreq": "daily" + }, + "xref": [ + "../.xrefmap.json" + ], + "output": "_site", + "template": [ + "default", + "modern", + "template" + ] +} diff --git a/test/docfx.Tests/SerializationTests/TestData/ConfigFilterRule/filterconfig_01.yml b/test/docfx.Tests/SerializationTests/TestData/ConfigFilterRule/filterconfig_01.yml new file mode 100644 index 00000000000..1a87d980800 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ConfigFilterRule/filterconfig_01.yml @@ -0,0 +1,15 @@ +apiRules: +- exclude: + uidRegex: Test1 + hasAttribute: + ctorArguments: + - System.ComponentModel.EditorBrowsableState.Never + ctorNamedArguments: {} +- exclude: + uidRegex: Test2 + type: Type, Member + hasAttribute: + ctorArguments: + - System.ComponentModel.EditorBrowsableState.Never + ctorNamedArguments: {} +attributeRules: [] diff --git a/test/docfx.Tests/SerializationTests/TestData/ConfigFilterRule/filterconfig_02.yml b/test/docfx.Tests/SerializationTests/TestData/ConfigFilterRule/filterconfig_02.yml new file mode 100644 index 00000000000..82428825030 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ConfigFilterRule/filterconfig_02.yml @@ -0,0 +1,79 @@ +apiRules: +- exclude: + hasAttribute: + uid: System.ComponentModel.EditorBrowsableAttribute + ctorArguments: + - System.ComponentModel.EditorBrowsableState.Never +attributeRules: +- exclude: + uidRegex: ^System\.ComponentModel\.Design$ + type: Namespace +- exclude: + uidRegex: ^System\.ComponentModel\.Design\.Serialization$ + type: Namespace +- exclude: + uidRegex: ^System\.Xml\.Serialization$ + type: Namespace +- exclude: + uidRegex: ^System\.Web\.Compilation$ + type: Namespace +- exclude: + uidRegex: ^System\.Runtime\.Versioning$ + type: Namespace +- exclude: + uidRegex: ^System\.Runtime\.ConstrainedExecution$ + type: Namespace +- exclude: + uidRegex: ^System\.EnterpriseServices$ + type: Namespace +- exclude: + uidRegex: ^System\.Diagnostics\.CodeAnalysis$ + type: Namespace +- include: + uidRegex: ^System\.Diagnostics\.(ConditionalAttribute|EventLogPermissionAttribute|PerformanceCounterPermissionAttribute)$ + type: Type +- exclude: + uidRegex: '^System\.Diagnostics\.[^.]+$' + type: Type +- include: + uidRegex: ^System\.ComponentModel\.(BindableAttribute|BrowsableAttribute|ComplexBindingPropertiesAttribute|DataObjectAttribute|DefaultBindingPropertyAttribute|ListBindableAttribute|LookupBindingPropertiesAttribute|SettingsBindableAttribute|TypeConverterAttribute)$ + type: Type +- exclude: + uidRegex: '^System\.ComponentModel\.[^.]+$' + type: Type +- exclude: + uidRegex: ^System\.Reflection\.DefaultMemberAttribute$ + type: Type +- exclude: + uidRegex: ^System\.CodeDom\.Compiler\.GeneratedCodeAttribute$ + type: Type +- include: + uidRegex: ^System\.Runtime\.CompilerServices\.ExtensionAttribute$ + type: Type +- exclude: + uidRegex: '^System\.Runtime\.CompilerServices\.[^.]+$' + type: Type +- include: + uidRegex: ^System\.Runtime\.InteropServices\.(ComVisibleAttribute|GuidAttribute|ClassInterfaceAttribute|InterfaceTypeAttribute)$ + type: Type +- exclude: + uidRegex: '^System\.Runtime\.InteropServices\.[^.]+$' + type: Type +- include: + uidRegex: ^System\.Security\.(SecurityCriticalAttribute|SecurityTreatAsSafeAttribute|AllowPartiallyTrustedCallersAttribute)$ + type: Type +- exclude: + uidRegex: '^System\.Security\.[^.]+$' + type: Type +- include: + uidRegex: ^System\.Web\.UI\.(ControlValuePropertyAttribute|PersistenceModeAttribute|ValidationPropertyAttribute|WebResourceAttribute|TemplateContainerAttribute|ThemeableAttribute|TemplateInstanceAttribute)$ + type: Type +- exclude: + uidRegex: '^System\.Web\.UI\.[^.]+$' + type: Type +- include: + uidRegex: ^System\.Windows\.Markup\.(ConstructorArgumentAttribute|DesignerSerializationOptionsAttribute|ValueSerializerAttribute|XmlnsCompatibleWithAttribute|XmlnsDefinitionAttribute|XmlnsPrefixAttribute)$ + type: Type +- exclude: + uidRegex: '^System\.Windows\.Markup\.[^.]+$' + type: Type diff --git a/test/docfx.Tests/SerializationTests/TestData/DocfxConfig/docfx_01.json b/test/docfx.Tests/SerializationTests/TestData/DocfxConfig/docfx_01.json new file mode 100644 index 00000000000..93a5158b8db --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/DocfxConfig/docfx_01.json @@ -0,0 +1,58 @@ +{ + "metadata": [ + { + "src": [ + { + "files": [ + "src/Docfx.App/*.csproj", + "src/Docfx.Dotnet/*.csproj" + ], + "src": "../" + } + ], + "dest": "api", + "outputFormat": "apiPage" + } + ], + "build": { + "content": [ + { + "files": [ "**/*.{md,yml}" ], + "exclude": [ "_site/**", "obj/**" ] + } + ], + "resource": [ + { + "files": [ "**/images/**", "**/media/**", "codesnippet/**" ], + "exclude": [ "_site/**", "obj/**" ] + } + ], + "postProcessors": [ "ExtractSearchIndex" ], + "globalMetadata": { + "_appTitle": "docfx", + "_appName": "docfx", + "_appFooter": "<span>Supported by the <a href=\"https://dotnetfoundation.org\">.NET Foundation</a>. Made with <a href=\"https://dotnet.github.io/docfx\">docfx</a></span>", + "_googleAnalyticsTagId": "G-Q5N6XJHEX5", + "pdf": true + }, + "markdownEngineProperties": { + "alerts": { + "TODO": "alert alert-secondary" + } + }, + "sitemap": { + "baseUrl": "https://dotnet.github.io/docfx", + "priority": 0.5, + "changefreq": "daily" + }, + "xref": [ + "../.xrefmap.json" + ], + "output": "_site", + "template": [ + "default", + "modern", + "template" + ] + } +} diff --git a/test/docfx.Tests/SerializationTests/TestData/DocfxConfig/docfx_02.json b/test/docfx.Tests/SerializationTests/TestData/DocfxConfig/docfx_02.json new file mode 100644 index 00000000000..67b546abf8c --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/DocfxConfig/docfx_02.json @@ -0,0 +1,99 @@ +{ + "metadata": [ + { + "src": [ + { + "files": [ + "assembly/bin/**/*.dll", + "project/**/*.csproj", + "solution/**/*.sln", + "csharp/**/*.cs", + "vb/**/*.vb" + ], + "exclude": [ + "project/Project.Core/**" + ], + "src": "dotnet" + } + ], + "namespaceLayout": "nested", + "enumSortOrder": "declaringOrder", + "output": "obj/api" + }, + { + "src": [ + { + "files": [ + "assembly/bin/**/*.dll", + "project/**/*.csproj", + "solution/**/*.sln", + "csharp/**/*.cs", + "vb/**/*.vb" + ], + "exclude": [ + "project/Project.Core/**" + ], + "src": "dotnet" + } + ], + "namespaceLayout": "nested", + "enumSortOrder": "declaringOrder", + "outputFormat": "markdown", + "output": "obj/md" + }, + { + "src": [ + { + "files": [ + "assembly/bin/**/*.dll", + "project/**/*.csproj", + "solution/**/*.sln", + "csharp/**/*.cs", + "vb/**/*.vb" + ], + "exclude": [ + "project/Project.Core/**" + ], + "src": "dotnet" + } + ], + "namespaceLayout": "nested", + "enumSortOrder": "declaringOrder", + "outputFormat": "apiPage", + "output": "obj/apipage" + } + ], + "build": { + "content": [ + { "files": [ "**/*.yml" ], "src": "obj/api", "dest": "api" }, + { "files": [ "**" ], "src": "obj/md", "dest": "md" }, + { "files": [ "**" ], "src": "obj/apipage", "dest": "apipage" }, + { "files": [ "articles/**/*.{md,yml}", "*.md", "toc.yml", "restapi/**" ] }, + { "files": [ "pdf/**" ] } + ], + "resource": [ + { + "files": [ "articles/images/**"] + } + ], + "overwrite": "specs/*.md", + "globalMetadata": { + "_appTitle": "docfx seed website", + "_appName": "Seed", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true + }, + "output": "_site", + "exportViewModel": true, + "template": ["default", "modern", "template"], + "markdownEngineProperties": { + "alerts": { + "TODO": "alert alert-secondary" + } + } + }, + "rules": { + "InvalidCref": "info" + } +} diff --git a/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_01.json b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_01.json new file mode 100644 index 00000000000..2aa6ab80d60 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_01.json @@ -0,0 +1,20 @@ +{ + "name": "dummy", + "files": [ + "**/*.{md,yml}" + ], + "exclude": [ + "_site/**", + "obj/**" + ], + "src": "./src", + "dest": "./dest", + "group": "dummy", + "rootTocPath": "dummy", + "case": true, + "noNegate": true, + "noExpand": true, + "noEscape": true, + "noGlobStar": false, + "dot": true +} diff --git a/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_02.json b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_02.json new file mode 100644 index 00000000000..e172e7ceeff --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_02.json @@ -0,0 +1 @@ +"file1.md" diff --git a/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_03.json b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_03.json new file mode 100644 index 00000000000..953c04c8d0d --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_03.json @@ -0,0 +1,27 @@ +[ + { + "files": [ "file1", "file2" ], + "dest": "dest1" + }, + { + "files": "file3", + "dest": "dest2" + }, + { + "files": [ "file4", "file5" ], + "exclude": "file5", + "src": "folder1" + }, + { + "files": "Example.yml", + "src": "v1.0", + "dest": "v1.0/api", + "group": "v1.0" + }, + { + "files": "Example.yml", + "src": "v2.0", + "dest": "v2.0/api", + "group": "v2.0" + } +] diff --git a/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_04.json b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_04.json new file mode 100644 index 00000000000..0fc18dba71a --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_04.json @@ -0,0 +1,40 @@ +{ + "content": [ + // Object form + { + "files": [ "file1", "file2" ], + "dest": "dest1" + }, + // Compact Form + "file1.md", + "file2.md", + // Array Form + [ + { + "files": [ "file1", "file2" ], + "dest": "dest1" + }, + { + "files": "file3", + "dest": "dest2" + }, + { + "files": [ "file4", "file5" ], + "exclude": [ "file5" ], + "src": "folder1" + }, + { + "files": "Example.yml", + "src": "v1.0", + "dest": "v1.0/api", + "group": "v1.0" + }, + { + "files": "Example.yml", + "src": "v2.0", + "dest": "v2.0/api", + "group": "v2.0" + } + ] + ] +} diff --git a/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_05.json b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_05.json new file mode 100644 index 00000000000..a9f44c517a3 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/FileMapping/filemapping_05.json @@ -0,0 +1,7 @@ +[ + "reference1.dll", + { + "files": [ "reference2.dll", "reference3.dll" ] + }, + "reference4.dll" +] diff --git a/test/docfx.Tests/SerializationTests/TestData/FileMetadataPairs/fileMetadataPairs_01.json b/test/docfx.Tests/SerializationTests/TestData/FileMetadataPairs/fileMetadataPairs_01.json new file mode 100644 index 00000000000..2dcfd01fbad --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/FileMetadataPairs/fileMetadataPairs_01.json @@ -0,0 +1,28 @@ +{ + "priority": { + "**.md": 2.5, + "spec/**.md": 3 + }, + "keywords": { + "obj/docfx/**": [ + "API", + "Reference" + ], + "spec/**.md": [ + "Spec", + "Conceptual" + ] + }, + "_noindex": { + "articles/**/article.md": true + }, + "others": { + "nested": { + "null": null, + "val": "dummy", + "datetime": "2024-01-01:T00:00:00", + "double": 1.2345, + "array": [ 1, 2, 3, 4 ] + } + } +} diff --git a/test/docfx.Tests/SerializationTests/TestData/ListWithStringFallback/ListWithStringFallback_01.json b/test/docfx.Tests/SerializationTests/TestData/ListWithStringFallback/ListWithStringFallback_01.json new file mode 100644 index 00000000000..8521b1ecad9 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ListWithStringFallback/ListWithStringFallback_01.json @@ -0,0 +1 @@ +"string_item1" diff --git a/test/docfx.Tests/SerializationTests/TestData/ListWithStringFallback/ListWithStringFallback_02.json b/test/docfx.Tests/SerializationTests/TestData/ListWithStringFallback/ListWithStringFallback_02.json new file mode 100644 index 00000000000..55cc205d5ca --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ListWithStringFallback/ListWithStringFallback_02.json @@ -0,0 +1,5 @@ +[ + "array_item_01", + "array_item_02", + "array_item_03" +] diff --git a/test/docfx.Tests/SerializationTests/TestData/ListWithStringFallback/ListWithStringFallback_03.json b/test/docfx.Tests/SerializationTests/TestData/ListWithStringFallback/ListWithStringFallback_03.json new file mode 100644 index 00000000000..acfbfaa25ed --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ListWithStringFallback/ListWithStringFallback_03.json @@ -0,0 +1,5 @@ +{ + "object_item_01": "1", + "object_item_02": "2", + "object_item_03": "3" +} diff --git a/test/docfx.Tests/SerializationTests/TestData/ManagedReference/BuildFromAssembly.yml b/test/docfx.Tests/SerializationTests/TestData/ManagedReference/BuildFromAssembly.yml new file mode 100644 index 00000000000..99b16874956 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ManagedReference/BuildFromAssembly.yml @@ -0,0 +1,32 @@ +### YamlMime:ManagedReference +items: +- uid: BuildFromAssembly + commentId: N:BuildFromAssembly + id: BuildFromAssembly + children: + - BuildFromAssembly.Class1 + - BuildFromAssembly.Issue5432 + langs: + - csharp + - vb + name: BuildFromAssembly + nameWithType: BuildFromAssembly + fullName: BuildFromAssembly + type: Namespace + assemblies: + - BuildFromAssembly +references: +- uid: BuildFromAssembly.Class1 + commentId: T:BuildFromAssembly.Class1 + isExternal: true + href: BuildFromAssembly.Class1.html + name: Class1 + nameWithType: Class1 + fullName: BuildFromAssembly.Class1 +- uid: BuildFromAssembly.Issue5432 + commentId: T:BuildFromAssembly.Issue5432 + isExternal: true + href: BuildFromAssembly.Issue5432.html + name: Issue5432 + nameWithType: Issue5432 + fullName: BuildFromAssembly.Issue5432 diff --git a/test/docfx.Tests/SerializationTests/TestData/ManagedReference/BuildFromCSharpSourceCode.CSharp.yml b/test/docfx.Tests/SerializationTests/TestData/ManagedReference/BuildFromCSharpSourceCode.CSharp.yml new file mode 100644 index 00000000000..cd06419191c --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ManagedReference/BuildFromCSharpSourceCode.CSharp.yml @@ -0,0 +1,340 @@ +### YamlMime:ManagedReference +items: +- uid: BuildFromCSharpSourceCode.CSharp + commentId: T:BuildFromCSharpSourceCode.CSharp + id: CSharp + parent: BuildFromCSharpSourceCode + children: + - BuildFromCSharpSourceCode.CSharp.Main(System.String[]) + langs: + - csharp + - vb + name: CSharp + nameWithType: CSharp + fullName: BuildFromCSharpSourceCode.CSharp + type: Class + source: + remote: + path: samples/seed/dotnet/csharp/CSharp.cs + branch: main + repo: https://github.com/dotnet/docfx + id: CSharp + path: dotnet/csharp/CSharp.cs + startLine: 7 + namespace: BuildFromCSharpSourceCode + syntax: + content: public class CSharp + content.vb: Public Class CSharp + inheritance: + - System.Object + inheritedMembers: + - System.Object.Equals(System.Object) + - System.Object.Equals(System.Object,System.Object) + - System.Object.GetHashCode + - System.Object.GetType + - System.Object.MemberwiseClone + - System.Object.ReferenceEquals(System.Object,System.Object) + - System.Object.ToString +- uid: BuildFromCSharpSourceCode.CSharp.Main(System.String[]) + commentId: M:BuildFromCSharpSourceCode.CSharp.Main(System.String[]) + id: Main(System.String[]) + parent: BuildFromCSharpSourceCode.CSharp + langs: + - csharp + - vb + name: Main(string[]) + nameWithType: CSharp.Main(string[]) + fullName: BuildFromCSharpSourceCode.CSharp.Main(string[]) + type: Method + source: + remote: + path: samples/seed/dotnet/csharp/CSharp.cs + branch: main + repo: https://github.com/dotnet/docfx + id: Main + path: dotnet/csharp/CSharp.cs + startLine: 9 + namespace: BuildFromCSharpSourceCode + syntax: + content: public static void Main(string[] args) + parameters: + - id: args + type: System.String[] + content.vb: Public Shared Sub Main(args As String()) + overload: BuildFromCSharpSourceCode.CSharp.Main* + nameWithType.vb: CSharp.Main(String()) + fullName.vb: BuildFromCSharpSourceCode.CSharp.Main(String()) + name.vb: Main(String()) +references: +- uid: BuildFromCSharpSourceCode + commentId: N:BuildFromCSharpSourceCode + href: BuildFromCSharpSourceCode.html + name: BuildFromCSharpSourceCode + nameWithType: BuildFromCSharpSourceCode + fullName: BuildFromCSharpSourceCode +- uid: System.Object + commentId: T:System.Object + parent: System + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + name: object + nameWithType: object + fullName: object + nameWithType.vb: Object + fullName.vb: Object + name.vb: Object +- uid: System.Object.Equals(System.Object) + commentId: M:System.Object.Equals(System.Object) + parent: System.Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + name: Equals(object) + nameWithType: object.Equals(object) + fullName: object.Equals(object) + nameWithType.vb: Object.Equals(Object) + fullName.vb: Object.Equals(Object) + name.vb: Equals(Object) + spec.csharp: + - uid: System.Object.Equals(System.Object) + name: Equals + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - name: ( + - uid: System.Object + name: object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ) + spec.vb: + - uid: System.Object.Equals(System.Object) + name: Equals + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - name: ( + - uid: System.Object + name: Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ) +- uid: System.Object.Equals(System.Object,System.Object) + commentId: M:System.Object.Equals(System.Object,System.Object) + parent: System.Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + name: Equals(object, object) + nameWithType: object.Equals(object, object) + fullName: object.Equals(object, object) + nameWithType.vb: Object.Equals(Object, Object) + fullName.vb: Object.Equals(Object, Object) + name.vb: Equals(Object, Object) + spec.csharp: + - uid: System.Object.Equals(System.Object,System.Object) + name: Equals + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - name: ( + - uid: System.Object + name: object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ',' + - name: " " + - uid: System.Object + name: object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ) + spec.vb: + - uid: System.Object.Equals(System.Object,System.Object) + name: Equals + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - name: ( + - uid: System.Object + name: Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ',' + - name: " " + - uid: System.Object + name: Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ) +- uid: System.Object.GetHashCode + commentId: M:System.Object.GetHashCode + parent: System.Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + name: GetHashCode() + nameWithType: object.GetHashCode() + fullName: object.GetHashCode() + nameWithType.vb: Object.GetHashCode() + fullName.vb: Object.GetHashCode() + spec.csharp: + - uid: System.Object.GetHashCode + name: GetHashCode + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - name: ( + - name: ) + spec.vb: + - uid: System.Object.GetHashCode + name: GetHashCode + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - name: ( + - name: ) +- uid: System.Object.GetType + commentId: M:System.Object.GetType + parent: System.Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.gettype + name: GetType() + nameWithType: object.GetType() + fullName: object.GetType() + nameWithType.vb: Object.GetType() + fullName.vb: Object.GetType() + spec.csharp: + - uid: System.Object.GetType + name: GetType + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.gettype + - name: ( + - name: ) + spec.vb: + - uid: System.Object.GetType + name: GetType + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.gettype + - name: ( + - name: ) +- uid: System.Object.MemberwiseClone + commentId: M:System.Object.MemberwiseClone + parent: System.Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + name: MemberwiseClone() + nameWithType: object.MemberwiseClone() + fullName: object.MemberwiseClone() + nameWithType.vb: Object.MemberwiseClone() + fullName.vb: Object.MemberwiseClone() + spec.csharp: + - uid: System.Object.MemberwiseClone + name: MemberwiseClone + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - name: ( + - name: ) + spec.vb: + - uid: System.Object.MemberwiseClone + name: MemberwiseClone + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - name: ( + - name: ) +- uid: System.Object.ReferenceEquals(System.Object,System.Object) + commentId: M:System.Object.ReferenceEquals(System.Object,System.Object) + parent: System.Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + name: ReferenceEquals(object, object) + nameWithType: object.ReferenceEquals(object, object) + fullName: object.ReferenceEquals(object, object) + nameWithType.vb: Object.ReferenceEquals(Object, Object) + fullName.vb: Object.ReferenceEquals(Object, Object) + name.vb: ReferenceEquals(Object, Object) + spec.csharp: + - uid: System.Object.ReferenceEquals(System.Object,System.Object) + name: ReferenceEquals + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - name: ( + - uid: System.Object + name: object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ',' + - name: " " + - uid: System.Object + name: object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ) + spec.vb: + - uid: System.Object.ReferenceEquals(System.Object,System.Object) + name: ReferenceEquals + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - name: ( + - uid: System.Object + name: Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ',' + - name: " " + - uid: System.Object + name: Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object + - name: ) +- uid: System.Object.ToString + commentId: M:System.Object.ToString + parent: System.Object + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.tostring + name: ToString() + nameWithType: object.ToString() + fullName: object.ToString() + nameWithType.vb: Object.ToString() + fullName.vb: Object.ToString() + spec.csharp: + - uid: System.Object.ToString + name: ToString + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.tostring + - name: ( + - name: ) + spec.vb: + - uid: System.Object.ToString + name: ToString + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.object.tostring + - name: ( + - name: ) +- uid: System + commentId: N:System + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system + name: System + nameWithType: System + fullName: System +- uid: BuildFromCSharpSourceCode.CSharp.Main* + commentId: Overload:BuildFromCSharpSourceCode.CSharp.Main + href: BuildFromCSharpSourceCode.CSharp.html#BuildFromCSharpSourceCode_CSharp_Main_System_String___ + name: Main + nameWithType: CSharp.Main + fullName: BuildFromCSharpSourceCode.CSharp.Main +- uid: System.String[] + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.string + name: string[] + nameWithType: string[] + fullName: string[] + nameWithType.vb: String() + fullName.vb: String() + name.vb: String() + spec.csharp: + - uid: System.String + name: string + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.string + - name: '[' + - name: ']' + spec.vb: + - uid: System.String + name: String + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.string + - name: ( + - name: ) diff --git a/test/docfx.Tests/SerializationTests/TestData/ManagedReference/api.yml b/test/docfx.Tests/SerializationTests/TestData/ManagedReference/api.yml new file mode 100644 index 00000000000..91ba59c1bd1 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/ManagedReference/api.yml @@ -0,0 +1,23 @@ +### YamlMime:ManagedReference +items: +- uid: dummy1 + source: + remote: + path: dummy1.cs + branch: main + repo: https://github.com/dotnet/docfx +- uid: dummy2 + source: + remote: + path: dummy2.cs + branch: main + repo: https://github.com/dotnet/docfx +references: + - uid: System.String + name: string + isExternal: true + href: https://learn.microsoft.com/dotnet/api/system.string +shouldSkipMarkup: false +memberLayout: separatePages +additionalMetadata1: 1 +additionalMetadata2: 2 diff --git a/test/docfx.Tests/SerializationTests/TestData/Manifest/manifest_01.json b/test/docfx.Tests/SerializationTests/TestData/Manifest/manifest_01.json new file mode 100644 index 00000000000..23d0025b4cf --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/Manifest/manifest_01.json @@ -0,0 +1,1159 @@ +{ + "sitemap": { + "baseUrl": "https://dotnet.github.io/docfx/", + "changefreq": "daily", + "priority": 0.5 + }, + "source_base_path": "/docs", + "xrefmap": "xrefmap.yml", + "files": [ + { + "type": "Resource", + "output": { + "resource": { + "relative_path": "index.json" + } + } + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.BuildOptions.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.BuildOptions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.ApiParameter.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.LinkInfo.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.LinkType.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.LinkType.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.MemberType.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.MemberType.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.PageViewModel.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.DataContracts.ManagedReference.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.DataContracts.ManagedReference.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.Docset.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.Docset.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.Dotnet.DotnetApiCatalog.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.Dotnet.DotnetApiCatalog.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.Dotnet.DotnetApiOptions.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.Dotnet.DotnetApiOptions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.Dotnet.SymbolIncludeState.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.Dotnet.SymbolIncludeState.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.Dotnet.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.Dotnet.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.MemberLayout.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.MemberLayout.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Docfx.yml", + "output": { + ".html": { + "relative_path": "api/Docfx.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "api/toc.yml", + "output": { + ".html": { + "relative_path": "api/toc.html" + }, + ".json": { + "relative_path": "api/toc.json" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "codesnippet/Rtf/Hyperlink/RtfDocumentProcessor.cs", + "output": { + "resource": { + "relative_path": "codesnippet/Rtf/Hyperlink/RtfDocumentProcessor.cs" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "codesnippet/Rtf/RtfBuildStep.cs", + "output": { + "resource": { + "relative_path": "codesnippet/Rtf/RtfBuildStep.cs" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "codesnippet/Rtf/RtfDocumentProcessor.cs", + "output": { + "resource": { + "relative_path": "codesnippet/Rtf/RtfDocumentProcessor.cs" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/additional-languages.md", + "output": { + ".html": { + "relative_path": "docs/additional-languages.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "docs/api-page.yml", + "output": { + ".html": { + "relative_path": "docs/api-page.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/basic-concepts.md", + "output": { + ".html": { + "relative_path": "docs/basic-concepts.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/config.md", + "output": { + ".html": { + "relative_path": "docs/config.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/dotnet-api-docs.md", + "output": { + ".html": { + "relative_path": "docs/dotnet-api-docs.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/dotnet-yaml-format.md", + "output": { + ".html": { + "relative_path": "docs/dotnet-yaml-format.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/links-and-cross-references.md", + "output": { + ".html": { + "relative_path": "docs/links-and-cross-references.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/markdown.md", + "output": { + ".html": { + "relative_path": "docs/markdown.html" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "docs/media/Program.cs", + "output": { + "resource": { + "relative_path": "docs/media/Program.cs" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "docs/media/pdf-cover-page.png", + "output": { + "resource": { + "relative_path": "docs/media/pdf-cover-page.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "docs/media/pdf-toc-page.png", + "output": { + "resource": { + "relative_path": "docs/media/pdf-toc-page.png" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/pdf.md", + "output": { + ".html": { + "relative_path": "docs/pdf.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/rest-api-docs.md", + "output": { + ".html": { + "relative_path": "docs/rest-api-docs.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/table-of-contents.md", + "output": { + ".html": { + "relative_path": "docs/table-of-contents.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "docs/template.md", + "output": { + ".html": { + "relative_path": "docs/template.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "docs/toc.yml", + "output": { + ".html": { + "relative_path": "docs/toc.html" + }, + ".json": { + "relative_path": "docs/toc.json" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/cake-contrib-addin-large.png", + "output": { + "resource": { + "relative_path": "extensions/images/cake-contrib-addin-large.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/darkfx.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/darkfx.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/default.green.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/default.green.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/default.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/default.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/discordfx.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/discordfx.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/docfx.plantuml.plugin.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/docfx.plantuml.plugin.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/docfxquickstart.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/docfxquickstart.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/docfxtocgenerator.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/docfxtocgenerator.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/doclanguagetranslator.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/doclanguagetranslator.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/doclinkchecker.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/doclinkchecker.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/material.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/material.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/mathew.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/mathew.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/memberpage.default.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/memberpage.default.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/minimal.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/minimal.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/modern.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/modern.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/rest.operationpage.default.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/rest.operationpage.default.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/rest.tagpage.default.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/rest.tagpage.default.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/roel4ez-feather.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/roel4ez-feather.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/roel4ez-modal.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/roel4ez-modal.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/singulinkfx.screenshot.png", + "output": { + "resource": { + "relative_path": "extensions/images/singulinkfx.screenshot.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "extensions/images/unityfx.png", + "output": { + "resource": { + "relative_path": "extensions/images/unityfx.png" + } + }, + "version": "" + }, + { + "type": "dashboard", + "source_relative_path": "extensions/packages.yml", + "output": { + ".html": { + "relative_path": "extensions/packages.html" + } + }, + "version": "" + }, + { + "type": "dashboard", + "source_relative_path": "extensions/templates.yml", + "output": { + ".html": { + "relative_path": "extensions/templates.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "extensions/toc.yml", + "output": { + ".html": { + "relative_path": "extensions/toc.html" + }, + ".json": { + "relative_path": "extensions/toc.json" + } + }, + "version": "" + }, + { + "type": "dashboard", + "source_relative_path": "extensions/tools.yml", + "output": { + ".html": { + "relative_path": "extensions/tools.html" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "images/output-example.png", + "output": { + "resource": { + "relative_path": "images/output-example.png" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "index.md", + "output": { + ".html": { + "relative_path": "index.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/docfx-build.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/docfx-build.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/docfx-download.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/docfx-download.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/docfx-init.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/docfx-init.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/docfx-merge.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/docfx-merge.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/docfx-metadata.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/docfx-metadata.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/docfx-pdf.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/docfx-pdf.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/docfx-serve.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/docfx-serve.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/docfx-template.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/docfx-template.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/docfx.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/docfx.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-cli-reference/overview.md", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/overview.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "reference/docfx-cli-reference/toc.yml", + "output": { + ".html": { + "relative_path": "reference/docfx-cli-reference/toc.html" + }, + ".json": { + "relative_path": "reference/docfx-cli-reference/toc.json" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-environment-variables-reference.md", + "output": { + ".html": { + "relative_path": "reference/docfx-environment-variables-reference.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "reference/docfx-json-reference.md", + "output": { + ".html": { + "relative_path": "reference/docfx-json-reference.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "spec/docfx_document_schema.md", + "output": { + ".html": { + "relative_path": "spec/docfx_document_schema.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "spec/docfx_flavored_markdown.md", + "output": { + ".html": { + "relative_path": "spec/docfx_flavored_markdown.html" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "spec/images/docfx_workflow.png", + "output": { + "resource": { + "relative_path": "spec/images/docfx_workflow.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "spec/images/docfx_workflow.vsdx", + "output": { + "resource": { + "relative_path": "spec/images/docfx_workflow.vsdx" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "spec/images/docfx_workflow_highlevel.png", + "output": { + "resource": { + "relative_path": "spec/images/docfx_workflow_highlevel.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "spec/images/sdp_workflow.png", + "output": { + "resource": { + "relative_path": "spec/images/sdp_workflow.png" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "spec/metadata_dotnet_spec.md", + "output": { + ".html": { + "relative_path": "spec/metadata_dotnet_spec.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "spec/metadata_format_spec.md", + "output": { + ".html": { + "relative_path": "spec/metadata_format_spec.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "spec/sdp_design_spec.md", + "output": { + ".html": { + "relative_path": "spec/sdp_design_spec.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "spec/triple_slash_comments_spec.md", + "output": { + ".html": { + "relative_path": "spec/triple_slash_comments_spec.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "toc.yml", + "output": { + ".html": { + "relative_path": "toc.html" + }, + ".json": { + "relative_path": "toc.json" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "tutorial/advanced_support_hyperlink.md", + "output": { + ".html": { + "relative_path": "tutorial/advanced_support_hyperlink.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/docfx_getting_started.md", + "output": { + ".html": { + "relative_path": "tutorial/docfx_getting_started.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "tutorial/howto_add_a_customized_post_processor.md", + "output": { + ".html": { + "relative_path": "tutorial/howto_add_a_customized_post_processor.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "tutorial/howto_build_your_own_type_of_documentation_with_custom_plug-in.md", + "output": { + ".html": { + "relative_path": "tutorial/howto_build_your_own_type_of_documentation_with_custom_plug-in.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "tutorial/howto_create_custom_template.md", + "output": { + ".html": { + "relative_path": "tutorial/howto_create_custom_template.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/howto_filter_out_unwanted_apis_attributes.md", + "output": { + ".html": { + "relative_path": "tutorial/howto_filter_out_unwanted_apis_attributes.html" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "tutorial/images/simple_web_page.png", + "output": { + "resource": { + "relative_path": "tutorial/images/simple_web_page.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "tutorial/images/toc_web_page.png", + "output": { + "resource": { + "relative_path": "tutorial/images/toc_web_page.png" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "tutorial/images/web_page_with_extra_property.png", + "output": { + "resource": { + "relative_path": "tutorial/images/web_page_with_extra_property.png" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "tutorial/intro_overwrite_files.md", + "output": { + ".html": { + "relative_path": "tutorial/intro_overwrite_files.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/intro_rest_api_documentation.md", + "output": { + ".html": { + "relative_path": "tutorial/intro_rest_api_documentation.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "tutorial/intro_template.md", + "output": { + ".html": { + "relative_path": "tutorial/intro_template.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/intro_toc.md", + "output": { + ".html": { + "relative_path": "tutorial/intro_toc.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/links_and_cross_references.md", + "output": { + ".html": { + "relative_path": "tutorial/links_and_cross_references.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/walkthrough/advanced_walkthrough.md", + "output": { + ".html": { + "relative_path": "tutorial/walkthrough/advanced_walkthrough.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/walkthrough/walkthrough_create_a_docfx_project.md", + "output": { + ".html": { + "relative_path": "tutorial/walkthrough/walkthrough_create_a_docfx_project.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/walkthrough/walkthrough_create_a_docfx_project_2.md", + "output": { + ".html": { + "relative_path": "tutorial/walkthrough/walkthrough_create_a_docfx_project_2.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/walkthrough/walkthrough_generate_pdf.md", + "output": { + ".html": { + "relative_path": "tutorial/walkthrough/walkthrough_generate_pdf.html" + } + }, + "version": "" + }, + { + "type": "Redirection", + "source_relative_path": "tutorial/walkthrough/walkthrough_overview.md", + "output": { + ".html": { + "relative_path": "tutorial/walkthrough/walkthrough_overview.html" + } + }, + "version": "" + } + ], + "groups": [ + { + "xrefmap": "xrefmap.yml" + } + ] +} diff --git a/test/docfx.Tests/SerializationTests/TestData/Manifest/manifest_02.json b/test/docfx.Tests/SerializationTests/TestData/Manifest/manifest_02.json new file mode 100644 index 00000000000..728195f7656 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/Manifest/manifest_02.json @@ -0,0 +1,1860 @@ +{ + "source_base_path": "C:/Projects/GitHub/filzrev/docfx/samples/seed", + "xrefmap": "xrefmap.yml", + "files": [ + { + "type": "Resource", + "output": { + "resource": { + "relative_path": "index.json" + } + } + }, + { + "type": "Conceptual", + "source_relative_path": "articles/csharp_coding_standards.md", + "output": { + ".html": { + "relative_path": "articles/csharp_coding_standards.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/docfx_getting_started.md", + "output": { + ".html": { + "relative_path": "articles/docfx_getting_started.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/engineering_guidelines.md", + "output": { + ".html": { + "relative_path": "articles/engineering_guidelines.html" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "articles/images/seed.jpg", + "output": { + "resource": { + "relative_path": "articles/images/seed.jpg" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/markdown.md", + "output": { + ".html": { + "relative_path": "articles/markdown.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "articles/toc.yml", + "output": { + ".html": { + "relative_path": "articles/toc.html" + }, + ".json": { + "relative_path": "articles/toc.json" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "index.md", + "output": { + ".html": { + "relative_path": "index.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromAssembly.Class1.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromAssembly.Class1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromAssembly.Issue5432.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromAssembly.Issue5432.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromAssembly.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromAssembly.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromCSharpSourceCode.CSharp.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromCSharpSourceCode.CSharp.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromCSharpSourceCode.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromCSharpSourceCode.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Class1.IIssue8948.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Class1.IIssue8948.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Class1.Issue8665.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Class1.Issue8665.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Class1.Issue8696Attribute.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Class1.Issue8696Attribute.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Class1.Issue8948.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Class1.Issue8948.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Class1.Issue9260.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Class1.Issue9260.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Class1.Test-1.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Class1.Test-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Class1.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Class1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Dog.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Dog.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.IInheritdoc.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.IInheritdoc.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Inheritdoc.Issue6366.Class2.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Inheritdoc.Issue6366.Class2.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Inheritdoc.Issue6366.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Inheritdoc.Issue6366.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Inheritdoc.Issue7035.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Inheritdoc.Issue7035.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Inheritdoc.Issue7484.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Inheritdoc.Issue7484.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Inheritdoc.Issue8101.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Inheritdoc.Issue8101.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Inheritdoc.Issue8129.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Inheritdoc.Issue8129.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Inheritdoc.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Inheritdoc.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Issue8540.A.A.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Issue8540.A.A.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Issue8540.A.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Issue8540.A.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Issue8540.B.B.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Issue8540.B.B.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Issue8540.B.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Issue8540.B.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Issue8540.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Issue8540.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.Issue8725.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.Issue8725.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromProject.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromProject.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromVBSourceCode.BaseClass1.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromVBSourceCode.BaseClass1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromVBSourceCode.Class1.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromVBSourceCode.Class1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/BuildFromVBSourceCode.yml", + "output": { + ".html": { + "relative_path": "api/BuildFromVBSourceCode.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Cat-2.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Cat-2.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.CatException-1.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.CatException-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Complex-2.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Complex-2.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Core.ContainersRefType.ColorType.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Core.ContainersRefType.ColorType.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Core.ContainersRefType.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Core.ContainersRefType.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Core.ExplicitLayoutClass.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Core.ExplicitLayoutClass.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Core.Issue231.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Core.Issue231.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Core.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Core.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.FakeDelegate-1.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.FakeDelegate-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.IAnimal.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.IAnimal.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.ICat.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.ICat.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.ICatExtension.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.ICatExtension.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.MRefDelegate-3.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.MRefDelegate-3.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.MRefNormalDelegate.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.MRefNormalDelegate.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.Tom.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.Tom.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.TomFromBaseClass.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.TomFromBaseClass.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/CatLibrary.yml", + "output": { + ".html": { + "relative_path": "api/CatLibrary.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/MRef.Demo.Enumeration.ColorType.yml", + "output": { + ".html": { + "relative_path": "api/MRef.Demo.Enumeration.ColorType.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/MRef.Demo.Enumeration.yml", + "output": { + ".html": { + "relative_path": "api/MRef.Demo.Enumeration.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "obj/api/toc.yml", + "output": { + ".html": { + "relative_path": "api/toc.html" + }, + ".json": { + "relative_path": "api/toc.json" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromAssembly.Class1.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromAssembly.Class1.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromAssembly.Issue5432.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromAssembly.Issue5432.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromAssembly.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromAssembly.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromCSharpSourceCode.CSharp.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromCSharpSourceCode.CSharp.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromCSharpSourceCode.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromCSharpSourceCode.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Class1.IIssue8948.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Class1.IIssue8948.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Class1.Issue8665.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Class1.Issue8665.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Class1.Issue8696Attribute.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Class1.Issue8696Attribute.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Class1.Issue8948.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Class1.Issue8948.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Class1.Issue9260.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Class1.Issue9260.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Class1.Test-1.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Class1.Test-1.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Class1.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Class1.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Dog.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Dog.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.IInheritdoc.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.IInheritdoc.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Inheritdoc.Issue6366.Class1-1.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Inheritdoc.Issue6366.Class2.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Inheritdoc.Issue6366.Class2.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Inheritdoc.Issue6366.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Inheritdoc.Issue6366.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Inheritdoc.Issue7035.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Inheritdoc.Issue7035.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Inheritdoc.Issue7484.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Inheritdoc.Issue7484.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Inheritdoc.Issue8101.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Inheritdoc.Issue8101.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Inheritdoc.Issue8129.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Inheritdoc.Issue8129.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Inheritdoc.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Inheritdoc.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Issue8540.A.A.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Issue8540.A.A.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Issue8540.A.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Issue8540.A.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Issue8540.B.B.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Issue8540.B.B.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Issue8540.B.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Issue8540.B.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Issue8540.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Issue8540.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.Issue8725.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.Issue8725.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromProject.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromProject.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromVBSourceCode.BaseClass1.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromVBSourceCode.BaseClass1.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromVBSourceCode.Class1.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromVBSourceCode.Class1.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/BuildFromVBSourceCode.yml", + "output": { + ".html": { + "relative_path": "apipage/BuildFromVBSourceCode.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Cat-2.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Cat-2.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.CatException-1.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.CatException-1.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Complex-2.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Complex-2.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Core.ContainersRefType.ColorType.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Core.ContainersRefType.ColorType.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Core.ContainersRefType.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Core.ContainersRefType.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Core.ExplicitLayoutClass.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Core.ExplicitLayoutClass.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Core.Issue231.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Core.Issue231.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Core.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Core.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.FakeDelegate-1.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.FakeDelegate-1.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.IAnimal.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.IAnimal.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.ICat.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.ICat.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.ICatExtension.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.ICatExtension.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.MRefDelegate-3.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.MRefDelegate-3.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.MRefNormalDelegate.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.MRefNormalDelegate.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.Tom.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.Tom.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.TomFromBaseClass.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.TomFromBaseClass.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/CatLibrary.yml", + "output": { + ".html": { + "relative_path": "apipage/CatLibrary.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/MRef.Demo.Enumeration.ColorType.yml", + "output": { + ".html": { + "relative_path": "apipage/MRef.Demo.Enumeration.ColorType.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/MRef.Demo.Enumeration.yml", + "output": { + ".html": { + "relative_path": "apipage/MRef.Demo.Enumeration.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/MRef.Demo.yml", + "output": { + ".html": { + "relative_path": "apipage/MRef.Demo.html" + } + }, + "version": "" + }, + { + "type": "ApiPage", + "source_relative_path": "obj/apipage/MRef.yml", + "output": { + ".html": { + "relative_path": "apipage/MRef.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "obj/apipage/toc.yml", + "output": { + ".html": { + "relative_path": "apipage/toc.html" + }, + ".json": { + "relative_path": "apipage/toc.json" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromAssembly.Class1.md", + "output": { + ".html": { + "relative_path": "md/BuildFromAssembly.Class1.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromAssembly.Issue5432.md", + "output": { + ".html": { + "relative_path": "md/BuildFromAssembly.Issue5432.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromAssembly.md", + "output": { + ".html": { + "relative_path": "md/BuildFromAssembly.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromCSharpSourceCode.CSharp.md", + "output": { + ".html": { + "relative_path": "md/BuildFromCSharpSourceCode.CSharp.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromCSharpSourceCode.md", + "output": { + ".html": { + "relative_path": "md/BuildFromCSharpSourceCode.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Class1.IIssue8948.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Class1.IIssue8948.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Class1.Issue8665.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Class1.Issue8665.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Class1.Issue8696Attribute.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Class1.Issue8696Attribute.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Class1.Issue8948.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Class1.Issue8948.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Class1.Issue9260.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Class1.Issue9260.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Class1.Test-1.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Class1.Test-1.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Class1.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Class1.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Dog.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Dog.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.IInheritdoc.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.IInheritdoc.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Inheritdoc.Issue6366.Class1-1.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Inheritdoc.Issue6366.Class2.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Inheritdoc.Issue6366.Class2.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Inheritdoc.Issue6366.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Inheritdoc.Issue6366.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Inheritdoc.Issue7035.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Inheritdoc.Issue7035.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Inheritdoc.Issue7484.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Inheritdoc.Issue7484.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Inheritdoc.Issue8101.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Inheritdoc.Issue8101.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Inheritdoc.Issue8129.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Inheritdoc.Issue8129.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Inheritdoc.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Inheritdoc.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Issue8540.A.A.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Issue8540.A.A.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Issue8540.A.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Issue8540.A.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Issue8540.B.B.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Issue8540.B.B.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Issue8540.B.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Issue8540.B.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Issue8540.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Issue8540.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.Issue8725.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.Issue8725.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromProject.md", + "output": { + ".html": { + "relative_path": "md/BuildFromProject.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromVBSourceCode.BaseClass1.md", + "output": { + ".html": { + "relative_path": "md/BuildFromVBSourceCode.BaseClass1.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromVBSourceCode.Class1.md", + "output": { + ".html": { + "relative_path": "md/BuildFromVBSourceCode.Class1.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/BuildFromVBSourceCode.md", + "output": { + ".html": { + "relative_path": "md/BuildFromVBSourceCode.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Cat-2.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Cat-2.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.CatException-1.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.CatException-1.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Complex-2.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Complex-2.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Core.ContainersRefType.ColorType.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Core.ContainersRefType.ColorType.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Core.ContainersRefType.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Core.ContainersRefType.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Core.ExplicitLayoutClass.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Core.ExplicitLayoutClass.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Core.Issue231.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Core.Issue231.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Core.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Core.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.FakeDelegate-1.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.FakeDelegate-1.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.IAnimal.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.IAnimal.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.ICat.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.ICat.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.ICatExtension.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.ICatExtension.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.MRefDelegate-3.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.MRefDelegate-3.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.MRefNormalDelegate.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.MRefNormalDelegate.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.Tom.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.Tom.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.TomFromBaseClass.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.TomFromBaseClass.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/CatLibrary.md", + "output": { + ".html": { + "relative_path": "md/CatLibrary.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/MRef.Demo.Enumeration.ColorType.md", + "output": { + ".html": { + "relative_path": "md/MRef.Demo.Enumeration.ColorType.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/MRef.Demo.Enumeration.md", + "output": { + ".html": { + "relative_path": "md/MRef.Demo.Enumeration.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/MRef.Demo.md", + "output": { + ".html": { + "relative_path": "md/MRef.Demo.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "obj/md/MRef.md", + "output": { + ".html": { + "relative_path": "md/MRef.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "obj/md/toc.yml", + "output": { + ".html": { + "relative_path": "md/toc.html" + }, + ".json": { + "relative_path": "md/toc.json" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "pdf/cover.md", + "output": { + ".html": { + "relative_path": "pdf/cover.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "pdf/toc.yml", + "output": { + ".html": { + "relative_path": "pdf/toc.html" + }, + ".json": { + "relative_path": "pdf/toc.json" + } + }, + "version": "" + }, + { + "type": "RestApi", + "source_relative_path": "restapi/contacts_swagger2.json", + "output": { + ".html": { + "relative_path": "restapi/contacts.html" + } + }, + "version": "" + }, + { + "type": "RestApi", + "source_relative_path": "restapi/petstore.swagger.json", + "output": { + ".html": { + "relative_path": "restapi/petstore.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "restapi/toc.md", + "output": { + ".html": { + "relative_path": "restapi/toc.html" + }, + ".json": { + "relative_path": "restapi/toc.json" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "toc.yml", + "output": { + ".html": { + "relative_path": "toc.html" + }, + ".json": { + "relative_path": "toc.json" + } + }, + "version": "" + } + ], + "groups": [ + { + "xrefmap": "xrefmap.yml" + } + ] +} diff --git a/test/docfx.Tests/SerializationTests/TestData/MarkdownServiceProperties/markdownServiceProperties_01.json b/test/docfx.Tests/SerializationTests/TestData/MarkdownServiceProperties/markdownServiceProperties_01.json new file mode 100644 index 00000000000..88e928cb27c --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/MarkdownServiceProperties/markdownServiceProperties_01.json @@ -0,0 +1,28 @@ +{ + "enableSourceInfo": false, + "markdigExtensions": [ + "FootNotes", + { "Emojis": "default" }, + { "AutoIdentifiers": "default" }, + { + "MediaLinks": { + "width": "800", + "height": "400" + } + } + ], + "fallbackFolders": [ + "fallbackdir" + ], + "alerts": { + "TODO": "alert alert-secondary" + }, + "plantUml": { + "javaPath": "dummy", + "localGraphvizDotPath": "dummy", + "localPlantUmlPath": "dummy", + "outputFormat": "svg", + "remoteUrl": "dummy", + "renderingMode": "local" + } +} diff --git a/test/docfx.Tests/SerializationTests/TestData/MarkdownServiceProperties/markdownServiceProperties_02.json b/test/docfx.Tests/SerializationTests/TestData/MarkdownServiceProperties/markdownServiceProperties_02.json new file mode 100644 index 00000000000..de9c6683d01 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/MarkdownServiceProperties/markdownServiceProperties_02.json @@ -0,0 +1,15 @@ +{ + "markdigExtensions": [ + "FootNotes", + // Comment1 + { "Emojis": "default" }, + { "AutoIdentifiers": "default" }, + { + // Comment2 + "MediaLinks": { + "width": "800", // Comment3 + "height": "400" + } + } + ] +} diff --git a/test/docfx.Tests/SerializationTests/TestData/MergeJsonConfig/mergeJsonConfig_01.json b/test/docfx.Tests/SerializationTests/TestData/MergeJsonConfig/mergeJsonConfig_01.json new file mode 100644 index 00000000000..a306b929125 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/MergeJsonConfig/mergeJsonConfig_01.json @@ -0,0 +1,25 @@ +{ + "content": [ + { + "files": "*.yml", + "src": "obj/netstandard2.0/api" + }, + { + "files": "*.yml", + "src": "obj/net8/api" + } + ], + "globalMetadata": {}, + "fileMetadata": { + "platform": { + "obj/netstandard2.0/api/*.yml": [ + "netstandard2.0" + ], + "obj/net8/api/*.yml": [ + "net8" + ] + } + }, + "dest": "obj/api", + "tocMetadata": [] +} diff --git a/test/docfx.Tests/SerializationTests/TestData/MergeJsonConfig/mergeJsonConfig_02.json b/test/docfx.Tests/SerializationTests/TestData/MergeJsonConfig/mergeJsonConfig_02.json new file mode 100644 index 00000000000..5a564e0f4a6 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/MergeJsonConfig/mergeJsonConfig_02.json @@ -0,0 +1,52 @@ +[ + { + "content": [ + { + "files": "*.yml", + "src": "obj/netstandard2.0/api" + }, + { + "files": "*.yml", + "src": "obj/net8/api" + } + ], + "globalMetadata": {}, + "fileMetadata": { + "platform1": { + "obj/netstandard2.0/api/*.yml": [ + "netstandard2.0" + ], + "obj/net8/api/*.yml": [ + "net8" + ] + } + }, + "dest": "obj/api", + "tocMetadata": [] + }, + { + "content": [ + { + "files": "*.yml", + "src": "obj/netstandard2.0/api" + }, + { + "files": "*.yml", + "src": "obj/net8/api" + } + ], + "globalMetadata": {}, + "fileMetadata": { + "platform2": { + "obj/netstandard2.0/api/*.yml": [ + "netstandard2.0" + ], + "obj/net8/api/*.yml": [ + "net8" + ] + } + }, + "dest": "obj/api", + "tocMetadata": [] + } +] diff --git a/test/docfx.Tests/SerializationTests/TestData/MetadataJsonConfig/metadataJsonConfig_01.json b/test/docfx.Tests/SerializationTests/TestData/MetadataJsonConfig/metadataJsonConfig_01.json new file mode 100644 index 00000000000..a9dfffb8d42 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/MetadataJsonConfig/metadataJsonConfig_01.json @@ -0,0 +1,42 @@ +[ + { + "src": [ + { + "files": [ + "assembly/bin/**/*.dll", + "project/**/*.csproj", + "solution/**/*.sln", + "csharp/**/*.cs", + "vb/**/*.vb" + ], + "exclude": [ + "project/Project.Core/**" + ], + "src": "dotnet" + } + ], + "output": "obj/api", + "outputFormat": "apiPage", + "shouldSkipMarkup": false, + "references": [ + "refs/dummy.dll" + ], + "filter": "filterConfig.yml", + "includePrivateMembers": true, + "includeExplicitInterfaceImplementations": true, + "globalNamespaceId": "Global", + "properties": { + "DefineConstants": "dummy1, dummy2", + "TargetFrameworks": "dummy" + }, + "disableGitFeatures": false, + "codeSourceBasePath": "dummy", + "disableDefaultFilter": true, + "noRestore": true, + "categoryLayout": "nested", + "namespaceLayout": "nested", + "memberLayout": "separatePages", + "enumSortOrder": "declaringOrder", + "allowCompilationErrors": true + } +] diff --git a/test/docfx.Tests/SerializationTests/TestData/MetadataJsonConfig/metadataJsonConfig_02.json b/test/docfx.Tests/SerializationTests/TestData/MetadataJsonConfig/metadataJsonConfig_02.json new file mode 100644 index 00000000000..55c6e535d25 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/MetadataJsonConfig/metadataJsonConfig_02.json @@ -0,0 +1,64 @@ +[ + { + "src": [ + { + "files": [ + "assembly/bin/**/*.dll", + "project/**/*.csproj", + "solution/**/*.sln", + "csharp/**/*.cs", + "vb/**/*.vb" + ], + "exclude": [ + "project/Project.Core/**" + ], + "src": "dotnet" + } + ], + "namespaceLayout": "nested", + "enumSortOrder": "declaringOrder", + "output": "obj/api" + }, + { + "src": [ + { + "files": [ + "assembly/bin/**/*.dll", + "project/**/*.csproj", + "solution/**/*.sln", + "csharp/**/*.cs", + "vb/**/*.vb" + ], + "exclude": [ + "project/Project.Core/**" + ], + "src": "dotnet" + } + ], + "namespaceLayout": "nested", + "enumSortOrder": "declaringOrder", + "outputFormat": "markdown", + "output": "obj/md" + }, + { + "src": [ + { + "files": [ + "assembly/bin/**/*.dll", + "project/**/*.csproj", + "solution/**/*.sln", + "csharp/**/*.cs", + "vb/**/*.vb" + ], + "exclude": [ + "project/Project.Core/**" + ], + "src": "dotnet" + } + ], + "namespaceLayout": "nested", + "enumSortOrder": "declaringOrder", + "outputFormat": "apiPage", + "output": "obj/apipage" + } +] diff --git a/test/docfx.Tests/SerializationTests/TestData/TestData.cs b/test/docfx.Tests/SerializationTests/TestData/TestData.cs new file mode 100644 index 00000000000..bf75bddbac3 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TestData.cs @@ -0,0 +1,54 @@ +// 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; + +public static class TestData +{ + /// <summary> + /// Load test data from specified path. + /// </summary> + public static T Load<T>(string path) + { + if (typeof(T) == typeof(ApiPage)) + throw new NotSupportedException(); // It should be handled separately. + + var testDataPath = PathHelper.ResolveTestDataPath(path); + + switch (Path.GetExtension(path)) + { + case ".yml": + return YamlUtility.Deserialize<T>(testDataPath); + case ".json": + return JsonUtility.Deserialize<T>(testDataPath); + default: + throw new NotSupportedException(); + } + } + + /// <summary> + /// Gets test data relative file paths. + /// </summary> + public static string[] GetTestDataFilePaths(string key) + { + var testDataRootDir = PathHelper.GetTestDataDirectory(); + var basePathLength = testDataRootDir.Length + 1; + + var testDataDir = Path.Combine(testDataRootDir, key); + var directoryInfo = new DirectoryInfo(testDataDir); + + // Gets TestData directory relative paths + var relativePaths = directoryInfo.EnumerateFiles("*", new EnumerationOptions { RecurseSubdirectories = true }) + .Select(x => x.FullName) + .Select(x => x.Substring(basePathLength)); + + return relativePaths.ToArray(); + } +} diff --git a/test/docfx.Tests/SerializationTests/TestData/TestDataAttribute.cs b/test/docfx.Tests/SerializationTests/TestData/TestDataAttribute.cs new file mode 100644 index 00000000000..1e53e2bc5ec --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TestDataAttribute.cs @@ -0,0 +1,49 @@ +// 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; +using Xunit.Sdk; + +namespace docfx.Tests; + +public class TestDataAttribute<T> : DataAttribute +{ + public override IEnumerable<object[]> GetData(MethodInfo testMethod) + { + var key = GetTestDataKey(); + var paths = TestData.GetTestDataFilePaths(key); + + var className = testMethod.DeclaringType.Name; + + // Filter test data. + switch (className) + { + case nameof(JsonSerializationTest): + paths = paths.Where(x => x.EndsWith(".json")).ToArray(); + break; + case nameof(YamlSerializationTest): + paths = paths.Where(x => x.EndsWith(".yml")).ToArray(); + break; + default: + throw new NotSupportedException($"{className} is not supported."); + } + + return new TheoryData<string>(paths); + } + + private static string GetTestDataKey() + { + var type = typeof(T); + var fullname = type.FullName; + + switch (fullname) + { + case "Docfx.DataContracts.ManagedReference.PageViewModel": + return "ManagedReference"; + case "Docfx.DataContracts.UniversalReference.PageViewModel": + return "UniversalReference"; + default: + return type.Name; + } + } +} diff --git a/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_01.json b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_01.json new file mode 100644 index 00000000000..2225389d6b6 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_01.json @@ -0,0 +1,11 @@ +{ + "sorted": true, + "items": [ + ], + "custom": [ + { + "prop1": true, + "prop2": "dummy" + } + ] +} diff --git a/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_02.json b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_02.json new file mode 100644 index 00000000000..7c37af9c875 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_02.json @@ -0,0 +1,1926 @@ +{ + "sorted": true, + "references": [ + { + "uid": "Docfx", + "name": "Docfx", + "href": "api/Docfx.html", + "commentId": "N:Docfx", + "fullName": "Docfx", + "nameWithType": "Docfx" + }, + { + "uid": "Docfx.BuildOptions", + "name": "BuildOptions", + "href": "api/Docfx.BuildOptions.html", + "commentId": "T:Docfx.BuildOptions", + "fullName": "Docfx.BuildOptions", + "nameWithType": "BuildOptions" + }, + { + "uid": "Docfx.BuildOptions.ConfigureMarkdig", + "name": "ConfigureMarkdig", + "href": "api/Docfx.BuildOptions.html#Docfx_BuildOptions_ConfigureMarkdig", + "commentId": "P:Docfx.BuildOptions.ConfigureMarkdig", + "fullName": "Docfx.BuildOptions.ConfigureMarkdig", + "nameWithType": "BuildOptions.ConfigureMarkdig" + }, + { + "uid": "Docfx.BuildOptions.ConfigureMarkdig*", + "name": "ConfigureMarkdig", + "href": "api/Docfx.BuildOptions.html#Docfx_BuildOptions_ConfigureMarkdig_", + "commentId": "Overload:Docfx.BuildOptions.ConfigureMarkdig", + "isSpec": "True", + "fullName": "Docfx.BuildOptions.ConfigureMarkdig", + "nameWithType": "BuildOptions.ConfigureMarkdig" + }, + { + "uid": "Docfx.DataContracts.ManagedReference", + "name": "Docfx.DataContracts.ManagedReference", + "href": "api/Docfx.DataContracts.ManagedReference.html", + "commentId": "N:Docfx.DataContracts.ManagedReference", + "fullName": "Docfx.DataContracts.ManagedReference", + "nameWithType": "Docfx.DataContracts.ManagedReference" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes", + "name": "AdditionalNotes", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.AdditionalNotes", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes", + "nameWithType": "AdditionalNotes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "name": "Caller", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Caller", + "commentId": "P:Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "nameWithType": "AdditionalNotes.Caller" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller*", + "name": "Caller", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Caller_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "nameWithType": "AdditionalNotes.Caller" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "name": "Implementer", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Implementer", + "commentId": "P:Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "nameWithType": "AdditionalNotes.Implementer" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer*", + "name": "Implementer", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Implementer_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "nameWithType": "AdditionalNotes.Implementer" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "name": "Inheritor", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Inheritor", + "commentId": "P:Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "nameWithType": "AdditionalNotes.Inheritor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor*", + "name": "Inheritor", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Inheritor_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "nameWithType": "AdditionalNotes.Inheritor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter", + "name": "ApiParameter", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.ApiParameter", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter", + "nameWithType": "ApiParameter" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "name": "Attributes", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Attributes", + "commentId": "P:Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "nameWithType": "ApiParameter.Attributes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Attributes*", + "name": "Attributes", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Attributes_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "nameWithType": "ApiParameter.Attributes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "name": "Description", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Description", + "commentId": "P:Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "nameWithType": "ApiParameter.Description" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Description*", + "name": "Description", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Description_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "nameWithType": "ApiParameter.Description" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Name", + "commentId": "P:Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "nameWithType": "ApiParameter.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Name*", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Name_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "nameWithType": "ApiParameter.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "nameWithType": "ApiParameter.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "nameWithType": "ApiParameter.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo", + "name": "ArgumentInfo", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.ArgumentInfo", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo", + "nameWithType": "ArgumentInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "nameWithType": "ArgumentInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "nameWithType": "ArgumentInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "name": "Value", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Value", + "commentId": "P:Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "nameWithType": "ArgumentInfo.Value" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Value*", + "name": "Value", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Value_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "nameWithType": "ArgumentInfo.Value" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo", + "name": "AttributeInfo", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.AttributeInfo", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo", + "nameWithType": "AttributeInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "name": "Arguments", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Arguments", + "commentId": "P:Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "nameWithType": "AttributeInfo.Arguments" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments*", + "name": "Arguments", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Arguments_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "nameWithType": "AttributeInfo.Arguments" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "name": "Constructor", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Constructor", + "commentId": "P:Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "nameWithType": "AttributeInfo.Constructor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor*", + "name": "Constructor", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Constructor_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "nameWithType": "AttributeInfo.Constructor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "name": "NamedArguments", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_NamedArguments", + "commentId": "P:Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "nameWithType": "AttributeInfo.NamedArguments" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments*", + "name": "NamedArguments", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_NamedArguments_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "nameWithType": "AttributeInfo.NamedArguments" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "nameWithType": "AttributeInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "nameWithType": "AttributeInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo", + "name": "ExceptionInfo", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.ExceptionInfo", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo", + "nameWithType": "ExceptionInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_CommentId", + "commentId": "P:Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "nameWithType": "ExceptionInfo.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId*", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_CommentId_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "nameWithType": "ExceptionInfo.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "name": "Description", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Description", + "commentId": "P:Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "nameWithType": "ExceptionInfo.Description" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Description*", + "name": "Description", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Description_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "nameWithType": "ExceptionInfo.Description" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "nameWithType": "ExceptionInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "nameWithType": "ExceptionInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel", + "name": "ItemViewModel", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.ItemViewModel", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel", + "nameWithType": "ItemViewModel" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "name": "AdditionalNotes", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AdditionalNotes", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "nameWithType": "ItemViewModel.AdditionalNotes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes*", + "name": "AdditionalNotes", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AdditionalNotes_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "nameWithType": "ItemViewModel.AdditionalNotes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "name": "AssemblyNameList", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AssemblyNameList", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "nameWithType": "ItemViewModel.AssemblyNameList" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList*", + "name": "AssemblyNameList", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AssemblyNameList_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "nameWithType": "ItemViewModel.AssemblyNameList" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "name": "Attributes", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Attributes", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "nameWithType": "ItemViewModel.Attributes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes*", + "name": "Attributes", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Attributes_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "nameWithType": "ItemViewModel.Attributes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "name": "Children", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Children", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "nameWithType": "ItemViewModel.Children" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Children*", + "name": "Children", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Children_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "nameWithType": "ItemViewModel.Children" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_CommentId", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "nameWithType": "ItemViewModel.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId*", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_CommentId_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "nameWithType": "ItemViewModel.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "name": "Conceptual", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Conceptual", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "nameWithType": "ItemViewModel.Conceptual" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual*", + "name": "Conceptual", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Conceptual_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "nameWithType": "ItemViewModel.Conceptual" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "name": "DerivedClasses", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_DerivedClasses", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "nameWithType": "ItemViewModel.DerivedClasses" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses*", + "name": "DerivedClasses", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_DerivedClasses_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "nameWithType": "ItemViewModel.DerivedClasses" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "name": "Documentation", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Documentation", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "nameWithType": "ItemViewModel.Documentation" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation*", + "name": "Documentation", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Documentation_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "nameWithType": "ItemViewModel.Documentation" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "name": "Examples", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Examples", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "nameWithType": "ItemViewModel.Examples" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Examples*", + "name": "Examples", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Examples_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "nameWithType": "ItemViewModel.Examples" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "name": "Exceptions", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Exceptions", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "nameWithType": "ItemViewModel.Exceptions" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions*", + "name": "Exceptions", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Exceptions_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "nameWithType": "ItemViewModel.Exceptions" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "name": "ExtensionMethods", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_ExtensionMethods", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "nameWithType": "ItemViewModel.ExtensionMethods" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods*", + "name": "ExtensionMethods", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_ExtensionMethods_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "nameWithType": "ItemViewModel.ExtensionMethods" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "name": "FullName", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullName", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "nameWithType": "ItemViewModel.FullName" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullName*", + "name": "FullName", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullName_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "nameWithType": "ItemViewModel.FullName" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "name": "FullNameForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForCSharp", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "nameWithType": "ItemViewModel.FullNameForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp*", + "name": "FullNameForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForCSharp_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "nameWithType": "ItemViewModel.FullNameForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "name": "FullNameForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForVB", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "nameWithType": "ItemViewModel.FullNameForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB*", + "name": "FullNameForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForVB_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "nameWithType": "ItemViewModel.FullNameForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "name": "FullNames", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNames", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "nameWithType": "ItemViewModel.FullNames" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames*", + "name": "FullNames", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNames_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "nameWithType": "ItemViewModel.FullNames" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "name": "Href", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Href", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "nameWithType": "ItemViewModel.Href" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Href*", + "name": "Href", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Href_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "nameWithType": "ItemViewModel.Href" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "name": "Id", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Id", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "nameWithType": "ItemViewModel.Id" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Id*", + "name": "Id", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Id_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "nameWithType": "ItemViewModel.Id" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "name": "Implements", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Implements", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "nameWithType": "ItemViewModel.Implements" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Implements*", + "name": "Implements", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Implements_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "nameWithType": "ItemViewModel.Implements" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "name": "Inheritance", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Inheritance", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "nameWithType": "ItemViewModel.Inheritance" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance*", + "name": "Inheritance", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Inheritance_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "nameWithType": "ItemViewModel.Inheritance" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "name": "InheritedMembers", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_InheritedMembers", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "nameWithType": "ItemViewModel.InheritedMembers" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers*", + "name": "InheritedMembers", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_InheritedMembers_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "nameWithType": "ItemViewModel.InheritedMembers" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "name": "IsExplicitInterfaceImplementation", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExplicitInterfaceImplementation", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "nameWithType": "ItemViewModel.IsExplicitInterfaceImplementation" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation*", + "name": "IsExplicitInterfaceImplementation", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExplicitInterfaceImplementation_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "nameWithType": "ItemViewModel.IsExplicitInterfaceImplementation" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "name": "IsExtensionMethod", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExtensionMethod", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "nameWithType": "ItemViewModel.IsExtensionMethod" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod*", + "name": "IsExtensionMethod", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExtensionMethod_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "nameWithType": "ItemViewModel.IsExtensionMethod" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "name": "Metadata", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Metadata", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "nameWithType": "ItemViewModel.Metadata" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata*", + "name": "Metadata", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Metadata_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "nameWithType": "ItemViewModel.Metadata" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Name", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "nameWithType": "ItemViewModel.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Name*", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Name_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "nameWithType": "ItemViewModel.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "name": "NameForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForCSharp", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "nameWithType": "ItemViewModel.NameForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp*", + "name": "NameForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForCSharp_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "nameWithType": "ItemViewModel.NameForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "name": "NameForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForVB", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "nameWithType": "ItemViewModel.NameForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB*", + "name": "NameForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForVB_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "nameWithType": "ItemViewModel.NameForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "name": "NameWithType", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithType", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "nameWithType": "ItemViewModel.NameWithType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType*", + "name": "NameWithType", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithType_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "nameWithType": "ItemViewModel.NameWithType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "name": "NameWithTypeForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForCSharp", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "nameWithType": "ItemViewModel.NameWithTypeForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp*", + "name": "NameWithTypeForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForCSharp_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "nameWithType": "ItemViewModel.NameWithTypeForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "name": "NameWithTypeForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForVB", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "nameWithType": "ItemViewModel.NameWithTypeForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB*", + "name": "NameWithTypeForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForVB_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "nameWithType": "ItemViewModel.NameWithTypeForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "name": "Names", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Names", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "nameWithType": "ItemViewModel.Names" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Names*", + "name": "Names", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Names_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "nameWithType": "ItemViewModel.Names" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "name": "NamesWithType", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamesWithType", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "nameWithType": "ItemViewModel.NamesWithType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType*", + "name": "NamesWithType", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamesWithType_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "nameWithType": "ItemViewModel.NamesWithType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "name": "NamespaceName", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamespaceName", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "nameWithType": "ItemViewModel.NamespaceName" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName*", + "name": "NamespaceName", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamespaceName_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "nameWithType": "ItemViewModel.NamespaceName" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "name": "Overload", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overload", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "nameWithType": "ItemViewModel.Overload" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overload*", + "name": "Overload", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overload_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "nameWithType": "ItemViewModel.Overload" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "name": "Overridden", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overridden", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "nameWithType": "ItemViewModel.Overridden" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden*", + "name": "Overridden", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overridden_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "nameWithType": "ItemViewModel.Overridden" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "name": "Parent", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Parent", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "nameWithType": "ItemViewModel.Parent" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Parent*", + "name": "Parent", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Parent_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "nameWithType": "ItemViewModel.Parent" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "name": "Platform", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Platform", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "nameWithType": "ItemViewModel.Platform" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Platform*", + "name": "Platform", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Platform_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "nameWithType": "ItemViewModel.Platform" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "name": "Remarks", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Remarks", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "nameWithType": "ItemViewModel.Remarks" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks*", + "name": "Remarks", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Remarks_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "nameWithType": "ItemViewModel.Remarks" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "name": "SeeAlsos", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsos", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "nameWithType": "ItemViewModel.SeeAlsos" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos*", + "name": "SeeAlsos", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsos_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "nameWithType": "ItemViewModel.SeeAlsos" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "name": "SeeAlsosUidReference", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsosUidReference", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "nameWithType": "ItemViewModel.SeeAlsosUidReference" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference*", + "name": "SeeAlsosUidReference", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsosUidReference_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "nameWithType": "ItemViewModel.SeeAlsosUidReference" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "name": "Source", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Source", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "nameWithType": "ItemViewModel.Source" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Source*", + "name": "Source", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Source_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "nameWithType": "ItemViewModel.Source" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "name": "Summary", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Summary", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "nameWithType": "ItemViewModel.Summary" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Summary*", + "name": "Summary", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Summary_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "nameWithType": "ItemViewModel.Summary" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "name": "SupportedLanguages", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SupportedLanguages", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "nameWithType": "ItemViewModel.SupportedLanguages" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages*", + "name": "SupportedLanguages", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SupportedLanguages_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "nameWithType": "ItemViewModel.SupportedLanguages" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "name": "Syntax", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Syntax", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "nameWithType": "ItemViewModel.Syntax" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax*", + "name": "Syntax", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Syntax_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "nameWithType": "ItemViewModel.Syntax" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "nameWithType": "ItemViewModel.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "nameWithType": "ItemViewModel.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "name": "Uid", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Uid", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "nameWithType": "ItemViewModel.Uid" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Uid*", + "name": "Uid", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Uid_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "nameWithType": "ItemViewModel.Uid" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo", + "name": "LinkInfo", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.LinkInfo", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo", + "nameWithType": "LinkInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "name": "AltText", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_AltText", + "commentId": "P:Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "nameWithType": "LinkInfo.AltText" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.AltText*", + "name": "AltText", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_AltText_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "nameWithType": "LinkInfo.AltText" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_CommentId", + "commentId": "P:Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "nameWithType": "LinkInfo.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.CommentId*", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_CommentId_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "nameWithType": "LinkInfo.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "name": "LinkId", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkId", + "commentId": "P:Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "nameWithType": "LinkInfo.LinkId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkId*", + "name": "LinkId", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkId_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "nameWithType": "LinkInfo.LinkId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "name": "LinkType", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkType", + "commentId": "P:Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "nameWithType": "LinkInfo.LinkType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkType*", + "name": "LinkType", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkType_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "nameWithType": "LinkInfo.LinkType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkType", + "name": "LinkType", + "href": "api/Docfx.DataContracts.ManagedReference.LinkType.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.LinkType", + "fullName": "Docfx.DataContracts.ManagedReference.LinkType", + "nameWithType": "LinkType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkType.CRef", + "name": "CRef", + "href": "api/Docfx.DataContracts.ManagedReference.LinkType.html#Docfx_DataContracts_ManagedReference_LinkType_CRef", + "commentId": "F:Docfx.DataContracts.ManagedReference.LinkType.CRef", + "fullName": "Docfx.DataContracts.ManagedReference.LinkType.CRef", + "nameWithType": "LinkType.CRef" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkType.HRef", + "name": "HRef", + "href": "api/Docfx.DataContracts.ManagedReference.LinkType.html#Docfx_DataContracts_ManagedReference_LinkType_HRef", + "commentId": "F:Docfx.DataContracts.ManagedReference.LinkType.HRef", + "fullName": "Docfx.DataContracts.ManagedReference.LinkType.HRef", + "nameWithType": "LinkType.HRef" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType", + "name": "MemberType", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.MemberType", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType", + "nameWithType": "MemberType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Assembly", + "name": "Assembly", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Assembly", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Assembly", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Assembly", + "nameWithType": "MemberType.Assembly" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.AttachedEvent", + "name": "AttachedEvent", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_AttachedEvent", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.AttachedEvent", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.AttachedEvent", + "nameWithType": "MemberType.AttachedEvent" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.AttachedProperty", + "name": "AttachedProperty", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_AttachedProperty", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.AttachedProperty", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.AttachedProperty", + "nameWithType": "MemberType.AttachedProperty" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Class", + "name": "Class", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Class", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Class", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Class", + "nameWithType": "MemberType.Class" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Constructor", + "name": "Constructor", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Constructor", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Constructor", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Constructor", + "nameWithType": "MemberType.Constructor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Container", + "name": "Container", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Container", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Container", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Container", + "nameWithType": "MemberType.Container" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Default", + "name": "Default", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Default", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Default", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Default", + "nameWithType": "MemberType.Default" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Delegate", + "name": "Delegate", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Delegate", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Delegate", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Delegate", + "nameWithType": "MemberType.Delegate" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Enum", + "name": "Enum", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Enum", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Enum", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Enum", + "nameWithType": "MemberType.Enum" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Event", + "name": "Event", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Event", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Event", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Event", + "nameWithType": "MemberType.Event" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Field", + "name": "Field", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Field", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Field", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Field", + "nameWithType": "MemberType.Field" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Interface", + "name": "Interface", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Interface", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Interface", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Interface", + "nameWithType": "MemberType.Interface" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Method", + "name": "Method", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Method", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Method", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Method", + "nameWithType": "MemberType.Method" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Namespace", + "name": "Namespace", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Namespace", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Namespace", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Namespace", + "nameWithType": "MemberType.Namespace" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Operator", + "name": "Operator", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Operator", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Operator", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Operator", + "nameWithType": "MemberType.Operator" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Property", + "name": "Property", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Property", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Property", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Property", + "nameWithType": "MemberType.Property" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Struct", + "name": "Struct", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Struct", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Struct", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Struct", + "nameWithType": "MemberType.Struct" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Toc", + "name": "Toc", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Toc", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Toc", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Toc", + "nameWithType": "MemberType.Toc" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo", + "name": "NamedArgumentInfo", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.NamedArgumentInfo", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo", + "nameWithType": "NamedArgumentInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Name", + "commentId": "P:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "nameWithType": "NamedArgumentInfo.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name*", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Name_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "nameWithType": "NamedArgumentInfo.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "nameWithType": "NamedArgumentInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "nameWithType": "NamedArgumentInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "name": "Value", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Value", + "commentId": "P:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "nameWithType": "NamedArgumentInfo.Value" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value*", + "name": "Value", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Value_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "nameWithType": "NamedArgumentInfo.Value" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel", + "name": "PageViewModel", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.PageViewModel", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel", + "nameWithType": "PageViewModel" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "name": "Items", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Items", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "nameWithType": "PageViewModel.Items" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.Items*", + "name": "Items", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Items_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "nameWithType": "PageViewModel.Items" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "name": "MemberLayout", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_MemberLayout", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "nameWithType": "PageViewModel.MemberLayout" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout*", + "name": "MemberLayout", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_MemberLayout_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "nameWithType": "PageViewModel.MemberLayout" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "name": "Metadata", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Metadata", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "nameWithType": "PageViewModel.Metadata" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.Metadata*", + "name": "Metadata", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Metadata_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "nameWithType": "PageViewModel.Metadata" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.References", + "name": "References", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_References", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.References", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.References", + "nameWithType": "PageViewModel.References" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.References*", + "name": "References", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_References_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.References", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.References", + "nameWithType": "PageViewModel.References" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "name": "ShouldSkipMarkup", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_ShouldSkipMarkup", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "nameWithType": "PageViewModel.ShouldSkipMarkup" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup*", + "name": "ShouldSkipMarkup", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_ShouldSkipMarkup_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "nameWithType": "PageViewModel.ShouldSkipMarkup" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel", + "name": "SyntaxDetailViewModel", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel", + "nameWithType": "SyntaxDetailViewModel" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "name": "Content", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Content", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "nameWithType": "SyntaxDetailViewModel.Content" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content*", + "name": "Content", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Content_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "nameWithType": "SyntaxDetailViewModel.Content" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "name": "ContentForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForCSharp", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "nameWithType": "SyntaxDetailViewModel.ContentForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp*", + "name": "ContentForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForCSharp_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "nameWithType": "SyntaxDetailViewModel.ContentForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "name": "ContentForVB", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForVB", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "nameWithType": "SyntaxDetailViewModel.ContentForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB*", + "name": "ContentForVB", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForVB_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "nameWithType": "SyntaxDetailViewModel.ContentForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "name": "Contents", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Contents", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "nameWithType": "SyntaxDetailViewModel.Contents" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents*", + "name": "Contents", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Contents_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "nameWithType": "SyntaxDetailViewModel.Contents" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "name": "Parameters", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Parameters", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "nameWithType": "SyntaxDetailViewModel.Parameters" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters*", + "name": "Parameters", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Parameters_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "nameWithType": "SyntaxDetailViewModel.Parameters" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "name": "Return", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Return", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "nameWithType": "SyntaxDetailViewModel.Return" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return*", + "name": "Return", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Return_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "nameWithType": "SyntaxDetailViewModel.Return" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "name": "TypeParameters", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_TypeParameters", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "nameWithType": "SyntaxDetailViewModel.TypeParameters" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters*", + "name": "TypeParameters", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_TypeParameters_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "nameWithType": "SyntaxDetailViewModel.TypeParameters" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxLanguage", + "name": "SyntaxLanguage", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.SyntaxLanguage", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxLanguage", + "nameWithType": "SyntaxLanguage" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.CSharp", + "name": "CSharp", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html#Docfx_DataContracts_ManagedReference_SyntaxLanguage_CSharp", + "commentId": "F:Docfx.DataContracts.ManagedReference.SyntaxLanguage.CSharp", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.CSharp", + "nameWithType": "SyntaxLanguage.CSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.Default", + "name": "Default", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html#Docfx_DataContracts_ManagedReference_SyntaxLanguage_Default", + "commentId": "F:Docfx.DataContracts.ManagedReference.SyntaxLanguage.Default", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.Default", + "nameWithType": "SyntaxLanguage.Default" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.VB", + "name": "VB", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html#Docfx_DataContracts_ManagedReference_SyntaxLanguage_VB", + "commentId": "F:Docfx.DataContracts.ManagedReference.SyntaxLanguage.VB", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.VB", + "nameWithType": "SyntaxLanguage.VB" + }, + { + "uid": "Docfx.Docset", + "name": "Docset", + "href": "api/Docfx.Docset.html", + "commentId": "T:Docfx.Docset", + "fullName": "Docfx.Docset", + "nameWithType": "Docset" + }, + { + "uid": "Docfx.Docset.Build(System.String)", + "name": "Build(string)", + "href": "api/Docfx.Docset.html#Docfx_Docset_Build_System_String_", + "commentId": "M:Docfx.Docset.Build(System.String)", + "name.vb": "Build(String)", + "fullName": "Docfx.Docset.Build(string)", + "fullName.vb": "Docfx.Docset.Build(String)", + "nameWithType": "Docset.Build(string)", + "nameWithType.vb": "Docset.Build(String)" + }, + { + "uid": "Docfx.Docset.Build(System.String,Docfx.BuildOptions)", + "name": "Build(string, BuildOptions)", + "href": "api/Docfx.Docset.html#Docfx_Docset_Build_System_String_Docfx_BuildOptions_", + "commentId": "M:Docfx.Docset.Build(System.String,Docfx.BuildOptions)", + "name.vb": "Build(String, BuildOptions)", + "fullName": "Docfx.Docset.Build(string, Docfx.BuildOptions)", + "fullName.vb": "Docfx.Docset.Build(String, Docfx.BuildOptions)", + "nameWithType": "Docset.Build(string, BuildOptions)", + "nameWithType.vb": "Docset.Build(String, BuildOptions)" + }, + { + "uid": "Docfx.Docset.Build*", + "name": "Build", + "href": "api/Docfx.Docset.html#Docfx_Docset_Build_", + "commentId": "Overload:Docfx.Docset.Build", + "isSpec": "True", + "fullName": "Docfx.Docset.Build", + "nameWithType": "Docset.Build" + }, + { + "uid": "Docfx.Docset.Pdf(System.String)", + "name": "Pdf(string)", + "href": "api/Docfx.Docset.html#Docfx_Docset_Pdf_System_String_", + "commentId": "M:Docfx.Docset.Pdf(System.String)", + "name.vb": "Pdf(String)", + "fullName": "Docfx.Docset.Pdf(string)", + "fullName.vb": "Docfx.Docset.Pdf(String)", + "nameWithType": "Docset.Pdf(string)", + "nameWithType.vb": "Docset.Pdf(String)" + }, + { + "uid": "Docfx.Docset.Pdf(System.String,Docfx.BuildOptions)", + "name": "Pdf(string, BuildOptions)", + "href": "api/Docfx.Docset.html#Docfx_Docset_Pdf_System_String_Docfx_BuildOptions_", + "commentId": "M:Docfx.Docset.Pdf(System.String,Docfx.BuildOptions)", + "name.vb": "Pdf(String, BuildOptions)", + "fullName": "Docfx.Docset.Pdf(string, Docfx.BuildOptions)", + "fullName.vb": "Docfx.Docset.Pdf(String, Docfx.BuildOptions)", + "nameWithType": "Docset.Pdf(string, BuildOptions)", + "nameWithType.vb": "Docset.Pdf(String, BuildOptions)" + }, + { + "uid": "Docfx.Docset.Pdf*", + "name": "Pdf", + "href": "api/Docfx.Docset.html#Docfx_Docset_Pdf_", + "commentId": "Overload:Docfx.Docset.Pdf", + "isSpec": "True", + "fullName": "Docfx.Docset.Pdf", + "nameWithType": "Docset.Pdf" + }, + { + "uid": "Docfx.Dotnet", + "name": "Docfx.Dotnet", + "href": "api/Docfx.Dotnet.html", + "commentId": "N:Docfx.Dotnet", + "fullName": "Docfx.Dotnet", + "nameWithType": "Docfx.Dotnet" + }, + { + "uid": "Docfx.Dotnet.DotnetApiCatalog", + "name": "DotnetApiCatalog", + "href": "api/Docfx.Dotnet.DotnetApiCatalog.html", + "commentId": "T:Docfx.Dotnet.DotnetApiCatalog", + "fullName": "Docfx.Dotnet.DotnetApiCatalog", + "nameWithType": "DotnetApiCatalog" + }, + { + "uid": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String)", + "name": "GenerateManagedReferenceYamlFiles(string)", + "href": "api/Docfx.Dotnet.DotnetApiCatalog.html#Docfx_Dotnet_DotnetApiCatalog_GenerateManagedReferenceYamlFiles_System_String_", + "commentId": "M:Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String)", + "name.vb": "GenerateManagedReferenceYamlFiles(String)", + "fullName": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string)", + "fullName.vb": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String)", + "nameWithType": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string)", + "nameWithType.vb": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String)" + }, + { + "uid": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String,Docfx.Dotnet.DotnetApiOptions)", + "name": "GenerateManagedReferenceYamlFiles(string, DotnetApiOptions)", + "href": "api/Docfx.Dotnet.DotnetApiCatalog.html#Docfx_Dotnet_DotnetApiCatalog_GenerateManagedReferenceYamlFiles_System_String_Docfx_Dotnet_DotnetApiOptions_", + "commentId": "M:Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String,Docfx.Dotnet.DotnetApiOptions)", + "name.vb": "GenerateManagedReferenceYamlFiles(String, DotnetApiOptions)", + "fullName": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string, Docfx.Dotnet.DotnetApiOptions)", + "fullName.vb": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String, Docfx.Dotnet.DotnetApiOptions)", + "nameWithType": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string, DotnetApiOptions)", + "nameWithType.vb": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String, DotnetApiOptions)" + }, + { + "uid": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles*", + "name": "GenerateManagedReferenceYamlFiles", + "href": "api/Docfx.Dotnet.DotnetApiCatalog.html#Docfx_Dotnet_DotnetApiCatalog_GenerateManagedReferenceYamlFiles_", + "commentId": "Overload:Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles", + "isSpec": "True", + "fullName": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles", + "nameWithType": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions", + "name": "DotnetApiOptions", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html", + "commentId": "T:Docfx.Dotnet.DotnetApiOptions", + "fullName": "Docfx.Dotnet.DotnetApiOptions", + "nameWithType": "DotnetApiOptions" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "name": "IncludeApi", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeApi", + "commentId": "P:Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "fullName": "Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "nameWithType": "DotnetApiOptions.IncludeApi" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.IncludeApi*", + "name": "IncludeApi", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeApi_", + "commentId": "Overload:Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "isSpec": "True", + "fullName": "Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "nameWithType": "DotnetApiOptions.IncludeApi" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "name": "IncludeAttribute", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeAttribute", + "commentId": "P:Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "fullName": "Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "nameWithType": "DotnetApiOptions.IncludeAttribute" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.IncludeAttribute*", + "name": "IncludeAttribute", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeAttribute_", + "commentId": "Overload:Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "isSpec": "True", + "fullName": "Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "nameWithType": "DotnetApiOptions.IncludeAttribute" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "name": "SourceUrl", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_SourceUrl", + "commentId": "P:Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "fullName": "Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "nameWithType": "DotnetApiOptions.SourceUrl" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.SourceUrl*", + "name": "SourceUrl", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_SourceUrl_", + "commentId": "Overload:Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "isSpec": "True", + "fullName": "Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "nameWithType": "DotnetApiOptions.SourceUrl" + }, + { + "uid": "Docfx.Dotnet.SymbolIncludeState", + "name": "SymbolIncludeState", + "href": "api/Docfx.Dotnet.SymbolIncludeState.html", + "commentId": "T:Docfx.Dotnet.SymbolIncludeState", + "fullName": "Docfx.Dotnet.SymbolIncludeState", + "nameWithType": "SymbolIncludeState" + }, + { + "uid": "Docfx.Dotnet.SymbolIncludeState.Default", + "name": "Default", + "href": "api/Docfx.Dotnet.SymbolIncludeState.html#Docfx_Dotnet_SymbolIncludeState_Default", + "commentId": "F:Docfx.Dotnet.SymbolIncludeState.Default", + "fullName": "Docfx.Dotnet.SymbolIncludeState.Default", + "nameWithType": "SymbolIncludeState.Default" + }, + { + "uid": "Docfx.Dotnet.SymbolIncludeState.Exclude", + "name": "Exclude", + "href": "api/Docfx.Dotnet.SymbolIncludeState.html#Docfx_Dotnet_SymbolIncludeState_Exclude", + "commentId": "F:Docfx.Dotnet.SymbolIncludeState.Exclude", + "fullName": "Docfx.Dotnet.SymbolIncludeState.Exclude", + "nameWithType": "SymbolIncludeState.Exclude" + }, + { + "uid": "Docfx.Dotnet.SymbolIncludeState.Include", + "name": "Include", + "href": "api/Docfx.Dotnet.SymbolIncludeState.html#Docfx_Dotnet_SymbolIncludeState_Include", + "commentId": "F:Docfx.Dotnet.SymbolIncludeState.Include", + "fullName": "Docfx.Dotnet.SymbolIncludeState.Include", + "nameWithType": "SymbolIncludeState.Include" + }, + { + "uid": "Docfx.MemberLayout", + "name": "MemberLayout", + "href": "api/Docfx.MemberLayout.html", + "commentId": "T:Docfx.MemberLayout", + "fullName": "Docfx.MemberLayout", + "nameWithType": "MemberLayout" + }, + { + "uid": "Docfx.MemberLayout.SamePage", + "name": "SamePage", + "href": "api/Docfx.MemberLayout.html#Docfx_MemberLayout_SamePage", + "commentId": "F:Docfx.MemberLayout.SamePage", + "fullName": "Docfx.MemberLayout.SamePage", + "nameWithType": "MemberLayout.SamePage" + }, + { + "uid": "Docfx.MemberLayout.SeparatePages", + "name": "SeparatePages", + "href": "api/Docfx.MemberLayout.html#Docfx_MemberLayout_SeparatePages", + "commentId": "F:Docfx.MemberLayout.SeparatePages", + "fullName": "Docfx.MemberLayout.SeparatePages", + "nameWithType": "MemberLayout.SeparatePages" + } + ] +} diff --git a/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_03.json b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_03.json new file mode 100644 index 00000000000..2bdf34fa44d --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_03.json @@ -0,0 +1,210 @@ +{ + "items": [ + { + "uid": "CSharp10", + "name": "CSharp10", + "type": "Namespace", + "items": [ + { + "uid": "CSharp10.ConstantInterpolatedStrings", + "name": "ConstantInterpolatedStrings", + "type": "Class" + }, + { + "uid": "CSharp10.Issue7737", + "name": "Issue7737", + "type": "Class" + }, + { + "uid": "CSharp10.ParameterlessStructConstructors", + "name": "ParameterlessStructConstructors", + "type": "Struct" + }, + { + "uid": "CSharp10.ReadOnlyRecordStruct", + "name": "ReadOnlyRecordStruct", + "type": "Struct" + }, + { + "uid": "CSharp10.RecordClass", + "name": "RecordClass", + "type": "Class" + }, + { + "uid": "CSharp10.RecordStruct", + "name": "RecordStruct", + "type": "Struct" + } + ] + }, + { + "uid": "CSharp11", + "name": "CSharp11", + "type": "Namespace", + "items": [ + { + "uid": "CSharp11.CheckedUserDefinedOperators`1", + "name": "CheckedUserDefinedOperators<T>", + "type": "Interface" + }, + { + "uid": "CSharp11.RequiredModifier", + "name": "RequiredModifier", + "type": "Class" + }, + { + "uid": "CSharp11.ScopedModifier", + "name": "ScopedModifier", + "type": "Class" + }, + { + "uid": "CSharp11.StaticAbstractMembersInInterfaces", + "name": "StaticAbstractMembersInInterfaces", + "type": "Class" + }, + { + "uid": "CSharp11.StaticAbstractMembersInInterfaces.IGetNext`1", + "name": "StaticAbstractMembersInInterfaces.IGetNext<T>", + "type": "Interface" + }, + { + "uid": "CSharp11.StaticAbstractMembersInInterfaces.RepeatSequence", + "name": "StaticAbstractMembersInInterfaces.RepeatSequence", + "type": "Struct" + } + ] + }, + { + "uid": "CSharp12", + "name": "CSharp12", + "type": "Namespace", + "items": [ + { + "uid": "CSharp12.CollectionExpressions", + "name": "CollectionExpressions", + "type": "Class" + }, + { + "uid": "CSharp12.DefaultLambdaParameters", + "name": "DefaultLambdaParameters", + "type": "Class" + }, + { + "uid": "CSharp12.InlineArrays", + "name": "InlineArrays", + "type": "Struct" + }, + { + "uid": "CSharp12.PrimaryConstructors", + "name": "PrimaryConstructors", + "type": "Class" + }, + { + "uid": "CSharp12.PrimaryConstructors.BankAccount", + "name": "PrimaryConstructors.BankAccount", + "type": "Class" + }, + { + "uid": "CSharp12.PrimaryConstructors.CheckAccount", + "name": "PrimaryConstructors.CheckAccount", + "type": "Class" + }, + { + "uid": "CSharp12.PrimaryConstructors.Distance", + "name": "PrimaryConstructors.Distance", + "type": "Struct" + }, + { + "uid": "CSharp12.RefReadOnlyParameters", + "name": "RefReadOnlyParameters", + "type": "Class" + } + ] + }, + { + "uid": "CSharp8", + "name": "CSharp8", + "type": "Namespace", + "items": [ + { + "uid": "CSharp8.DefaultInterfaceMembers", + "name": "DefaultInterfaceMembers", + "type": "Interface" + }, + { + "uid": "CSharp8.DefaultInterfaceMembers.IA", + "name": "DefaultInterfaceMembers.IA", + "type": "Interface" + }, + { + "uid": "CSharp8.DefaultInterfaceMembers.Nested", + "name": "DefaultInterfaceMembers.Nested", + "type": "Class" + }, + { + "uid": "CSharp8.DisposableRefStructs", + "name": "DisposableRefStructs", + "type": "Struct" + }, + { + "uid": "CSharp8.Issue4007", + "name": "Issue4007", + "type": "Class" + }, + { + "uid": "CSharp8.Misc", + "name": "Misc", + "type": "Class" + }, + { + "uid": "CSharp8.NullableReferenceTypes", + "name": "NullableReferenceTypes", + "type": "Class" + }, + { + "uid": "CSharp8.ReadOnlyMembers", + "name": "ReadOnlyMembers", + "type": "Struct" + } + ] + }, + { + "uid": "CSharp9", + "name": "CSharp9", + "type": "Namespace", + "items": [ + { + "uid": "CSharp9.FunctionPointers", + "name": "FunctionPointers", + "type": "Class" + }, + { + "uid": "CSharp9.InitOnlySetters", + "name": "InitOnlySetters", + "type": "Class" + }, + { + "uid": "CSharp9.NativeSizedIntegers", + "name": "NativeSizedIntegers", + "type": "Class" + }, + { + "uid": "CSharp9.RecordTypes", + "name": "RecordTypes", + "type": "Class" + }, + { + "uid": "CSharp9.RecordTypes.Person", + "name": "RecordTypes.Person", + "type": "Class" + }, + { + "uid": "CSharp9.RecordTypes.Teacher", + "name": "RecordTypes.Teacher", + "type": "Class" + } + ] + } + ], + "memberLayout": "SamePage" +} diff --git a/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_04.json b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_04.json new file mode 100644 index 00000000000..7672bba0101 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_04.json @@ -0,0 +1,295 @@ +{ + "items": [ + { + "uid": "BuildFromAssembly", + "name": "BuildFromAssembly", + "type": "Namespace", + "items": [ + { + "uid": "BuildFromAssembly.Class1", + "name": "Class1", + "type": "Class" + }, + { + "uid": "BuildFromAssembly.Issue5432", + "name": "Issue5432", + "type": "Struct" + } + ] + }, + { + "uid": "BuildFromCSharpSourceCode", + "name": "BuildFromCSharpSourceCode", + "type": "Namespace", + "items": [ + { + "uid": "BuildFromCSharpSourceCode.CSharp", + "name": "CSharp", + "type": "Class" + } + ] + }, + { + "uid": "BuildFromProject", + "name": "BuildFromProject", + "type": "Namespace", + "items": [ + { + "uid": "BuildFromProject.Issue8540", + "name": "Issue8540", + "type": "Namespace", + "items": [ + { + "uid": "BuildFromProject.Issue8540.A", + "name": "A", + "type": "Namespace", + "items": [ + { + "uid": "BuildFromProject.Issue8540.A.A", + "name": "A", + "type": "Class" + } + ] + }, + { + "uid": "BuildFromProject.Issue8540.B", + "name": "B", + "type": "Namespace", + "items": [ + { + "uid": "BuildFromProject.Issue8540.B.B", + "name": "B", + "type": "Class" + } + ] + } + ] + }, + { + "uid": "BuildFromProject.Class1", + "name": "Class1", + "type": "Class" + }, + { + "uid": "BuildFromProject.Class1.IIssue8948", + "name": "Class1.IIssue8948", + "type": "Interface" + }, + { + "uid": "BuildFromProject.Class1.Issue8665", + "name": "Class1.Issue8665", + "type": "Class" + }, + { + "uid": "BuildFromProject.Class1.Issue8696Attribute", + "name": "Class1.Issue8696Attribute", + "type": "Class" + }, + { + "uid": "BuildFromProject.Class1.Issue8948", + "name": "Class1.Issue8948", + "type": "Class" + }, + { + "uid": "BuildFromProject.Class1.Issue9260", + "name": "Class1.Issue9260", + "type": "Enum" + }, + { + "uid": "BuildFromProject.Class1.Test`1", + "name": "Class1.Test<T>", + "type": "Class" + }, + { + "uid": "BuildFromProject.Dog", + "name": "Dog", + "type": "Class" + }, + { + "uid": "BuildFromProject.IInheritdoc", + "name": "IInheritdoc", + "type": "Interface" + }, + { + "uid": "BuildFromProject.Inheritdoc", + "name": "Inheritdoc", + "type": "Class" + }, + { + "uid": "BuildFromProject.Inheritdoc.Issue6366", + "name": "Inheritdoc.Issue6366", + "type": "Class" + }, + { + "uid": "BuildFromProject.Inheritdoc.Issue6366.Class1`1", + "name": "Inheritdoc.Issue6366.Class1<T>", + "type": "Class" + }, + { + "uid": "BuildFromProject.Inheritdoc.Issue6366.Class2", + "name": "Inheritdoc.Issue6366.Class2", + "type": "Class" + }, + { + "uid": "BuildFromProject.Inheritdoc.Issue7035", + "name": "Inheritdoc.Issue7035", + "type": "Class" + }, + { + "uid": "BuildFromProject.Inheritdoc.Issue7484", + "name": "Inheritdoc.Issue7484", + "type": "Class" + }, + { + "uid": "BuildFromProject.Inheritdoc.Issue8101", + "name": "Inheritdoc.Issue8101", + "type": "Class" + }, + { + "uid": "BuildFromProject.Inheritdoc.Issue8129", + "name": "Inheritdoc.Issue8129", + "type": "Struct" + }, + { + "uid": "BuildFromProject.Issue8725", + "name": "Issue8725", + "type": "Class" + } + ] + }, + { + "uid": "BuildFromVBSourceCode", + "name": "BuildFromVBSourceCode", + "type": "Namespace", + "items": [ + { + "uid": "BuildFromVBSourceCode.BaseClass1", + "name": "BaseClass1", + "type": "Class" + }, + { + "uid": "BuildFromVBSourceCode.Class1", + "name": "Class1", + "type": "Class" + } + ] + }, + { + "uid": "CatLibrary", + "name": "CatLibrary", + "type": "Namespace", + "items": [ + { + "uid": "CatLibrary.Core", + "name": "Core", + "type": "Namespace", + "items": [ + { + "uid": "CatLibrary.Core.ContainersRefType", + "name": "ContainersRefType", + "type": "Struct" + }, + { + "uid": "CatLibrary.Core.ContainersRefType.ColorType", + "name": "ContainersRefType.ColorType", + "type": "Enum" + }, + { + "uid": "CatLibrary.Core.ContainersRefType.ContainersRefTypeChild", + "name": "ContainersRefType.ContainersRefTypeChild", + "type": "Class" + }, + { + "uid": "CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface", + "name": "ContainersRefType.ContainersRefTypeChildInterface", + "type": "Interface" + }, + { + "uid": "CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate", + "name": "ContainersRefType.ContainersRefTypeDelegate", + "type": "Delegate" + }, + { + "uid": "CatLibrary.Core.ExplicitLayoutClass", + "name": "ExplicitLayoutClass", + "type": "Class" + }, + { + "uid": "CatLibrary.Core.Issue231", + "name": "Issue231", + "type": "Class" + } + ] + }, + { + "uid": "CatLibrary.CatException`1", + "name": "CatException<T>", + "type": "Class" + }, + { + "uid": "CatLibrary.Cat`2", + "name": "Cat<T, K>", + "type": "Class" + }, + { + "uid": "CatLibrary.Complex`2", + "name": "Complex<T, J>", + "type": "Class" + }, + { + "uid": "CatLibrary.FakeDelegate`1", + "name": "FakeDelegate<T>", + "type": "Delegate" + }, + { + "uid": "CatLibrary.IAnimal", + "name": "IAnimal", + "type": "Interface" + }, + { + "uid": "CatLibrary.ICat", + "name": "ICat", + "type": "Interface" + }, + { + "uid": "CatLibrary.ICatExtension", + "name": "ICatExtension", + "type": "Class" + }, + { + "uid": "CatLibrary.MRefDelegate`3", + "name": "MRefDelegate<K, T, L>", + "type": "Delegate" + }, + { + "uid": "CatLibrary.MRefNormalDelegate", + "name": "MRefNormalDelegate", + "type": "Delegate" + }, + { + "uid": "CatLibrary.Tom", + "name": "Tom", + "type": "Class" + }, + { + "uid": "CatLibrary.TomFromBaseClass", + "name": "TomFromBaseClass", + "type": "Class" + } + ] + }, + { + "uid": "MRef.Demo.Enumeration", + "name": "MRef.Demo.Enumeration", + "type": "Namespace", + "items": [ + { + "uid": "MRef.Demo.Enumeration.ColorType", + "name": "ColorType", + "type": "Enum" + } + ] + } + ], + "memberLayout": "SamePage" +} diff --git a/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_05.json b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_05.json new file mode 100644 index 00000000000..de6187c3954 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Json/toc_05.json @@ -0,0 +1,41 @@ +{ + "order": 100, + "items": [ + { + "name": "Getting Started with docfx", + "href": "docfx_getting_started.html", + "topicHref": "docfx_getting_started.html" + }, + { + "name": "Engineering Docs", + "items": [ + { "name": "Section 1" }, + { + "name": "Engineering Guidelines", + "href": "engineering_guidelines.html", + "topicHref": "engineering_guidelines.html" + }, + { + "name": "C# Coding Standards", + "href": "csharp_coding_standards.html", + "topicHref": "csharp_coding_standards.html" + } + ], + "expanded": true + }, + { + "name": "Markdown", + "href": "markdown.html", + "topicHref": "markdown.html" + }, + { + "name": "Microsoft Docs", + "href": "https://docs.microsoft.com/en-us/", + "topicHref": "https://docs.microsoft.com/en-us/" + } + ], + "pdfFileName": "seed.pdf", + "pdfCoverPage": "pdf/cover.html", + "pdf": true, + "pdfTocPage": true +} diff --git a/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_01.yml b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_01.yml new file mode 100644 index 00000000000..5cab96f4b3b --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_01.yml @@ -0,0 +1,5 @@ +sorted: true +items: [] +custom: +- prop1: "true" + prop2: "dummy" diff --git a/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_02.yml b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_02.yml new file mode 100644 index 00000000000..86f25a77cf9 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_02.yml @@ -0,0 +1,1471 @@ +sorted: true +references: +- uid: Docfx + name: Docfx + href: api/Docfx.html + commentId: N:Docfx + fullName: Docfx + nameWithType: Docfx +- uid: Docfx.BuildOptions + name: BuildOptions + href: api/Docfx.BuildOptions.html + commentId: T:Docfx.BuildOptions + fullName: Docfx.BuildOptions + nameWithType: BuildOptions +- uid: Docfx.BuildOptions.ConfigureMarkdig + name: ConfigureMarkdig + href: api/Docfx.BuildOptions.html#Docfx_BuildOptions_ConfigureMarkdig + commentId: P:Docfx.BuildOptions.ConfigureMarkdig + fullName: Docfx.BuildOptions.ConfigureMarkdig + nameWithType: BuildOptions.ConfigureMarkdig +- uid: Docfx.BuildOptions.ConfigureMarkdig* + name: ConfigureMarkdig + href: api/Docfx.BuildOptions.html#Docfx_BuildOptions_ConfigureMarkdig_ + commentId: Overload:Docfx.BuildOptions.ConfigureMarkdig + isSpec: 'True' + fullName: Docfx.BuildOptions.ConfigureMarkdig + nameWithType: BuildOptions.ConfigureMarkdig +- uid: Docfx.DataContracts.ManagedReference + name: Docfx.DataContracts.ManagedReference + href: api/Docfx.DataContracts.ManagedReference.html + commentId: N:Docfx.DataContracts.ManagedReference + fullName: Docfx.DataContracts.ManagedReference + nameWithType: Docfx.DataContracts.ManagedReference +- uid: Docfx.DataContracts.ManagedReference.AdditionalNotes + name: AdditionalNotes + href: api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html + commentId: T:Docfx.DataContracts.ManagedReference.AdditionalNotes + fullName: Docfx.DataContracts.ManagedReference.AdditionalNotes + nameWithType: AdditionalNotes +- uid: Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller + name: Caller + href: api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Caller + commentId: P:Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller + fullName: Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller + nameWithType: AdditionalNotes.Caller +- uid: Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller* + name: Caller + href: api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Caller_ + commentId: Overload:Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller + nameWithType: AdditionalNotes.Caller +- uid: Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer + name: Implementer + href: api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Implementer + commentId: P:Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer + fullName: Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer + nameWithType: AdditionalNotes.Implementer +- uid: Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer* + name: Implementer + href: api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Implementer_ + commentId: Overload:Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer + nameWithType: AdditionalNotes.Implementer +- uid: Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor + name: Inheritor + href: api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Inheritor + commentId: P:Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor + fullName: Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor + nameWithType: AdditionalNotes.Inheritor +- uid: Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor* + name: Inheritor + href: api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Inheritor_ + commentId: Overload:Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor + nameWithType: AdditionalNotes.Inheritor +- uid: Docfx.DataContracts.ManagedReference.ApiParameter + name: ApiParameter + href: api/Docfx.DataContracts.ManagedReference.ApiParameter.html + commentId: T:Docfx.DataContracts.ManagedReference.ApiParameter + fullName: Docfx.DataContracts.ManagedReference.ApiParameter + nameWithType: ApiParameter +- uid: Docfx.DataContracts.ManagedReference.ApiParameter.Attributes + name: Attributes + href: api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Attributes + commentId: P:Docfx.DataContracts.ManagedReference.ApiParameter.Attributes + fullName: Docfx.DataContracts.ManagedReference.ApiParameter.Attributes + nameWithType: ApiParameter.Attributes +- uid: Docfx.DataContracts.ManagedReference.ApiParameter.Attributes* + name: Attributes + href: api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Attributes_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Attributes + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ApiParameter.Attributes + nameWithType: ApiParameter.Attributes +- uid: Docfx.DataContracts.ManagedReference.ApiParameter.Description + name: Description + href: api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Description + commentId: P:Docfx.DataContracts.ManagedReference.ApiParameter.Description + fullName: Docfx.DataContracts.ManagedReference.ApiParameter.Description + nameWithType: ApiParameter.Description +- uid: Docfx.DataContracts.ManagedReference.ApiParameter.Description* + name: Description + href: api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Description_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Description + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ApiParameter.Description + nameWithType: ApiParameter.Description +- uid: Docfx.DataContracts.ManagedReference.ApiParameter.Name + name: Name + href: api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Name + commentId: P:Docfx.DataContracts.ManagedReference.ApiParameter.Name + fullName: Docfx.DataContracts.ManagedReference.ApiParameter.Name + nameWithType: ApiParameter.Name +- uid: Docfx.DataContracts.ManagedReference.ApiParameter.Name* + name: Name + href: api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Name_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Name + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ApiParameter.Name + nameWithType: ApiParameter.Name +- uid: Docfx.DataContracts.ManagedReference.ApiParameter.Type + name: Type + href: api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Type + commentId: P:Docfx.DataContracts.ManagedReference.ApiParameter.Type + fullName: Docfx.DataContracts.ManagedReference.ApiParameter.Type + nameWithType: ApiParameter.Type +- uid: Docfx.DataContracts.ManagedReference.ApiParameter.Type* + name: Type + href: api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Type_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Type + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ApiParameter.Type + nameWithType: ApiParameter.Type +- uid: Docfx.DataContracts.ManagedReference.ArgumentInfo + name: ArgumentInfo + href: api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html + commentId: T:Docfx.DataContracts.ManagedReference.ArgumentInfo + fullName: Docfx.DataContracts.ManagedReference.ArgumentInfo + nameWithType: ArgumentInfo +- uid: Docfx.DataContracts.ManagedReference.ArgumentInfo.Type + name: Type + href: api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Type + commentId: P:Docfx.DataContracts.ManagedReference.ArgumentInfo.Type + fullName: Docfx.DataContracts.ManagedReference.ArgumentInfo.Type + nameWithType: ArgumentInfo.Type +- uid: Docfx.DataContracts.ManagedReference.ArgumentInfo.Type* + name: Type + href: api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Type_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ArgumentInfo.Type + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ArgumentInfo.Type + nameWithType: ArgumentInfo.Type +- uid: Docfx.DataContracts.ManagedReference.ArgumentInfo.Value + name: Value + href: api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Value + commentId: P:Docfx.DataContracts.ManagedReference.ArgumentInfo.Value + fullName: Docfx.DataContracts.ManagedReference.ArgumentInfo.Value + nameWithType: ArgumentInfo.Value +- uid: Docfx.DataContracts.ManagedReference.ArgumentInfo.Value* + name: Value + href: api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Value_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ArgumentInfo.Value + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ArgumentInfo.Value + nameWithType: ArgumentInfo.Value +- uid: Docfx.DataContracts.ManagedReference.AttributeInfo + name: AttributeInfo + href: api/Docfx.DataContracts.ManagedReference.AttributeInfo.html + commentId: T:Docfx.DataContracts.ManagedReference.AttributeInfo + fullName: Docfx.DataContracts.ManagedReference.AttributeInfo + nameWithType: AttributeInfo +- uid: Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments + name: Arguments + href: api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Arguments + commentId: P:Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments + fullName: Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments + nameWithType: AttributeInfo.Arguments +- uid: Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments* + name: Arguments + href: api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Arguments_ + commentId: Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments + nameWithType: AttributeInfo.Arguments +- uid: Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor + name: Constructor + href: api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Constructor + commentId: P:Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor + fullName: Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor + nameWithType: AttributeInfo.Constructor +- uid: Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor* + name: Constructor + href: api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Constructor_ + commentId: Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor + nameWithType: AttributeInfo.Constructor +- uid: Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments + name: NamedArguments + href: api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_NamedArguments + commentId: P:Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments + fullName: Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments + nameWithType: AttributeInfo.NamedArguments +- uid: Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments* + name: NamedArguments + href: api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_NamedArguments_ + commentId: Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments + nameWithType: AttributeInfo.NamedArguments +- uid: Docfx.DataContracts.ManagedReference.AttributeInfo.Type + name: Type + href: api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Type + commentId: P:Docfx.DataContracts.ManagedReference.AttributeInfo.Type + fullName: Docfx.DataContracts.ManagedReference.AttributeInfo.Type + nameWithType: AttributeInfo.Type +- uid: Docfx.DataContracts.ManagedReference.AttributeInfo.Type* + name: Type + href: api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Type_ + commentId: Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.Type + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.AttributeInfo.Type + nameWithType: AttributeInfo.Type +- uid: Docfx.DataContracts.ManagedReference.ExceptionInfo + name: ExceptionInfo + href: api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html + commentId: T:Docfx.DataContracts.ManagedReference.ExceptionInfo + fullName: Docfx.DataContracts.ManagedReference.ExceptionInfo + nameWithType: ExceptionInfo +- uid: Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId + name: CommentId + href: api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_CommentId + commentId: P:Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId + fullName: Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId + nameWithType: ExceptionInfo.CommentId +- uid: Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId* + name: CommentId + href: api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_CommentId_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId + nameWithType: ExceptionInfo.CommentId +- uid: Docfx.DataContracts.ManagedReference.ExceptionInfo.Description + name: Description + href: api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Description + commentId: P:Docfx.DataContracts.ManagedReference.ExceptionInfo.Description + fullName: Docfx.DataContracts.ManagedReference.ExceptionInfo.Description + nameWithType: ExceptionInfo.Description +- uid: Docfx.DataContracts.ManagedReference.ExceptionInfo.Description* + name: Description + href: api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Description_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ExceptionInfo.Description + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ExceptionInfo.Description + nameWithType: ExceptionInfo.Description +- uid: Docfx.DataContracts.ManagedReference.ExceptionInfo.Type + name: Type + href: api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Type + commentId: P:Docfx.DataContracts.ManagedReference.ExceptionInfo.Type + fullName: Docfx.DataContracts.ManagedReference.ExceptionInfo.Type + nameWithType: ExceptionInfo.Type +- uid: Docfx.DataContracts.ManagedReference.ExceptionInfo.Type* + name: Type + href: api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Type_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ExceptionInfo.Type + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ExceptionInfo.Type + nameWithType: ExceptionInfo.Type +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel + name: ItemViewModel + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html + commentId: T:Docfx.DataContracts.ManagedReference.ItemViewModel + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel + nameWithType: ItemViewModel +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes + name: AdditionalNotes + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AdditionalNotes + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes + nameWithType: ItemViewModel.AdditionalNotes +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes* + name: AdditionalNotes + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AdditionalNotes_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes + nameWithType: ItemViewModel.AdditionalNotes +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList + name: AssemblyNameList + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AssemblyNameList + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList + nameWithType: ItemViewModel.AssemblyNameList +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList* + name: AssemblyNameList + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AssemblyNameList_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList + nameWithType: ItemViewModel.AssemblyNameList +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes + name: Attributes + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Attributes + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes + nameWithType: ItemViewModel.Attributes +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes* + name: Attributes + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Attributes_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes + nameWithType: ItemViewModel.Attributes +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Children + name: Children + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Children + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Children + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Children + nameWithType: ItemViewModel.Children +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Children* + name: Children + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Children_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Children + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Children + nameWithType: ItemViewModel.Children +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId + name: CommentId + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_CommentId + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId + nameWithType: ItemViewModel.CommentId +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId* + name: CommentId + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_CommentId_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId + nameWithType: ItemViewModel.CommentId +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual + name: Conceptual + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Conceptual + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual + nameWithType: ItemViewModel.Conceptual +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual* + name: Conceptual + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Conceptual_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual + nameWithType: ItemViewModel.Conceptual +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses + name: DerivedClasses + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_DerivedClasses + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses + nameWithType: ItemViewModel.DerivedClasses +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses* + name: DerivedClasses + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_DerivedClasses_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses + nameWithType: ItemViewModel.DerivedClasses +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation + name: Documentation + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Documentation + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation + nameWithType: ItemViewModel.Documentation +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation* + name: Documentation + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Documentation_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation + nameWithType: ItemViewModel.Documentation +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Examples + name: Examples + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Examples + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Examples + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Examples + nameWithType: ItemViewModel.Examples +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Examples* + name: Examples + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Examples_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Examples + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Examples + nameWithType: ItemViewModel.Examples +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions + name: Exceptions + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Exceptions + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions + nameWithType: ItemViewModel.Exceptions +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions* + name: Exceptions + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Exceptions_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions + nameWithType: ItemViewModel.Exceptions +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods + name: ExtensionMethods + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_ExtensionMethods + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods + nameWithType: ItemViewModel.ExtensionMethods +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods* + name: ExtensionMethods + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_ExtensionMethods_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods + nameWithType: ItemViewModel.ExtensionMethods +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.FullName + name: FullName + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullName + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullName + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.FullName + nameWithType: ItemViewModel.FullName +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.FullName* + name: FullName + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullName_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullName + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.FullName + nameWithType: ItemViewModel.FullName +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp + name: FullNameForCSharp + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForCSharp + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp + nameWithType: ItemViewModel.FullNameForCSharp +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp* + name: FullNameForCSharp + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForCSharp_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp + nameWithType: ItemViewModel.FullNameForCSharp +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB + name: FullNameForVB + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForVB + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB + nameWithType: ItemViewModel.FullNameForVB +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB* + name: FullNameForVB + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForVB_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB + nameWithType: ItemViewModel.FullNameForVB +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames + name: FullNames + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNames + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames + nameWithType: ItemViewModel.FullNames +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames* + name: FullNames + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNames_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames + nameWithType: ItemViewModel.FullNames +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Href + name: Href + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Href + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Href + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Href + nameWithType: ItemViewModel.Href +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Href* + name: Href + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Href_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Href + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Href + nameWithType: ItemViewModel.Href +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Id + name: Id + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Id + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Id + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Id + nameWithType: ItemViewModel.Id +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Id* + name: Id + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Id_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Id + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Id + nameWithType: ItemViewModel.Id +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Implements + name: Implements + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Implements + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Implements + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Implements + nameWithType: ItemViewModel.Implements +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Implements* + name: Implements + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Implements_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Implements + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Implements + nameWithType: ItemViewModel.Implements +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance + name: Inheritance + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Inheritance + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance + nameWithType: ItemViewModel.Inheritance +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance* + name: Inheritance + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Inheritance_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance + nameWithType: ItemViewModel.Inheritance +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers + name: InheritedMembers + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_InheritedMembers + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers + nameWithType: ItemViewModel.InheritedMembers +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers* + name: InheritedMembers + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_InheritedMembers_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers + nameWithType: ItemViewModel.InheritedMembers +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation + name: IsExplicitInterfaceImplementation + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExplicitInterfaceImplementation + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation + nameWithType: ItemViewModel.IsExplicitInterfaceImplementation +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation* + name: IsExplicitInterfaceImplementation + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExplicitInterfaceImplementation_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation + nameWithType: ItemViewModel.IsExplicitInterfaceImplementation +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod + name: IsExtensionMethod + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExtensionMethod + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod + nameWithType: ItemViewModel.IsExtensionMethod +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod* + name: IsExtensionMethod + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExtensionMethod_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod + nameWithType: ItemViewModel.IsExtensionMethod +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata + name: Metadata + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Metadata + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata + nameWithType: ItemViewModel.Metadata +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata* + name: Metadata + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Metadata_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata + nameWithType: ItemViewModel.Metadata +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Name + name: Name + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Name + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Name + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Name + nameWithType: ItemViewModel.Name +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Name* + name: Name + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Name_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Name + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Name + nameWithType: ItemViewModel.Name +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp + name: NameForCSharp + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForCSharp + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp + nameWithType: ItemViewModel.NameForCSharp +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp* + name: NameForCSharp + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForCSharp_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp + nameWithType: ItemViewModel.NameForCSharp +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB + name: NameForVB + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForVB + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB + nameWithType: ItemViewModel.NameForVB +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB* + name: NameForVB + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForVB_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB + nameWithType: ItemViewModel.NameForVB +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType + name: NameWithType + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithType + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType + nameWithType: ItemViewModel.NameWithType +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType* + name: NameWithType + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithType_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType + nameWithType: ItemViewModel.NameWithType +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp + name: NameWithTypeForCSharp + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForCSharp + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp + nameWithType: ItemViewModel.NameWithTypeForCSharp +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp* + name: NameWithTypeForCSharp + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForCSharp_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp + nameWithType: ItemViewModel.NameWithTypeForCSharp +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB + name: NameWithTypeForVB + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForVB + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB + nameWithType: ItemViewModel.NameWithTypeForVB +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB* + name: NameWithTypeForVB + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForVB_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB + nameWithType: ItemViewModel.NameWithTypeForVB +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Names + name: Names + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Names + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Names + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Names + nameWithType: ItemViewModel.Names +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Names* + name: Names + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Names_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Names + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Names + nameWithType: ItemViewModel.Names +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType + name: NamesWithType + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamesWithType + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType + nameWithType: ItemViewModel.NamesWithType +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType* + name: NamesWithType + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamesWithType_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType + nameWithType: ItemViewModel.NamesWithType +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName + name: NamespaceName + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamespaceName + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName + nameWithType: ItemViewModel.NamespaceName +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName* + name: NamespaceName + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamespaceName_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName + nameWithType: ItemViewModel.NamespaceName +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Overload + name: Overload + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overload + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Overload + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Overload + nameWithType: ItemViewModel.Overload +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Overload* + name: Overload + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overload_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Overload + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Overload + nameWithType: ItemViewModel.Overload +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden + name: Overridden + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overridden + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden + nameWithType: ItemViewModel.Overridden +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden* + name: Overridden + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overridden_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden + nameWithType: ItemViewModel.Overridden +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Parent + name: Parent + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Parent + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Parent + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Parent + nameWithType: ItemViewModel.Parent +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Parent* + name: Parent + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Parent_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Parent + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Parent + nameWithType: ItemViewModel.Parent +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Platform + name: Platform + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Platform + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Platform + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Platform + nameWithType: ItemViewModel.Platform +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Platform* + name: Platform + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Platform_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Platform + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Platform + nameWithType: ItemViewModel.Platform +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks + name: Remarks + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Remarks + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks + nameWithType: ItemViewModel.Remarks +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks* + name: Remarks + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Remarks_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks + nameWithType: ItemViewModel.Remarks +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos + name: SeeAlsos + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsos + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos + nameWithType: ItemViewModel.SeeAlsos +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos* + name: SeeAlsos + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsos_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos + nameWithType: ItemViewModel.SeeAlsos +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference + name: SeeAlsosUidReference + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsosUidReference + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference + nameWithType: ItemViewModel.SeeAlsosUidReference +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference* + name: SeeAlsosUidReference + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsosUidReference_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference + nameWithType: ItemViewModel.SeeAlsosUidReference +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Source + name: Source + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Source + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Source + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Source + nameWithType: ItemViewModel.Source +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Source* + name: Source + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Source_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Source + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Source + nameWithType: ItemViewModel.Source +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Summary + name: Summary + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Summary + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Summary + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Summary + nameWithType: ItemViewModel.Summary +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Summary* + name: Summary + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Summary_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Summary + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Summary + nameWithType: ItemViewModel.Summary +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages + name: SupportedLanguages + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SupportedLanguages + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages + nameWithType: ItemViewModel.SupportedLanguages +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages* + name: SupportedLanguages + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SupportedLanguages_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages + nameWithType: ItemViewModel.SupportedLanguages +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax + name: Syntax + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Syntax + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax + nameWithType: ItemViewModel.Syntax +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax* + name: Syntax + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Syntax_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax + nameWithType: ItemViewModel.Syntax +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Type + name: Type + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Type + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Type + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Type + nameWithType: ItemViewModel.Type +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Type* + name: Type + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Type_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Type + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Type + nameWithType: ItemViewModel.Type +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Uid + name: Uid + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Uid + commentId: P:Docfx.DataContracts.ManagedReference.ItemViewModel.Uid + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Uid + nameWithType: ItemViewModel.Uid +- uid: Docfx.DataContracts.ManagedReference.ItemViewModel.Uid* + name: Uid + href: api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Uid_ + commentId: Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Uid + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.ItemViewModel.Uid + nameWithType: ItemViewModel.Uid +- uid: Docfx.DataContracts.ManagedReference.LinkInfo + name: LinkInfo + href: api/Docfx.DataContracts.ManagedReference.LinkInfo.html + commentId: T:Docfx.DataContracts.ManagedReference.LinkInfo + fullName: Docfx.DataContracts.ManagedReference.LinkInfo + nameWithType: LinkInfo +- uid: Docfx.DataContracts.ManagedReference.LinkInfo.AltText + name: AltText + href: api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_AltText + commentId: P:Docfx.DataContracts.ManagedReference.LinkInfo.AltText + fullName: Docfx.DataContracts.ManagedReference.LinkInfo.AltText + nameWithType: LinkInfo.AltText +- uid: Docfx.DataContracts.ManagedReference.LinkInfo.AltText* + name: AltText + href: api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_AltText_ + commentId: Overload:Docfx.DataContracts.ManagedReference.LinkInfo.AltText + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.LinkInfo.AltText + nameWithType: LinkInfo.AltText +- uid: Docfx.DataContracts.ManagedReference.LinkInfo.CommentId + name: CommentId + href: api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_CommentId + commentId: P:Docfx.DataContracts.ManagedReference.LinkInfo.CommentId + fullName: Docfx.DataContracts.ManagedReference.LinkInfo.CommentId + nameWithType: LinkInfo.CommentId +- uid: Docfx.DataContracts.ManagedReference.LinkInfo.CommentId* + name: CommentId + href: api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_CommentId_ + commentId: Overload:Docfx.DataContracts.ManagedReference.LinkInfo.CommentId + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.LinkInfo.CommentId + nameWithType: LinkInfo.CommentId +- uid: Docfx.DataContracts.ManagedReference.LinkInfo.LinkId + name: LinkId + href: api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkId + commentId: P:Docfx.DataContracts.ManagedReference.LinkInfo.LinkId + fullName: Docfx.DataContracts.ManagedReference.LinkInfo.LinkId + nameWithType: LinkInfo.LinkId +- uid: Docfx.DataContracts.ManagedReference.LinkInfo.LinkId* + name: LinkId + href: api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkId_ + commentId: Overload:Docfx.DataContracts.ManagedReference.LinkInfo.LinkId + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.LinkInfo.LinkId + nameWithType: LinkInfo.LinkId +- uid: Docfx.DataContracts.ManagedReference.LinkInfo.LinkType + name: LinkType + href: api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkType + commentId: P:Docfx.DataContracts.ManagedReference.LinkInfo.LinkType + fullName: Docfx.DataContracts.ManagedReference.LinkInfo.LinkType + nameWithType: LinkInfo.LinkType +- uid: Docfx.DataContracts.ManagedReference.LinkInfo.LinkType* + name: LinkType + href: api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkType_ + commentId: Overload:Docfx.DataContracts.ManagedReference.LinkInfo.LinkType + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.LinkInfo.LinkType + nameWithType: LinkInfo.LinkType +- uid: Docfx.DataContracts.ManagedReference.LinkType + name: LinkType + href: api/Docfx.DataContracts.ManagedReference.LinkType.html + commentId: T:Docfx.DataContracts.ManagedReference.LinkType + fullName: Docfx.DataContracts.ManagedReference.LinkType + nameWithType: LinkType +- uid: Docfx.DataContracts.ManagedReference.LinkType.CRef + name: CRef + href: api/Docfx.DataContracts.ManagedReference.LinkType.html#Docfx_DataContracts_ManagedReference_LinkType_CRef + commentId: F:Docfx.DataContracts.ManagedReference.LinkType.CRef + fullName: Docfx.DataContracts.ManagedReference.LinkType.CRef + nameWithType: LinkType.CRef +- uid: Docfx.DataContracts.ManagedReference.LinkType.HRef + name: HRef + href: api/Docfx.DataContracts.ManagedReference.LinkType.html#Docfx_DataContracts_ManagedReference_LinkType_HRef + commentId: F:Docfx.DataContracts.ManagedReference.LinkType.HRef + fullName: Docfx.DataContracts.ManagedReference.LinkType.HRef + nameWithType: LinkType.HRef +- uid: Docfx.DataContracts.ManagedReference.MemberType + name: MemberType + href: api/Docfx.DataContracts.ManagedReference.MemberType.html + commentId: T:Docfx.DataContracts.ManagedReference.MemberType + fullName: Docfx.DataContracts.ManagedReference.MemberType + nameWithType: MemberType +- uid: Docfx.DataContracts.ManagedReference.MemberType.Assembly + name: Assembly + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Assembly + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Assembly + fullName: Docfx.DataContracts.ManagedReference.MemberType.Assembly + nameWithType: MemberType.Assembly +- uid: Docfx.DataContracts.ManagedReference.MemberType.AttachedEvent + name: AttachedEvent + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_AttachedEvent + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.AttachedEvent + fullName: Docfx.DataContracts.ManagedReference.MemberType.AttachedEvent + nameWithType: MemberType.AttachedEvent +- uid: Docfx.DataContracts.ManagedReference.MemberType.AttachedProperty + name: AttachedProperty + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_AttachedProperty + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.AttachedProperty + fullName: Docfx.DataContracts.ManagedReference.MemberType.AttachedProperty + nameWithType: MemberType.AttachedProperty +- uid: Docfx.DataContracts.ManagedReference.MemberType.Class + name: Class + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Class + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Class + fullName: Docfx.DataContracts.ManagedReference.MemberType.Class + nameWithType: MemberType.Class +- uid: Docfx.DataContracts.ManagedReference.MemberType.Constructor + name: Constructor + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Constructor + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Constructor + fullName: Docfx.DataContracts.ManagedReference.MemberType.Constructor + nameWithType: MemberType.Constructor +- uid: Docfx.DataContracts.ManagedReference.MemberType.Container + name: Container + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Container + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Container + fullName: Docfx.DataContracts.ManagedReference.MemberType.Container + nameWithType: MemberType.Container +- uid: Docfx.DataContracts.ManagedReference.MemberType.Default + name: Default + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Default + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Default + fullName: Docfx.DataContracts.ManagedReference.MemberType.Default + nameWithType: MemberType.Default +- uid: Docfx.DataContracts.ManagedReference.MemberType.Delegate + name: Delegate + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Delegate + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Delegate + fullName: Docfx.DataContracts.ManagedReference.MemberType.Delegate + nameWithType: MemberType.Delegate +- uid: Docfx.DataContracts.ManagedReference.MemberType.Enum + name: Enum + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Enum + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Enum + fullName: Docfx.DataContracts.ManagedReference.MemberType.Enum + nameWithType: MemberType.Enum +- uid: Docfx.DataContracts.ManagedReference.MemberType.Event + name: Event + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Event + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Event + fullName: Docfx.DataContracts.ManagedReference.MemberType.Event + nameWithType: MemberType.Event +- uid: Docfx.DataContracts.ManagedReference.MemberType.Field + name: Field + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Field + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Field + fullName: Docfx.DataContracts.ManagedReference.MemberType.Field + nameWithType: MemberType.Field +- uid: Docfx.DataContracts.ManagedReference.MemberType.Interface + name: Interface + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Interface + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Interface + fullName: Docfx.DataContracts.ManagedReference.MemberType.Interface + nameWithType: MemberType.Interface +- uid: Docfx.DataContracts.ManagedReference.MemberType.Method + name: Method + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Method + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Method + fullName: Docfx.DataContracts.ManagedReference.MemberType.Method + nameWithType: MemberType.Method +- uid: Docfx.DataContracts.ManagedReference.MemberType.Namespace + name: Namespace + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Namespace + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Namespace + fullName: Docfx.DataContracts.ManagedReference.MemberType.Namespace + nameWithType: MemberType.Namespace +- uid: Docfx.DataContracts.ManagedReference.MemberType.Operator + name: Operator + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Operator + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Operator + fullName: Docfx.DataContracts.ManagedReference.MemberType.Operator + nameWithType: MemberType.Operator +- uid: Docfx.DataContracts.ManagedReference.MemberType.Property + name: Property + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Property + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Property + fullName: Docfx.DataContracts.ManagedReference.MemberType.Property + nameWithType: MemberType.Property +- uid: Docfx.DataContracts.ManagedReference.MemberType.Struct + name: Struct + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Struct + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Struct + fullName: Docfx.DataContracts.ManagedReference.MemberType.Struct + nameWithType: MemberType.Struct +- uid: Docfx.DataContracts.ManagedReference.MemberType.Toc + name: Toc + href: api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Toc + commentId: F:Docfx.DataContracts.ManagedReference.MemberType.Toc + fullName: Docfx.DataContracts.ManagedReference.MemberType.Toc + nameWithType: MemberType.Toc +- uid: Docfx.DataContracts.ManagedReference.NamedArgumentInfo + name: NamedArgumentInfo + href: api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html + commentId: T:Docfx.DataContracts.ManagedReference.NamedArgumentInfo + fullName: Docfx.DataContracts.ManagedReference.NamedArgumentInfo + nameWithType: NamedArgumentInfo +- uid: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name + name: Name + href: api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Name + commentId: P:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name + fullName: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name + nameWithType: NamedArgumentInfo.Name +- uid: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name* + name: Name + href: api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Name_ + commentId: Overload:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name + nameWithType: NamedArgumentInfo.Name +- uid: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type + name: Type + href: api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Type + commentId: P:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type + fullName: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type + nameWithType: NamedArgumentInfo.Type +- uid: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type* + name: Type + href: api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Type_ + commentId: Overload:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type + nameWithType: NamedArgumentInfo.Type +- uid: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value + name: Value + href: api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Value + commentId: P:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value + fullName: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value + nameWithType: NamedArgumentInfo.Value +- uid: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value* + name: Value + href: api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Value_ + commentId: Overload:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value + nameWithType: NamedArgumentInfo.Value +- uid: Docfx.DataContracts.ManagedReference.PageViewModel + name: PageViewModel + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html + commentId: T:Docfx.DataContracts.ManagedReference.PageViewModel + fullName: Docfx.DataContracts.ManagedReference.PageViewModel + nameWithType: PageViewModel +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.Items + name: Items + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Items + commentId: P:Docfx.DataContracts.ManagedReference.PageViewModel.Items + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.Items + nameWithType: PageViewModel.Items +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.Items* + name: Items + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Items_ + commentId: Overload:Docfx.DataContracts.ManagedReference.PageViewModel.Items + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.Items + nameWithType: PageViewModel.Items +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout + name: MemberLayout + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_MemberLayout + commentId: P:Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout + nameWithType: PageViewModel.MemberLayout +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout* + name: MemberLayout + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_MemberLayout_ + commentId: Overload:Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout + nameWithType: PageViewModel.MemberLayout +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.Metadata + name: Metadata + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Metadata + commentId: P:Docfx.DataContracts.ManagedReference.PageViewModel.Metadata + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.Metadata + nameWithType: PageViewModel.Metadata +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.Metadata* + name: Metadata + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Metadata_ + commentId: Overload:Docfx.DataContracts.ManagedReference.PageViewModel.Metadata + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.Metadata + nameWithType: PageViewModel.Metadata +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.References + name: References + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_References + commentId: P:Docfx.DataContracts.ManagedReference.PageViewModel.References + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.References + nameWithType: PageViewModel.References +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.References* + name: References + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_References_ + commentId: Overload:Docfx.DataContracts.ManagedReference.PageViewModel.References + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.References + nameWithType: PageViewModel.References +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup + name: ShouldSkipMarkup + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_ShouldSkipMarkup + commentId: P:Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup + nameWithType: PageViewModel.ShouldSkipMarkup +- uid: Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup* + name: ShouldSkipMarkup + href: api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_ShouldSkipMarkup_ + commentId: Overload:Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup + nameWithType: PageViewModel.ShouldSkipMarkup +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel + name: SyntaxDetailViewModel + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html + commentId: T:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel + nameWithType: SyntaxDetailViewModel +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content + name: Content + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Content + commentId: P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content + nameWithType: SyntaxDetailViewModel.Content +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content* + name: Content + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Content_ + commentId: Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content + nameWithType: SyntaxDetailViewModel.Content +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp + name: ContentForCSharp + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForCSharp + commentId: P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp + nameWithType: SyntaxDetailViewModel.ContentForCSharp +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp* + name: ContentForCSharp + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForCSharp_ + commentId: Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp + nameWithType: SyntaxDetailViewModel.ContentForCSharp +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB + name: ContentForVB + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForVB + commentId: P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB + nameWithType: SyntaxDetailViewModel.ContentForVB +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB* + name: ContentForVB + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForVB_ + commentId: Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB + nameWithType: SyntaxDetailViewModel.ContentForVB +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents + name: Contents + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Contents + commentId: P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents + nameWithType: SyntaxDetailViewModel.Contents +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents* + name: Contents + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Contents_ + commentId: Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents + nameWithType: SyntaxDetailViewModel.Contents +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters + name: Parameters + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Parameters + commentId: P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters + nameWithType: SyntaxDetailViewModel.Parameters +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters* + name: Parameters + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Parameters_ + commentId: Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters + nameWithType: SyntaxDetailViewModel.Parameters +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return + name: Return + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Return + commentId: P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return + nameWithType: SyntaxDetailViewModel.Return +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return* + name: Return + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Return_ + commentId: Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return + nameWithType: SyntaxDetailViewModel.Return +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters + name: TypeParameters + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_TypeParameters + commentId: P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters + nameWithType: SyntaxDetailViewModel.TypeParameters +- uid: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters* + name: TypeParameters + href: api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_TypeParameters_ + commentId: Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters + isSpec: 'True' + fullName: Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters + nameWithType: SyntaxDetailViewModel.TypeParameters +- uid: Docfx.DataContracts.ManagedReference.SyntaxLanguage + name: SyntaxLanguage + href: api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html + commentId: T:Docfx.DataContracts.ManagedReference.SyntaxLanguage + fullName: Docfx.DataContracts.ManagedReference.SyntaxLanguage + nameWithType: SyntaxLanguage +- uid: Docfx.DataContracts.ManagedReference.SyntaxLanguage.CSharp + name: CSharp + href: api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html#Docfx_DataContracts_ManagedReference_SyntaxLanguage_CSharp + commentId: F:Docfx.DataContracts.ManagedReference.SyntaxLanguage.CSharp + fullName: Docfx.DataContracts.ManagedReference.SyntaxLanguage.CSharp + nameWithType: SyntaxLanguage.CSharp +- uid: Docfx.DataContracts.ManagedReference.SyntaxLanguage.Default + name: Default + href: api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html#Docfx_DataContracts_ManagedReference_SyntaxLanguage_Default + commentId: F:Docfx.DataContracts.ManagedReference.SyntaxLanguage.Default + fullName: Docfx.DataContracts.ManagedReference.SyntaxLanguage.Default + nameWithType: SyntaxLanguage.Default +- uid: Docfx.DataContracts.ManagedReference.SyntaxLanguage.VB + name: VB + href: api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html#Docfx_DataContracts_ManagedReference_SyntaxLanguage_VB + commentId: F:Docfx.DataContracts.ManagedReference.SyntaxLanguage.VB + fullName: Docfx.DataContracts.ManagedReference.SyntaxLanguage.VB + nameWithType: SyntaxLanguage.VB +- uid: Docfx.Docset + name: Docset + href: api/Docfx.Docset.html + commentId: T:Docfx.Docset + fullName: Docfx.Docset + nameWithType: Docset +- uid: Docfx.Docset.Build(System.String) + name: Build(string) + href: api/Docfx.Docset.html#Docfx_Docset_Build_System_String_ + commentId: M:Docfx.Docset.Build(System.String) + name.vb: Build(String) + fullName: Docfx.Docset.Build(string) + fullName.vb: Docfx.Docset.Build(String) + nameWithType: Docset.Build(string) + nameWithType.vb: Docset.Build(String) +- uid: Docfx.Docset.Build(System.String,Docfx.BuildOptions) + name: Build(string, BuildOptions) + href: api/Docfx.Docset.html#Docfx_Docset_Build_System_String_Docfx_BuildOptions_ + commentId: M:Docfx.Docset.Build(System.String,Docfx.BuildOptions) + name.vb: Build(String, BuildOptions) + fullName: Docfx.Docset.Build(string, Docfx.BuildOptions) + fullName.vb: Docfx.Docset.Build(String, Docfx.BuildOptions) + nameWithType: Docset.Build(string, BuildOptions) + nameWithType.vb: Docset.Build(String, BuildOptions) +- uid: Docfx.Docset.Build* + name: Build + href: api/Docfx.Docset.html#Docfx_Docset_Build_ + commentId: Overload:Docfx.Docset.Build + isSpec: 'True' + fullName: Docfx.Docset.Build + nameWithType: Docset.Build +- uid: Docfx.Docset.Pdf(System.String) + name: Pdf(string) + href: api/Docfx.Docset.html#Docfx_Docset_Pdf_System_String_ + commentId: M:Docfx.Docset.Pdf(System.String) + name.vb: Pdf(String) + fullName: Docfx.Docset.Pdf(string) + fullName.vb: Docfx.Docset.Pdf(String) + nameWithType: Docset.Pdf(string) + nameWithType.vb: Docset.Pdf(String) +- uid: Docfx.Docset.Pdf(System.String,Docfx.BuildOptions) + name: Pdf(string, BuildOptions) + href: api/Docfx.Docset.html#Docfx_Docset_Pdf_System_String_Docfx_BuildOptions_ + commentId: M:Docfx.Docset.Pdf(System.String,Docfx.BuildOptions) + name.vb: Pdf(String, BuildOptions) + fullName: Docfx.Docset.Pdf(string, Docfx.BuildOptions) + fullName.vb: Docfx.Docset.Pdf(String, Docfx.BuildOptions) + nameWithType: Docset.Pdf(string, BuildOptions) + nameWithType.vb: Docset.Pdf(String, BuildOptions) +- uid: Docfx.Docset.Pdf* + name: Pdf + href: api/Docfx.Docset.html#Docfx_Docset_Pdf_ + commentId: Overload:Docfx.Docset.Pdf + isSpec: 'True' + fullName: Docfx.Docset.Pdf + nameWithType: Docset.Pdf +- uid: Docfx.Dotnet + name: Docfx.Dotnet + href: api/Docfx.Dotnet.html + commentId: N:Docfx.Dotnet + fullName: Docfx.Dotnet + nameWithType: Docfx.Dotnet +- uid: Docfx.Dotnet.DotnetApiCatalog + name: DotnetApiCatalog + href: api/Docfx.Dotnet.DotnetApiCatalog.html + commentId: T:Docfx.Dotnet.DotnetApiCatalog + fullName: Docfx.Dotnet.DotnetApiCatalog + nameWithType: DotnetApiCatalog +- uid: Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String) + name: GenerateManagedReferenceYamlFiles(string) + href: api/Docfx.Dotnet.DotnetApiCatalog.html#Docfx_Dotnet_DotnetApiCatalog_GenerateManagedReferenceYamlFiles_System_String_ + commentId: M:Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String) + name.vb: GenerateManagedReferenceYamlFiles(String) + fullName: Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string) + fullName.vb: Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String) + nameWithType: DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string) + nameWithType.vb: DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String) +- uid: Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String,Docfx.Dotnet.DotnetApiOptions) + name: GenerateManagedReferenceYamlFiles(string, DotnetApiOptions) + href: api/Docfx.Dotnet.DotnetApiCatalog.html#Docfx_Dotnet_DotnetApiCatalog_GenerateManagedReferenceYamlFiles_System_String_Docfx_Dotnet_DotnetApiOptions_ + commentId: M:Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String,Docfx.Dotnet.DotnetApiOptions) + name.vb: GenerateManagedReferenceYamlFiles(String, DotnetApiOptions) + fullName: Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string, + Docfx.Dotnet.DotnetApiOptions) + fullName.vb: Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String, + Docfx.Dotnet.DotnetApiOptions) + nameWithType: DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string, DotnetApiOptions) + nameWithType.vb: DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String, DotnetApiOptions) +- uid: Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles* + name: GenerateManagedReferenceYamlFiles + href: api/Docfx.Dotnet.DotnetApiCatalog.html#Docfx_Dotnet_DotnetApiCatalog_GenerateManagedReferenceYamlFiles_ + commentId: Overload:Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles + isSpec: 'True' + fullName: Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles + nameWithType: DotnetApiCatalog.GenerateManagedReferenceYamlFiles +- uid: Docfx.Dotnet.DotnetApiOptions + name: DotnetApiOptions + href: api/Docfx.Dotnet.DotnetApiOptions.html + commentId: T:Docfx.Dotnet.DotnetApiOptions + fullName: Docfx.Dotnet.DotnetApiOptions + nameWithType: DotnetApiOptions +- uid: Docfx.Dotnet.DotnetApiOptions.IncludeApi + name: IncludeApi + href: api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeApi + commentId: P:Docfx.Dotnet.DotnetApiOptions.IncludeApi + fullName: Docfx.Dotnet.DotnetApiOptions.IncludeApi + nameWithType: DotnetApiOptions.IncludeApi +- uid: Docfx.Dotnet.DotnetApiOptions.IncludeApi* + name: IncludeApi + href: api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeApi_ + commentId: Overload:Docfx.Dotnet.DotnetApiOptions.IncludeApi + isSpec: 'True' + fullName: Docfx.Dotnet.DotnetApiOptions.IncludeApi + nameWithType: DotnetApiOptions.IncludeApi +- uid: Docfx.Dotnet.DotnetApiOptions.IncludeAttribute + name: IncludeAttribute + href: api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeAttribute + commentId: P:Docfx.Dotnet.DotnetApiOptions.IncludeAttribute + fullName: Docfx.Dotnet.DotnetApiOptions.IncludeAttribute + nameWithType: DotnetApiOptions.IncludeAttribute +- uid: Docfx.Dotnet.DotnetApiOptions.IncludeAttribute* + name: IncludeAttribute + href: api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeAttribute_ + commentId: Overload:Docfx.Dotnet.DotnetApiOptions.IncludeAttribute + isSpec: 'True' + fullName: Docfx.Dotnet.DotnetApiOptions.IncludeAttribute + nameWithType: DotnetApiOptions.IncludeAttribute +- uid: Docfx.Dotnet.DotnetApiOptions.SourceUrl + name: SourceUrl + href: api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_SourceUrl + commentId: P:Docfx.Dotnet.DotnetApiOptions.SourceUrl + fullName: Docfx.Dotnet.DotnetApiOptions.SourceUrl + nameWithType: DotnetApiOptions.SourceUrl +- uid: Docfx.Dotnet.DotnetApiOptions.SourceUrl* + name: SourceUrl + href: api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_SourceUrl_ + commentId: Overload:Docfx.Dotnet.DotnetApiOptions.SourceUrl + isSpec: 'True' + fullName: Docfx.Dotnet.DotnetApiOptions.SourceUrl + nameWithType: DotnetApiOptions.SourceUrl +- uid: Docfx.Dotnet.SymbolIncludeState + name: SymbolIncludeState + href: api/Docfx.Dotnet.SymbolIncludeState.html + commentId: T:Docfx.Dotnet.SymbolIncludeState + fullName: Docfx.Dotnet.SymbolIncludeState + nameWithType: SymbolIncludeState +- uid: Docfx.Dotnet.SymbolIncludeState.Default + name: Default + href: api/Docfx.Dotnet.SymbolIncludeState.html#Docfx_Dotnet_SymbolIncludeState_Default + commentId: F:Docfx.Dotnet.SymbolIncludeState.Default + fullName: Docfx.Dotnet.SymbolIncludeState.Default + nameWithType: SymbolIncludeState.Default +- uid: Docfx.Dotnet.SymbolIncludeState.Exclude + name: Exclude + href: api/Docfx.Dotnet.SymbolIncludeState.html#Docfx_Dotnet_SymbolIncludeState_Exclude + commentId: F:Docfx.Dotnet.SymbolIncludeState.Exclude + fullName: Docfx.Dotnet.SymbolIncludeState.Exclude + nameWithType: SymbolIncludeState.Exclude +- uid: Docfx.Dotnet.SymbolIncludeState.Include + name: Include + href: api/Docfx.Dotnet.SymbolIncludeState.html#Docfx_Dotnet_SymbolIncludeState_Include + commentId: F:Docfx.Dotnet.SymbolIncludeState.Include + fullName: Docfx.Dotnet.SymbolIncludeState.Include + nameWithType: SymbolIncludeState.Include +- uid: Docfx.MemberLayout + name: MemberLayout + href: api/Docfx.MemberLayout.html + commentId: T:Docfx.MemberLayout + fullName: Docfx.MemberLayout + nameWithType: MemberLayout +- uid: Docfx.MemberLayout.SamePage + name: SamePage + href: api/Docfx.MemberLayout.html#Docfx_MemberLayout_SamePage + commentId: F:Docfx.MemberLayout.SamePage + fullName: Docfx.MemberLayout.SamePage + nameWithType: MemberLayout.SamePage +- uid: Docfx.MemberLayout.SeparatePages + name: SeparatePages + href: api/Docfx.MemberLayout.html#Docfx_MemberLayout_SeparatePages + commentId: F:Docfx.MemberLayout.SeparatePages + fullName: Docfx.MemberLayout.SeparatePages + nameWithType: MemberLayout.SeparatePages diff --git a/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_03.yml b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_03.yml new file mode 100644 index 00000000000..c5ac199d2e9 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_03.yml @@ -0,0 +1,125 @@ +### YamlMime:TableOfContent +items: +- uid: CSharp10 + name: CSharp10 + type: Namespace + items: + - uid: CSharp10.ConstantInterpolatedStrings + name: ConstantInterpolatedStrings + type: Class + - uid: CSharp10.Issue7737 + name: Issue7737 + type: Class + - uid: CSharp10.ParameterlessStructConstructors + name: ParameterlessStructConstructors + type: Struct + - uid: CSharp10.ReadOnlyRecordStruct + name: ReadOnlyRecordStruct + type: Struct + - uid: CSharp10.RecordClass + name: RecordClass + type: Class + - uid: CSharp10.RecordStruct + name: RecordStruct + type: Struct +- uid: CSharp11 + name: CSharp11 + type: Namespace + items: + - uid: CSharp11.CheckedUserDefinedOperators`1 + name: CheckedUserDefinedOperators<T> + type: Interface + - uid: CSharp11.RequiredModifier + name: RequiredModifier + type: Class + - uid: CSharp11.ScopedModifier + name: ScopedModifier + type: Class + - uid: CSharp11.StaticAbstractMembersInInterfaces + name: StaticAbstractMembersInInterfaces + type: Class + - uid: CSharp11.StaticAbstractMembersInInterfaces.IGetNext`1 + name: StaticAbstractMembersInInterfaces.IGetNext<T> + type: Interface + - uid: CSharp11.StaticAbstractMembersInInterfaces.RepeatSequence + name: StaticAbstractMembersInInterfaces.RepeatSequence + type: Struct +- uid: CSharp12 + name: CSharp12 + type: Namespace + items: + - uid: CSharp12.CollectionExpressions + name: CollectionExpressions + type: Class + - uid: CSharp12.DefaultLambdaParameters + name: DefaultLambdaParameters + type: Class + - uid: CSharp12.InlineArrays + name: InlineArrays + type: Struct + - uid: CSharp12.PrimaryConstructors + name: PrimaryConstructors + type: Class + - uid: CSharp12.PrimaryConstructors.BankAccount + name: PrimaryConstructors.BankAccount + type: Class + - uid: CSharp12.PrimaryConstructors.CheckAccount + name: PrimaryConstructors.CheckAccount + type: Class + - uid: CSharp12.PrimaryConstructors.Distance + name: PrimaryConstructors.Distance + type: Struct + - uid: CSharp12.RefReadOnlyParameters + name: RefReadOnlyParameters + type: Class +- uid: CSharp8 + name: CSharp8 + type: Namespace + items: + - uid: CSharp8.DefaultInterfaceMembers + name: DefaultInterfaceMembers + type: Interface + - uid: CSharp8.DefaultInterfaceMembers.IA + name: DefaultInterfaceMembers.IA + type: Interface + - uid: CSharp8.DefaultInterfaceMembers.Nested + name: DefaultInterfaceMembers.Nested + type: Class + - uid: CSharp8.DisposableRefStructs + name: DisposableRefStructs + type: Struct + - uid: CSharp8.Issue4007 + name: Issue4007 + type: Class + - uid: CSharp8.Misc + name: Misc + type: Class + - uid: CSharp8.NullableReferenceTypes + name: NullableReferenceTypes + type: Class + - uid: CSharp8.ReadOnlyMembers + name: ReadOnlyMembers + type: Struct +- uid: CSharp9 + name: CSharp9 + type: Namespace + items: + - uid: CSharp9.FunctionPointers + name: FunctionPointers + type: Class + - uid: CSharp9.InitOnlySetters + name: InitOnlySetters + type: Class + - uid: CSharp9.NativeSizedIntegers + name: NativeSizedIntegers + type: Class + - uid: CSharp9.RecordTypes + name: RecordTypes + type: Class + - uid: CSharp9.RecordTypes.Person + name: RecordTypes.Person + type: Class + - uid: CSharp9.RecordTypes.Teacher + name: RecordTypes.Teacher + type: Class +memberLayout: SamePage diff --git a/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_04.yml b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_04.yml new file mode 100644 index 00000000000..d2deaadcfa7 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/TocItemViewModel/Yaml/toc_04.yml @@ -0,0 +1,175 @@ +### YamlMime:TableOfContent +items: +- uid: BuildFromAssembly + name: BuildFromAssembly + type: Namespace + items: + - uid: BuildFromAssembly.Class1 + name: Class1 + type: Class + - uid: BuildFromAssembly.Issue5432 + name: Issue5432 + type: Struct +- uid: BuildFromCSharpSourceCode + name: BuildFromCSharpSourceCode + type: Namespace + items: + - uid: BuildFromCSharpSourceCode.CSharp + name: CSharp + type: Class +- uid: BuildFromProject + name: BuildFromProject + type: Namespace + items: + - uid: BuildFromProject.Issue8540 + name: Issue8540 + type: Namespace + items: + - uid: BuildFromProject.Issue8540.A + name: A + type: Namespace + items: + - uid: BuildFromProject.Issue8540.A.A + name: A + type: Class + - uid: BuildFromProject.Issue8540.B + name: B + type: Namespace + items: + - uid: BuildFromProject.Issue8540.B.B + name: B + type: Class + - uid: BuildFromProject.Class1 + name: Class1 + type: Class + - uid: BuildFromProject.Class1.IIssue8948 + name: Class1.IIssue8948 + type: Interface + - uid: BuildFromProject.Class1.Issue8665 + name: Class1.Issue8665 + type: Class + - uid: BuildFromProject.Class1.Issue8696Attribute + name: Class1.Issue8696Attribute + type: Class + - uid: BuildFromProject.Class1.Issue8948 + name: Class1.Issue8948 + type: Class + - uid: BuildFromProject.Class1.Issue9260 + name: Class1.Issue9260 + type: Enum + - uid: BuildFromProject.Class1.Test`1 + name: Class1.Test<T> + type: Class + - uid: BuildFromProject.Dog + name: Dog + type: Class + - uid: BuildFromProject.IInheritdoc + name: IInheritdoc + type: Interface + - uid: BuildFromProject.Inheritdoc + name: Inheritdoc + type: Class + - uid: BuildFromProject.Inheritdoc.Issue6366 + name: Inheritdoc.Issue6366 + type: Class + - uid: BuildFromProject.Inheritdoc.Issue6366.Class1`1 + name: Inheritdoc.Issue6366.Class1<T> + type: Class + - uid: BuildFromProject.Inheritdoc.Issue6366.Class2 + name: Inheritdoc.Issue6366.Class2 + type: Class + - uid: BuildFromProject.Inheritdoc.Issue7035 + name: Inheritdoc.Issue7035 + type: Class + - uid: BuildFromProject.Inheritdoc.Issue7484 + name: Inheritdoc.Issue7484 + type: Class + - uid: BuildFromProject.Inheritdoc.Issue8101 + name: Inheritdoc.Issue8101 + type: Class + - uid: BuildFromProject.Inheritdoc.Issue8129 + name: Inheritdoc.Issue8129 + type: Struct + - uid: BuildFromProject.Issue8725 + name: Issue8725 + type: Class +- uid: BuildFromVBSourceCode + name: BuildFromVBSourceCode + type: Namespace + items: + - uid: BuildFromVBSourceCode.BaseClass1 + name: BaseClass1 + type: Class + - uid: BuildFromVBSourceCode.Class1 + name: Class1 + type: Class +- uid: CatLibrary + name: CatLibrary + type: Namespace + items: + - uid: CatLibrary.Core + name: Core + type: Namespace + items: + - uid: CatLibrary.Core.ContainersRefType + name: ContainersRefType + type: Struct + - uid: CatLibrary.Core.ContainersRefType.ColorType + name: ContainersRefType.ColorType + type: Enum + - uid: CatLibrary.Core.ContainersRefType.ContainersRefTypeChild + name: ContainersRefType.ContainersRefTypeChild + type: Class + - uid: CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface + name: ContainersRefType.ContainersRefTypeChildInterface + type: Interface + - uid: CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate + name: ContainersRefType.ContainersRefTypeDelegate + type: Delegate + - uid: CatLibrary.Core.ExplicitLayoutClass + name: ExplicitLayoutClass + type: Class + - uid: CatLibrary.Core.Issue231 + name: Issue231 + type: Class + - uid: CatLibrary.CatException`1 + name: CatException<T> + type: Class + - uid: CatLibrary.Cat`2 + name: Cat<T, K> + type: Class + - uid: CatLibrary.Complex`2 + name: Complex<T, J> + type: Class + - uid: CatLibrary.FakeDelegate`1 + name: FakeDelegate<T> + type: Delegate + - uid: CatLibrary.IAnimal + name: IAnimal + type: Interface + - uid: CatLibrary.ICat + name: ICat + type: Interface + - uid: CatLibrary.ICatExtension + name: ICatExtension + type: Class + - uid: CatLibrary.MRefDelegate`3 + name: MRefDelegate<K, T, L> + type: Delegate + - uid: CatLibrary.MRefNormalDelegate + name: MRefNormalDelegate + type: Delegate + - uid: CatLibrary.Tom + name: Tom + type: Class + - uid: CatLibrary.TomFromBaseClass + name: TomFromBaseClass + type: Class +- uid: MRef.Demo.Enumeration + name: MRef.Demo.Enumeration + type: Namespace + items: + - uid: MRef.Demo.Enumeration.ColorType + name: ColorType + type: Enum +memberLayout: SamePage diff --git a/test/docfx.Tests/SerializationTests/TestData/UniversalReference/azure.ApplicationTokenCredentials.yml b/test/docfx.Tests/SerializationTests/TestData/UniversalReference/azure.ApplicationTokenCredentials.yml new file mode 100644 index 00000000000..7fd036df470 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/UniversalReference/azure.ApplicationTokenCredentials.yml @@ -0,0 +1,87 @@ +### YamlMime:UniversalReference +items: + - uid: azure.ApplicationTokenCredentials + langs: + - js + id: azure.ApplicationTokenCredentials + name: ApplicationTokenCredentials + summary: '' + fullName: azure.ApplicationTokenCredentials + type: Class + children: + - 'azure.ApplicationTokenCredentials.#ctor' + - id: 'azure.ApplicationTokenCredentials.#ctor' + uid: 'azure.ApplicationTokenCredentials.#ctor' + parent: azure.ApplicationTokenCredentials + name: 'ApplicationTokenCredentials(clientId, domain, secret, options)' + fullName: >- + azure.ApplicationTokenCredentials.ApplicationTokenCredentials(clientId, + domain, secret, options) + summary: >- + Creates a new ApplicationTokenCredentials object. + + See [Active Directory Quickstart for + .Net](https://azure.microsoft.com/en-us/documentation/articles/active-directory-devquickstarts-dotnet/) + + for detailed instructions on creating an Azure Active Directory + application. + type: Constructor + syntax: + parameters: + - id: clientId + type: + - string + description: The active directory application client id. + - id: domain + type: + - string + description: The domain or tenant id containing this application. + - id: secret + type: + - string + description: The authentication secret for the application. + - id: options + type: + - object + description: Object representing optional parameters. + optional: true + - id: options.tokenAudience + type: + - string + description: >- + The audience for which the token is requested. Valid value is + 'graph'. If tokenAudience is provided + + then domain should also be provided its value should not be the + default 'common' tenant. It must be a string (preferrably in a guid + format). + optional: true + - id: options.environment + type: + - azure.AzureEnvironment + description: The azure environment to authenticate with. + optional: true + - id: options.authorizationScheme + type: + - string + description: The authorization scheme. Default value is 'bearer'. + optional: true + - id: options.tokenCache + type: + - object + description: The token cache. Default value is the MemoryCache object from adal. + optional: true + content: 'new ApplicationTokenCredentials(clientId, domain, secret, options)' +references: + - uid: string + name: string + fullName: string + isExternal: true + - uid: object + name: object + fullName: object + isExternal: true + - uid: azure.AzureEnvironment + name: AzureEnvironment + fullName: azure.AzureEnvironment + isExternal: true diff --git a/test/docfx.Tests/SerializationTests/TestData/UniversalReference/cntk.core.Value.yml b/test/docfx.Tests/SerializationTests/TestData/UniversalReference/cntk.core.Value.yml new file mode 100644 index 00000000000..10b1d48aaf1 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/UniversalReference/cntk.core.Value.yml @@ -0,0 +1,260 @@ +#YamlMime:UniversalReference +api_name: [] +items: +- _type: class + children: + - cntk.core.Value.create + - cntk.core.Value.data + - cntk.core.Value.mask + - cntk.core.Value.one_hot + - cntk.core.Value.shape + class: cntk.core.Value + fullName: cntk.core.Value + inheritance: + - inheritance: + - type: builtins.object + type: cntk.cntk_py.Value + langs: + - python + module: cntk.core + name: Value + source: + id: Value + path: cntk/core.py + remote: + branch: master + path: cntk/core.py + repo: https://github.com/Microsoft/CNTK + startLine: 182 + summary: 'Bases: @cntk.cntk_py.Value + + Internal representation of minibatch data. + + + + + + ' + syntax: + parameters: + - description: shape of the value + id: shape + type: + - tuple + - description: the value to be converted + id: value + type: + - None or value that can be cast to NumPy array + - description: data type (np.float32 or np.float64) + id: dtype + - description: "batch input for *var*. It can be:\n\n * a pure Python structure\ + \ (list of lists, ...),\n\n * a list of NumPy arrays or SciPy sparse CSR\ + \ matrices\n\n * a @cntk.core.Value object (e.g. returned by `one_hot()`)" + id: batch + - description: if None, every sequence is treated as a new sequence. Otherwise, + it is interpreted as a list of Booleans that tell whether a sequence is a + new sequence (*True*) or a continuation of the sequence in the same slot of + the previous minibatch (*False*) + id: seq_starts + type: + - list of bools or None + - description: device this value should be put on + id: device + type: + - DeviceDescriptor + type: Class + uid: cntk.core.Value +- _type: method + class: cntk.core.Value + fullName: cntk.core.Value.create + langs: + - python + module: cntk.core + name: create + source: + id: create + path: cntk/internal/swig_helper.py + remote: + branch: master + path: cntk/internal/swig_helper.py + repo: https://github.com/Microsoft/CNTK + startLine: 272 + summary: Creates a @cntk.core.Value object. + syntax: + parameters: + - description: variable into which `data` is passed + id: var + type: + - Variable + - description: "data for *var*. It can be:\n\n * a single NumPy array denoting\ + \ the full minibatch\n\n * a list of NumPy arrays or SciPy sparse CSR matrices\n\ + \n * a single NumPy array denoting one parameter or constant" + id: data + - description: if None, every sequence is treated as a new sequence. Otherwise, + it is interpreted as a list of Booleans that tell whether a sequence is a + new sequence (*True*) or a continuation of the sequence in the same slot of + the previous minibatch (*False*) + id: seq_starts + type: + - list of bools or None + - description: device this value should be put on + id: device + type: + - DeviceDescriptor, default None + - description: whether the data is read only + id: read_only + type: + - bool, default False + return: + type: + - type1 + - type2 + - type3 + description: '@cntk.core.Value object.' + type: Method + uid: cntk.core.Value.create +- _type: attribute + class: cntk.core.Value + fullName: cntk.core.Value.data + langs: + - python + module: cntk.core + name: data + source: + id: data + path: null + remote: + branch: master + path: null + repo: https://github.com/Microsoft/CNTK + startLine: null + summary: Retrieves the underlying `NDArrayView` instance. + syntax: {} + type: Property + uid: cntk.core.Value.data +- _type: attribute + class: cntk.core.Value + fullName: cntk.core.Value.mask + langs: + - python + module: cntk.core + name: mask + source: + id: mask + path: null + remote: + branch: master + path: null + repo: https://github.com/Microsoft/CNTK + startLine: null + summary: "The mask matrix of this value. Each row denotes a sequence with its elements\ + \ describing the mask of the element:\n* 2: beginning of sequence (e.g. an LSTM\ + \ would be reset)\n\n * 1: valid element\n\n * 0: invalid element\n-[ Example\ + \ ]-\nA mask of `[[2, 1, 1], [1, 1, 0]]` describes a batch of two sequences. The\ + \ first has three elements, of which the first element (2) signals the beginning\ + \ of a sequence. The second sequence has two elements (last element marked 'invalid'\ + \ by '0'). As it starts with (1), it is a continuation of the 2nd sequence in\ + \ the previous minibatch." + syntax: {} + type: Property + uid: cntk.core.Value.mask +- _type: method + class: cntk.core.Value + fullName: cntk.core.Value.one_hot + langs: + - python + module: cntk.core + name: one_hot + source: + id: one_hot + path: cntk/internal/swig_helper.py + remote: + branch: master + path: cntk/internal/swig_helper.py + repo: https://github.com/Microsoft/CNTK + startLine: 365 + summary: "Converts `batch` into a `Value` object of `dtype` such that the integer\ + \ data in `batch` is interpreted as the indices representing one-hot vectors.\n\ + -[ Example ]-\n>>> num_classes = 6\n>>> sparse_indices = [[1,5],[4]]\n>>> i0 =\ + \ C.input_variable(shape=num_classes, is_sparse=True)\n>>> z = C.times(i0, np.eye(num_classes))\n\ + >>> value = C.one_hot(sparse_indices, num_classes)\n>>> z.eval({i0: value})\n\ + [array([[ 0., 1., 0., 0., 0., 0.],\n [ 0., 0., 0., 0., 0., 1.]],\ + \ dtype=float32),\n array([[ 0., 0., 0., 0., 1., 0.]], dtype=float32)]\n\ + <BLANKLINE>\n>>> num_classes = 6\n>>> sample_shape = (2, num_classes)\n>>> sparse_indices\ + \ = [[1,5,3,2],[4,1]]\n>>> i0 = C.input_variable(shape=sample_shape, is_sparse=True)\n\ + >>> z = C.times(i0, np.eye(num_classes))\n>>> value = C.one_hot(sparse_indices,\ + \ sample_shape)\n>>> z.eval({i0: value})\n[array([[[ 0., 1., 0., 0., 0., \ + \ 0.],\n [ 0., 0., 0., 0., 0., 1.]],\n [[ 0., 0., 0., 1.,\ + \ 0., 0.],\n [ 0., 0., 1., 0., 0., 0.]]], dtype=float32),\n array([[[\ + \ 0., 0., 0., 0., 1., 0.],\n [ 0., 1., 0., 0., 0., 0.]]], dtype=float32)]" + syntax: + parameters: + - description: batch input data of indices + id: batch + type: + - list of lists of integers + - description: number of classes or shape of each sample whose trailing axis is + one_hot + id: sample_shape + type: + - integer or tuple + - description: data type + id: dtype + type: + - np.float32, np.float64, default None + - description: device this value should be put on + id: device + type: + - DeviceDescriptor, default None + return: + description: '`batch` converted into a `Value` object that can be passed to + the forward or eval function.' + type: Method + uid: cntk.core.Value.one_hot +- _type: attribute + class: cntk.core.Value + fullName: cntk.core.Value.shape + langs: + - python + module: cntk.core + name: shape + source: + id: shape + path: null + remote: + branch: master + path: null + repo: https://github.com/Microsoft/CNTK + startLine: null + summary: The rectangular shape of this value. I.e., if this value has sequences + of varying lengths, the shape will have the max sequence length in the sequence + dimension. + syntax: {} + type: Property + uid: cntk.core.Value.shape +references: +- fullName: cntk.core.Value.create + isExternal: false + name: create + parent: cntk.core.Value + uid: cntk.core.Value.create +- fullName: cntk.core.Value.data + isExternal: false + name: data + parent: cntk.core.Value + uid: cntk.core.Value.data +- fullName: cntk.core.Value.mask + isExternal: false + name: mask + parent: cntk.core.Value + uid: cntk.core.Value.mask +- fullName: cntk.core.Value.one_hot + isExternal: false + name: one_hot + parent: cntk.core.Value + uid: cntk.core.Value.one_hot +- fullName: cntk.core.Value.shape + isExternal: false + name: shape + parent: cntk.core.Value + uid: cntk.core.Value.shape diff --git a/test/docfx.Tests/SerializationTests/TestData/UniversalReference/cntk.core.yml b/test/docfx.Tests/SerializationTests/TestData/UniversalReference/cntk.core.yml new file mode 100644 index 00000000000..ac5dfe9102b --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/UniversalReference/cntk.core.yml @@ -0,0 +1,51 @@ +#YamlMime:UniversalReference +api_name: [] +items: +- _type: module + children: + - cntk.core.NDArrayView + - cntk.core.Value + - cntk.core.asarray + - cntk.core.asvalue + - cntk.core.user_function + fullName: cntk.core + langs: + - python + module: cntk.core + name: core + source: + id: core + path: \cntk\core.py + remote: + branch: master + path: \cntk\core.py + repo: https://github.com/Microsoft/CNTK.git + startLine: 0 + type: Namespace + uid: cntk.core +references: +- fullName: cntk.core.NDArrayView + isExternal: false + name: NDArrayView + parent: cntk.core + uid: cntk.core.NDArrayView +- fullName: cntk.core.Value + isExternal: false + name: Value + parent: cntk.core + uid: cntk.core.Value +- fullName: cntk.core.asarray + isExternal: false + name: asarray + parent: cntk.core + uid: cntk.core.asarray +- fullName: cntk.core.asvalue + isExternal: false + name: asvalue + parent: cntk.core + uid: cntk.core.asvalue +- fullName: cntk.core.user_function + isExternal: false + name: user_function + parent: cntk.core + uid: cntk.core.user_function \ No newline at end of file diff --git a/test/docfx.Tests/SerializationTests/TestData/UniversalReference/cntk.debugging.yml b/test/docfx.Tests/SerializationTests/TestData/UniversalReference/cntk.debugging.yml new file mode 100644 index 00000000000..4c67c40aae1 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/UniversalReference/cntk.debugging.yml @@ -0,0 +1,76 @@ +#YamlMime:UniversalReference +api_name: [] +items: +- _type: module + children: + - cntk.debugging.dump_function + - cntk.debugging.dump_signature + fullName: cntk.debugging + langs: + - python + module: cntk.debugging + name: debugging + source: + id: debugging + path: cntk/debugging/__init__.py + remote: + branch: master + path: cntk/debugging/__init__.py + repo: https://github.com/Microsoft/CNTK + startLine: 0 + type: Namespace + uid: cntk.debugging +- _type: function + fullName: cntk.debugging.dump_function + langs: + - python + module: cntk.debugging + name: dump_function + source: + id: dump_function + path: cntk/debugging/__init__.py + remote: + branch: master + path: cntk/debugging/__init__.py + repo: https://github.com/Microsoft/CNTK + startLine: 33 + syntax: + parameters: + - id: root + - defaultValue: None + id: tag + type: Method + uid: cntk.debugging.dump_function +- _type: function + fullName: cntk.debugging.dump_signature + langs: + - python + module: cntk.debugging + name: dump_signature + source: + id: dump_signature + path: cntk/debugging/__init__.py + remote: + branch: master + path: cntk/debugging/__init__.py + repo: https://github.com/Microsoft/CNTK + startLine: 17 + summary: Debug helper that prints the signature of a Function. + syntax: + parameters: + - id: root + - defaultValue: None + id: tag + type: Method + uid: cntk.debugging.dump_signature +references: +- fullName: cntk.debugging.dump_function + isExternal: false + name: dump_function + parent: cntk.debugging + uid: cntk.debugging.dump_function +- fullName: cntk.debugging.dump_signature + isExternal: false + name: dump_signature + parent: cntk.debugging + uid: cntk.debugging.dump_signature diff --git a/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_01.json b/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_01.json new file mode 100644 index 00000000000..7c37af9c875 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_01.json @@ -0,0 +1,1926 @@ +{ + "sorted": true, + "references": [ + { + "uid": "Docfx", + "name": "Docfx", + "href": "api/Docfx.html", + "commentId": "N:Docfx", + "fullName": "Docfx", + "nameWithType": "Docfx" + }, + { + "uid": "Docfx.BuildOptions", + "name": "BuildOptions", + "href": "api/Docfx.BuildOptions.html", + "commentId": "T:Docfx.BuildOptions", + "fullName": "Docfx.BuildOptions", + "nameWithType": "BuildOptions" + }, + { + "uid": "Docfx.BuildOptions.ConfigureMarkdig", + "name": "ConfigureMarkdig", + "href": "api/Docfx.BuildOptions.html#Docfx_BuildOptions_ConfigureMarkdig", + "commentId": "P:Docfx.BuildOptions.ConfigureMarkdig", + "fullName": "Docfx.BuildOptions.ConfigureMarkdig", + "nameWithType": "BuildOptions.ConfigureMarkdig" + }, + { + "uid": "Docfx.BuildOptions.ConfigureMarkdig*", + "name": "ConfigureMarkdig", + "href": "api/Docfx.BuildOptions.html#Docfx_BuildOptions_ConfigureMarkdig_", + "commentId": "Overload:Docfx.BuildOptions.ConfigureMarkdig", + "isSpec": "True", + "fullName": "Docfx.BuildOptions.ConfigureMarkdig", + "nameWithType": "BuildOptions.ConfigureMarkdig" + }, + { + "uid": "Docfx.DataContracts.ManagedReference", + "name": "Docfx.DataContracts.ManagedReference", + "href": "api/Docfx.DataContracts.ManagedReference.html", + "commentId": "N:Docfx.DataContracts.ManagedReference", + "fullName": "Docfx.DataContracts.ManagedReference", + "nameWithType": "Docfx.DataContracts.ManagedReference" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes", + "name": "AdditionalNotes", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.AdditionalNotes", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes", + "nameWithType": "AdditionalNotes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "name": "Caller", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Caller", + "commentId": "P:Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "nameWithType": "AdditionalNotes.Caller" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller*", + "name": "Caller", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Caller_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Caller", + "nameWithType": "AdditionalNotes.Caller" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "name": "Implementer", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Implementer", + "commentId": "P:Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "nameWithType": "AdditionalNotes.Implementer" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer*", + "name": "Implementer", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Implementer_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Implementer", + "nameWithType": "AdditionalNotes.Implementer" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "name": "Inheritor", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Inheritor", + "commentId": "P:Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "nameWithType": "AdditionalNotes.Inheritor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor*", + "name": "Inheritor", + "href": "api/Docfx.DataContracts.ManagedReference.AdditionalNotes.html#Docfx_DataContracts_ManagedReference_AdditionalNotes_Inheritor_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AdditionalNotes.Inheritor", + "nameWithType": "AdditionalNotes.Inheritor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter", + "name": "ApiParameter", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.ApiParameter", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter", + "nameWithType": "ApiParameter" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "name": "Attributes", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Attributes", + "commentId": "P:Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "nameWithType": "ApiParameter.Attributes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Attributes*", + "name": "Attributes", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Attributes_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Attributes", + "nameWithType": "ApiParameter.Attributes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "name": "Description", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Description", + "commentId": "P:Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "nameWithType": "ApiParameter.Description" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Description*", + "name": "Description", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Description_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Description", + "nameWithType": "ApiParameter.Description" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Name", + "commentId": "P:Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "nameWithType": "ApiParameter.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Name*", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Name_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Name", + "nameWithType": "ApiParameter.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "nameWithType": "ApiParameter.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ApiParameter.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ApiParameter.html#Docfx_DataContracts_ManagedReference_ApiParameter_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ApiParameter.Type", + "nameWithType": "ApiParameter.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo", + "name": "ArgumentInfo", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.ArgumentInfo", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo", + "nameWithType": "ArgumentInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "nameWithType": "ArgumentInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Type", + "nameWithType": "ArgumentInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "name": "Value", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Value", + "commentId": "P:Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "nameWithType": "ArgumentInfo.Value" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Value*", + "name": "Value", + "href": "api/Docfx.DataContracts.ManagedReference.ArgumentInfo.html#Docfx_DataContracts_ManagedReference_ArgumentInfo_Value_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ArgumentInfo.Value", + "nameWithType": "ArgumentInfo.Value" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo", + "name": "AttributeInfo", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.AttributeInfo", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo", + "nameWithType": "AttributeInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "name": "Arguments", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Arguments", + "commentId": "P:Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "nameWithType": "AttributeInfo.Arguments" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments*", + "name": "Arguments", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Arguments_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Arguments", + "nameWithType": "AttributeInfo.Arguments" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "name": "Constructor", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Constructor", + "commentId": "P:Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "nameWithType": "AttributeInfo.Constructor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor*", + "name": "Constructor", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Constructor_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Constructor", + "nameWithType": "AttributeInfo.Constructor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "name": "NamedArguments", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_NamedArguments", + "commentId": "P:Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "nameWithType": "AttributeInfo.NamedArguments" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments*", + "name": "NamedArguments", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_NamedArguments_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.NamedArguments", + "nameWithType": "AttributeInfo.NamedArguments" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "nameWithType": "AttributeInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.AttributeInfo.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.AttributeInfo.html#Docfx_DataContracts_ManagedReference_AttributeInfo_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.AttributeInfo.Type", + "nameWithType": "AttributeInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo", + "name": "ExceptionInfo", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.ExceptionInfo", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo", + "nameWithType": "ExceptionInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_CommentId", + "commentId": "P:Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "nameWithType": "ExceptionInfo.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId*", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_CommentId_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.CommentId", + "nameWithType": "ExceptionInfo.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "name": "Description", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Description", + "commentId": "P:Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "nameWithType": "ExceptionInfo.Description" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Description*", + "name": "Description", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Description_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Description", + "nameWithType": "ExceptionInfo.Description" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "nameWithType": "ExceptionInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ExceptionInfo.html#Docfx_DataContracts_ManagedReference_ExceptionInfo_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ExceptionInfo.Type", + "nameWithType": "ExceptionInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel", + "name": "ItemViewModel", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.ItemViewModel", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel", + "nameWithType": "ItemViewModel" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "name": "AdditionalNotes", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AdditionalNotes", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "nameWithType": "ItemViewModel.AdditionalNotes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes*", + "name": "AdditionalNotes", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AdditionalNotes_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.AdditionalNotes", + "nameWithType": "ItemViewModel.AdditionalNotes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "name": "AssemblyNameList", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AssemblyNameList", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "nameWithType": "ItemViewModel.AssemblyNameList" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList*", + "name": "AssemblyNameList", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_AssemblyNameList_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.AssemblyNameList", + "nameWithType": "ItemViewModel.AssemblyNameList" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "name": "Attributes", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Attributes", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "nameWithType": "ItemViewModel.Attributes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes*", + "name": "Attributes", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Attributes_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Attributes", + "nameWithType": "ItemViewModel.Attributes" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "name": "Children", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Children", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "nameWithType": "ItemViewModel.Children" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Children*", + "name": "Children", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Children_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Children", + "nameWithType": "ItemViewModel.Children" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_CommentId", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "nameWithType": "ItemViewModel.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId*", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_CommentId_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.CommentId", + "nameWithType": "ItemViewModel.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "name": "Conceptual", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Conceptual", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "nameWithType": "ItemViewModel.Conceptual" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual*", + "name": "Conceptual", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Conceptual_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Conceptual", + "nameWithType": "ItemViewModel.Conceptual" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "name": "DerivedClasses", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_DerivedClasses", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "nameWithType": "ItemViewModel.DerivedClasses" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses*", + "name": "DerivedClasses", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_DerivedClasses_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.DerivedClasses", + "nameWithType": "ItemViewModel.DerivedClasses" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "name": "Documentation", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Documentation", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "nameWithType": "ItemViewModel.Documentation" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation*", + "name": "Documentation", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Documentation_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Documentation", + "nameWithType": "ItemViewModel.Documentation" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "name": "Examples", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Examples", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "nameWithType": "ItemViewModel.Examples" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Examples*", + "name": "Examples", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Examples_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Examples", + "nameWithType": "ItemViewModel.Examples" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "name": "Exceptions", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Exceptions", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "nameWithType": "ItemViewModel.Exceptions" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions*", + "name": "Exceptions", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Exceptions_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Exceptions", + "nameWithType": "ItemViewModel.Exceptions" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "name": "ExtensionMethods", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_ExtensionMethods", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "nameWithType": "ItemViewModel.ExtensionMethods" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods*", + "name": "ExtensionMethods", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_ExtensionMethods_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.ExtensionMethods", + "nameWithType": "ItemViewModel.ExtensionMethods" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "name": "FullName", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullName", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "nameWithType": "ItemViewModel.FullName" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullName*", + "name": "FullName", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullName_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullName", + "nameWithType": "ItemViewModel.FullName" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "name": "FullNameForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForCSharp", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "nameWithType": "ItemViewModel.FullNameForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp*", + "name": "FullNameForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForCSharp_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForCSharp", + "nameWithType": "ItemViewModel.FullNameForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "name": "FullNameForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForVB", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "nameWithType": "ItemViewModel.FullNameForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB*", + "name": "FullNameForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNameForVB_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNameForVB", + "nameWithType": "ItemViewModel.FullNameForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "name": "FullNames", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNames", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "nameWithType": "ItemViewModel.FullNames" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames*", + "name": "FullNames", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_FullNames_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.FullNames", + "nameWithType": "ItemViewModel.FullNames" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "name": "Href", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Href", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "nameWithType": "ItemViewModel.Href" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Href*", + "name": "Href", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Href_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Href", + "nameWithType": "ItemViewModel.Href" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "name": "Id", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Id", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "nameWithType": "ItemViewModel.Id" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Id*", + "name": "Id", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Id_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Id", + "nameWithType": "ItemViewModel.Id" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "name": "Implements", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Implements", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "nameWithType": "ItemViewModel.Implements" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Implements*", + "name": "Implements", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Implements_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Implements", + "nameWithType": "ItemViewModel.Implements" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "name": "Inheritance", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Inheritance", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "nameWithType": "ItemViewModel.Inheritance" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance*", + "name": "Inheritance", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Inheritance_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Inheritance", + "nameWithType": "ItemViewModel.Inheritance" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "name": "InheritedMembers", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_InheritedMembers", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "nameWithType": "ItemViewModel.InheritedMembers" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers*", + "name": "InheritedMembers", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_InheritedMembers_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.InheritedMembers", + "nameWithType": "ItemViewModel.InheritedMembers" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "name": "IsExplicitInterfaceImplementation", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExplicitInterfaceImplementation", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "nameWithType": "ItemViewModel.IsExplicitInterfaceImplementation" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation*", + "name": "IsExplicitInterfaceImplementation", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExplicitInterfaceImplementation_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExplicitInterfaceImplementation", + "nameWithType": "ItemViewModel.IsExplicitInterfaceImplementation" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "name": "IsExtensionMethod", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExtensionMethod", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "nameWithType": "ItemViewModel.IsExtensionMethod" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod*", + "name": "IsExtensionMethod", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_IsExtensionMethod_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.IsExtensionMethod", + "nameWithType": "ItemViewModel.IsExtensionMethod" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "name": "Metadata", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Metadata", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "nameWithType": "ItemViewModel.Metadata" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata*", + "name": "Metadata", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Metadata_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Metadata", + "nameWithType": "ItemViewModel.Metadata" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Name", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "nameWithType": "ItemViewModel.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Name*", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Name_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Name", + "nameWithType": "ItemViewModel.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "name": "NameForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForCSharp", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "nameWithType": "ItemViewModel.NameForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp*", + "name": "NameForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForCSharp_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForCSharp", + "nameWithType": "ItemViewModel.NameForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "name": "NameForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForVB", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "nameWithType": "ItemViewModel.NameForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB*", + "name": "NameForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameForVB_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameForVB", + "nameWithType": "ItemViewModel.NameForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "name": "NameWithType", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithType", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "nameWithType": "ItemViewModel.NameWithType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType*", + "name": "NameWithType", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithType_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithType", + "nameWithType": "ItemViewModel.NameWithType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "name": "NameWithTypeForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForCSharp", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "nameWithType": "ItemViewModel.NameWithTypeForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp*", + "name": "NameWithTypeForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForCSharp_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForCSharp", + "nameWithType": "ItemViewModel.NameWithTypeForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "name": "NameWithTypeForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForVB", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "nameWithType": "ItemViewModel.NameWithTypeForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB*", + "name": "NameWithTypeForVB", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NameWithTypeForVB_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NameWithTypeForVB", + "nameWithType": "ItemViewModel.NameWithTypeForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "name": "Names", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Names", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "nameWithType": "ItemViewModel.Names" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Names*", + "name": "Names", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Names_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Names", + "nameWithType": "ItemViewModel.Names" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "name": "NamesWithType", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamesWithType", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "nameWithType": "ItemViewModel.NamesWithType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType*", + "name": "NamesWithType", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamesWithType_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamesWithType", + "nameWithType": "ItemViewModel.NamesWithType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "name": "NamespaceName", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamespaceName", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "nameWithType": "ItemViewModel.NamespaceName" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName*", + "name": "NamespaceName", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_NamespaceName_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.NamespaceName", + "nameWithType": "ItemViewModel.NamespaceName" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "name": "Overload", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overload", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "nameWithType": "ItemViewModel.Overload" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overload*", + "name": "Overload", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overload_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overload", + "nameWithType": "ItemViewModel.Overload" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "name": "Overridden", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overridden", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "nameWithType": "ItemViewModel.Overridden" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden*", + "name": "Overridden", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Overridden_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Overridden", + "nameWithType": "ItemViewModel.Overridden" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "name": "Parent", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Parent", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "nameWithType": "ItemViewModel.Parent" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Parent*", + "name": "Parent", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Parent_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Parent", + "nameWithType": "ItemViewModel.Parent" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "name": "Platform", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Platform", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "nameWithType": "ItemViewModel.Platform" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Platform*", + "name": "Platform", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Platform_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Platform", + "nameWithType": "ItemViewModel.Platform" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "name": "Remarks", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Remarks", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "nameWithType": "ItemViewModel.Remarks" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks*", + "name": "Remarks", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Remarks_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Remarks", + "nameWithType": "ItemViewModel.Remarks" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "name": "SeeAlsos", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsos", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "nameWithType": "ItemViewModel.SeeAlsos" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos*", + "name": "SeeAlsos", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsos_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsos", + "nameWithType": "ItemViewModel.SeeAlsos" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "name": "SeeAlsosUidReference", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsosUidReference", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "nameWithType": "ItemViewModel.SeeAlsosUidReference" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference*", + "name": "SeeAlsosUidReference", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SeeAlsosUidReference_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SeeAlsosUidReference", + "nameWithType": "ItemViewModel.SeeAlsosUidReference" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "name": "Source", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Source", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "nameWithType": "ItemViewModel.Source" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Source*", + "name": "Source", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Source_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Source", + "nameWithType": "ItemViewModel.Source" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "name": "Summary", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Summary", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "nameWithType": "ItemViewModel.Summary" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Summary*", + "name": "Summary", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Summary_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Summary", + "nameWithType": "ItemViewModel.Summary" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "name": "SupportedLanguages", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SupportedLanguages", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "nameWithType": "ItemViewModel.SupportedLanguages" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages*", + "name": "SupportedLanguages", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_SupportedLanguages_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.SupportedLanguages", + "nameWithType": "ItemViewModel.SupportedLanguages" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "name": "Syntax", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Syntax", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "nameWithType": "ItemViewModel.Syntax" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax*", + "name": "Syntax", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Syntax_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Syntax", + "nameWithType": "ItemViewModel.Syntax" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "nameWithType": "ItemViewModel.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Type", + "nameWithType": "ItemViewModel.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "name": "Uid", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Uid", + "commentId": "P:Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "nameWithType": "ItemViewModel.Uid" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.ItemViewModel.Uid*", + "name": "Uid", + "href": "api/Docfx.DataContracts.ManagedReference.ItemViewModel.html#Docfx_DataContracts_ManagedReference_ItemViewModel_Uid_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.ItemViewModel.Uid", + "nameWithType": "ItemViewModel.Uid" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo", + "name": "LinkInfo", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.LinkInfo", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo", + "nameWithType": "LinkInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "name": "AltText", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_AltText", + "commentId": "P:Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "nameWithType": "LinkInfo.AltText" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.AltText*", + "name": "AltText", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_AltText_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.AltText", + "nameWithType": "LinkInfo.AltText" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_CommentId", + "commentId": "P:Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "nameWithType": "LinkInfo.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.CommentId*", + "name": "CommentId", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_CommentId_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.CommentId", + "nameWithType": "LinkInfo.CommentId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "name": "LinkId", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkId", + "commentId": "P:Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "nameWithType": "LinkInfo.LinkId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkId*", + "name": "LinkId", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkId_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkId", + "nameWithType": "LinkInfo.LinkId" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "name": "LinkType", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkType", + "commentId": "P:Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "nameWithType": "LinkInfo.LinkType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkType*", + "name": "LinkType", + "href": "api/Docfx.DataContracts.ManagedReference.LinkInfo.html#Docfx_DataContracts_ManagedReference_LinkInfo_LinkType_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.LinkInfo.LinkType", + "nameWithType": "LinkInfo.LinkType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkType", + "name": "LinkType", + "href": "api/Docfx.DataContracts.ManagedReference.LinkType.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.LinkType", + "fullName": "Docfx.DataContracts.ManagedReference.LinkType", + "nameWithType": "LinkType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkType.CRef", + "name": "CRef", + "href": "api/Docfx.DataContracts.ManagedReference.LinkType.html#Docfx_DataContracts_ManagedReference_LinkType_CRef", + "commentId": "F:Docfx.DataContracts.ManagedReference.LinkType.CRef", + "fullName": "Docfx.DataContracts.ManagedReference.LinkType.CRef", + "nameWithType": "LinkType.CRef" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.LinkType.HRef", + "name": "HRef", + "href": "api/Docfx.DataContracts.ManagedReference.LinkType.html#Docfx_DataContracts_ManagedReference_LinkType_HRef", + "commentId": "F:Docfx.DataContracts.ManagedReference.LinkType.HRef", + "fullName": "Docfx.DataContracts.ManagedReference.LinkType.HRef", + "nameWithType": "LinkType.HRef" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType", + "name": "MemberType", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.MemberType", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType", + "nameWithType": "MemberType" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Assembly", + "name": "Assembly", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Assembly", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Assembly", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Assembly", + "nameWithType": "MemberType.Assembly" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.AttachedEvent", + "name": "AttachedEvent", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_AttachedEvent", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.AttachedEvent", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.AttachedEvent", + "nameWithType": "MemberType.AttachedEvent" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.AttachedProperty", + "name": "AttachedProperty", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_AttachedProperty", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.AttachedProperty", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.AttachedProperty", + "nameWithType": "MemberType.AttachedProperty" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Class", + "name": "Class", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Class", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Class", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Class", + "nameWithType": "MemberType.Class" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Constructor", + "name": "Constructor", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Constructor", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Constructor", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Constructor", + "nameWithType": "MemberType.Constructor" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Container", + "name": "Container", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Container", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Container", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Container", + "nameWithType": "MemberType.Container" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Default", + "name": "Default", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Default", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Default", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Default", + "nameWithType": "MemberType.Default" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Delegate", + "name": "Delegate", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Delegate", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Delegate", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Delegate", + "nameWithType": "MemberType.Delegate" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Enum", + "name": "Enum", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Enum", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Enum", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Enum", + "nameWithType": "MemberType.Enum" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Event", + "name": "Event", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Event", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Event", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Event", + "nameWithType": "MemberType.Event" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Field", + "name": "Field", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Field", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Field", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Field", + "nameWithType": "MemberType.Field" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Interface", + "name": "Interface", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Interface", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Interface", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Interface", + "nameWithType": "MemberType.Interface" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Method", + "name": "Method", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Method", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Method", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Method", + "nameWithType": "MemberType.Method" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Namespace", + "name": "Namespace", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Namespace", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Namespace", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Namespace", + "nameWithType": "MemberType.Namespace" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Operator", + "name": "Operator", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Operator", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Operator", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Operator", + "nameWithType": "MemberType.Operator" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Property", + "name": "Property", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Property", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Property", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Property", + "nameWithType": "MemberType.Property" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Struct", + "name": "Struct", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Struct", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Struct", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Struct", + "nameWithType": "MemberType.Struct" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.MemberType.Toc", + "name": "Toc", + "href": "api/Docfx.DataContracts.ManagedReference.MemberType.html#Docfx_DataContracts_ManagedReference_MemberType_Toc", + "commentId": "F:Docfx.DataContracts.ManagedReference.MemberType.Toc", + "fullName": "Docfx.DataContracts.ManagedReference.MemberType.Toc", + "nameWithType": "MemberType.Toc" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo", + "name": "NamedArgumentInfo", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.NamedArgumentInfo", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo", + "nameWithType": "NamedArgumentInfo" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Name", + "commentId": "P:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "nameWithType": "NamedArgumentInfo.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name*", + "name": "Name", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Name_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Name", + "nameWithType": "NamedArgumentInfo.Name" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Type", + "commentId": "P:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "nameWithType": "NamedArgumentInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type*", + "name": "Type", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Type_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Type", + "nameWithType": "NamedArgumentInfo.Type" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "name": "Value", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Value", + "commentId": "P:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "nameWithType": "NamedArgumentInfo.Value" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value*", + "name": "Value", + "href": "api/Docfx.DataContracts.ManagedReference.NamedArgumentInfo.html#Docfx_DataContracts_ManagedReference_NamedArgumentInfo_Value_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.NamedArgumentInfo.Value", + "nameWithType": "NamedArgumentInfo.Value" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel", + "name": "PageViewModel", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.PageViewModel", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel", + "nameWithType": "PageViewModel" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "name": "Items", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Items", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "nameWithType": "PageViewModel.Items" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.Items*", + "name": "Items", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Items_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.Items", + "nameWithType": "PageViewModel.Items" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "name": "MemberLayout", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_MemberLayout", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "nameWithType": "PageViewModel.MemberLayout" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout*", + "name": "MemberLayout", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_MemberLayout_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.MemberLayout", + "nameWithType": "PageViewModel.MemberLayout" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "name": "Metadata", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Metadata", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "nameWithType": "PageViewModel.Metadata" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.Metadata*", + "name": "Metadata", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_Metadata_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.Metadata", + "nameWithType": "PageViewModel.Metadata" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.References", + "name": "References", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_References", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.References", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.References", + "nameWithType": "PageViewModel.References" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.References*", + "name": "References", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_References_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.References", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.References", + "nameWithType": "PageViewModel.References" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "name": "ShouldSkipMarkup", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_ShouldSkipMarkup", + "commentId": "P:Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "nameWithType": "PageViewModel.ShouldSkipMarkup" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup*", + "name": "ShouldSkipMarkup", + "href": "api/Docfx.DataContracts.ManagedReference.PageViewModel.html#Docfx_DataContracts_ManagedReference_PageViewModel_ShouldSkipMarkup_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.PageViewModel.ShouldSkipMarkup", + "nameWithType": "PageViewModel.ShouldSkipMarkup" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel", + "name": "SyntaxDetailViewModel", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel", + "nameWithType": "SyntaxDetailViewModel" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "name": "Content", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Content", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "nameWithType": "SyntaxDetailViewModel.Content" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content*", + "name": "Content", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Content_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Content", + "nameWithType": "SyntaxDetailViewModel.Content" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "name": "ContentForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForCSharp", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "nameWithType": "SyntaxDetailViewModel.ContentForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp*", + "name": "ContentForCSharp", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForCSharp_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForCSharp", + "nameWithType": "SyntaxDetailViewModel.ContentForCSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "name": "ContentForVB", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForVB", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "nameWithType": "SyntaxDetailViewModel.ContentForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB*", + "name": "ContentForVB", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_ContentForVB_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.ContentForVB", + "nameWithType": "SyntaxDetailViewModel.ContentForVB" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "name": "Contents", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Contents", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "nameWithType": "SyntaxDetailViewModel.Contents" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents*", + "name": "Contents", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Contents_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Contents", + "nameWithType": "SyntaxDetailViewModel.Contents" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "name": "Parameters", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Parameters", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "nameWithType": "SyntaxDetailViewModel.Parameters" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters*", + "name": "Parameters", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Parameters_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Parameters", + "nameWithType": "SyntaxDetailViewModel.Parameters" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "name": "Return", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Return", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "nameWithType": "SyntaxDetailViewModel.Return" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return*", + "name": "Return", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_Return_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.Return", + "nameWithType": "SyntaxDetailViewModel.Return" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "name": "TypeParameters", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_TypeParameters", + "commentId": "P:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "nameWithType": "SyntaxDetailViewModel.TypeParameters" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters*", + "name": "TypeParameters", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.html#Docfx_DataContracts_ManagedReference_SyntaxDetailViewModel_TypeParameters_", + "commentId": "Overload:Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "isSpec": "True", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxDetailViewModel.TypeParameters", + "nameWithType": "SyntaxDetailViewModel.TypeParameters" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxLanguage", + "name": "SyntaxLanguage", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html", + "commentId": "T:Docfx.DataContracts.ManagedReference.SyntaxLanguage", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxLanguage", + "nameWithType": "SyntaxLanguage" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.CSharp", + "name": "CSharp", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html#Docfx_DataContracts_ManagedReference_SyntaxLanguage_CSharp", + "commentId": "F:Docfx.DataContracts.ManagedReference.SyntaxLanguage.CSharp", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.CSharp", + "nameWithType": "SyntaxLanguage.CSharp" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.Default", + "name": "Default", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html#Docfx_DataContracts_ManagedReference_SyntaxLanguage_Default", + "commentId": "F:Docfx.DataContracts.ManagedReference.SyntaxLanguage.Default", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.Default", + "nameWithType": "SyntaxLanguage.Default" + }, + { + "uid": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.VB", + "name": "VB", + "href": "api/Docfx.DataContracts.ManagedReference.SyntaxLanguage.html#Docfx_DataContracts_ManagedReference_SyntaxLanguage_VB", + "commentId": "F:Docfx.DataContracts.ManagedReference.SyntaxLanguage.VB", + "fullName": "Docfx.DataContracts.ManagedReference.SyntaxLanguage.VB", + "nameWithType": "SyntaxLanguage.VB" + }, + { + "uid": "Docfx.Docset", + "name": "Docset", + "href": "api/Docfx.Docset.html", + "commentId": "T:Docfx.Docset", + "fullName": "Docfx.Docset", + "nameWithType": "Docset" + }, + { + "uid": "Docfx.Docset.Build(System.String)", + "name": "Build(string)", + "href": "api/Docfx.Docset.html#Docfx_Docset_Build_System_String_", + "commentId": "M:Docfx.Docset.Build(System.String)", + "name.vb": "Build(String)", + "fullName": "Docfx.Docset.Build(string)", + "fullName.vb": "Docfx.Docset.Build(String)", + "nameWithType": "Docset.Build(string)", + "nameWithType.vb": "Docset.Build(String)" + }, + { + "uid": "Docfx.Docset.Build(System.String,Docfx.BuildOptions)", + "name": "Build(string, BuildOptions)", + "href": "api/Docfx.Docset.html#Docfx_Docset_Build_System_String_Docfx_BuildOptions_", + "commentId": "M:Docfx.Docset.Build(System.String,Docfx.BuildOptions)", + "name.vb": "Build(String, BuildOptions)", + "fullName": "Docfx.Docset.Build(string, Docfx.BuildOptions)", + "fullName.vb": "Docfx.Docset.Build(String, Docfx.BuildOptions)", + "nameWithType": "Docset.Build(string, BuildOptions)", + "nameWithType.vb": "Docset.Build(String, BuildOptions)" + }, + { + "uid": "Docfx.Docset.Build*", + "name": "Build", + "href": "api/Docfx.Docset.html#Docfx_Docset_Build_", + "commentId": "Overload:Docfx.Docset.Build", + "isSpec": "True", + "fullName": "Docfx.Docset.Build", + "nameWithType": "Docset.Build" + }, + { + "uid": "Docfx.Docset.Pdf(System.String)", + "name": "Pdf(string)", + "href": "api/Docfx.Docset.html#Docfx_Docset_Pdf_System_String_", + "commentId": "M:Docfx.Docset.Pdf(System.String)", + "name.vb": "Pdf(String)", + "fullName": "Docfx.Docset.Pdf(string)", + "fullName.vb": "Docfx.Docset.Pdf(String)", + "nameWithType": "Docset.Pdf(string)", + "nameWithType.vb": "Docset.Pdf(String)" + }, + { + "uid": "Docfx.Docset.Pdf(System.String,Docfx.BuildOptions)", + "name": "Pdf(string, BuildOptions)", + "href": "api/Docfx.Docset.html#Docfx_Docset_Pdf_System_String_Docfx_BuildOptions_", + "commentId": "M:Docfx.Docset.Pdf(System.String,Docfx.BuildOptions)", + "name.vb": "Pdf(String, BuildOptions)", + "fullName": "Docfx.Docset.Pdf(string, Docfx.BuildOptions)", + "fullName.vb": "Docfx.Docset.Pdf(String, Docfx.BuildOptions)", + "nameWithType": "Docset.Pdf(string, BuildOptions)", + "nameWithType.vb": "Docset.Pdf(String, BuildOptions)" + }, + { + "uid": "Docfx.Docset.Pdf*", + "name": "Pdf", + "href": "api/Docfx.Docset.html#Docfx_Docset_Pdf_", + "commentId": "Overload:Docfx.Docset.Pdf", + "isSpec": "True", + "fullName": "Docfx.Docset.Pdf", + "nameWithType": "Docset.Pdf" + }, + { + "uid": "Docfx.Dotnet", + "name": "Docfx.Dotnet", + "href": "api/Docfx.Dotnet.html", + "commentId": "N:Docfx.Dotnet", + "fullName": "Docfx.Dotnet", + "nameWithType": "Docfx.Dotnet" + }, + { + "uid": "Docfx.Dotnet.DotnetApiCatalog", + "name": "DotnetApiCatalog", + "href": "api/Docfx.Dotnet.DotnetApiCatalog.html", + "commentId": "T:Docfx.Dotnet.DotnetApiCatalog", + "fullName": "Docfx.Dotnet.DotnetApiCatalog", + "nameWithType": "DotnetApiCatalog" + }, + { + "uid": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String)", + "name": "GenerateManagedReferenceYamlFiles(string)", + "href": "api/Docfx.Dotnet.DotnetApiCatalog.html#Docfx_Dotnet_DotnetApiCatalog_GenerateManagedReferenceYamlFiles_System_String_", + "commentId": "M:Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String)", + "name.vb": "GenerateManagedReferenceYamlFiles(String)", + "fullName": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string)", + "fullName.vb": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String)", + "nameWithType": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string)", + "nameWithType.vb": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String)" + }, + { + "uid": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String,Docfx.Dotnet.DotnetApiOptions)", + "name": "GenerateManagedReferenceYamlFiles(string, DotnetApiOptions)", + "href": "api/Docfx.Dotnet.DotnetApiCatalog.html#Docfx_Dotnet_DotnetApiCatalog_GenerateManagedReferenceYamlFiles_System_String_Docfx_Dotnet_DotnetApiOptions_", + "commentId": "M:Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(System.String,Docfx.Dotnet.DotnetApiOptions)", + "name.vb": "GenerateManagedReferenceYamlFiles(String, DotnetApiOptions)", + "fullName": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string, Docfx.Dotnet.DotnetApiOptions)", + "fullName.vb": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String, Docfx.Dotnet.DotnetApiOptions)", + "nameWithType": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles(string, DotnetApiOptions)", + "nameWithType.vb": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles(String, DotnetApiOptions)" + }, + { + "uid": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles*", + "name": "GenerateManagedReferenceYamlFiles", + "href": "api/Docfx.Dotnet.DotnetApiCatalog.html#Docfx_Dotnet_DotnetApiCatalog_GenerateManagedReferenceYamlFiles_", + "commentId": "Overload:Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles", + "isSpec": "True", + "fullName": "Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles", + "nameWithType": "DotnetApiCatalog.GenerateManagedReferenceYamlFiles" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions", + "name": "DotnetApiOptions", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html", + "commentId": "T:Docfx.Dotnet.DotnetApiOptions", + "fullName": "Docfx.Dotnet.DotnetApiOptions", + "nameWithType": "DotnetApiOptions" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "name": "IncludeApi", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeApi", + "commentId": "P:Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "fullName": "Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "nameWithType": "DotnetApiOptions.IncludeApi" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.IncludeApi*", + "name": "IncludeApi", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeApi_", + "commentId": "Overload:Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "isSpec": "True", + "fullName": "Docfx.Dotnet.DotnetApiOptions.IncludeApi", + "nameWithType": "DotnetApiOptions.IncludeApi" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "name": "IncludeAttribute", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeAttribute", + "commentId": "P:Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "fullName": "Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "nameWithType": "DotnetApiOptions.IncludeAttribute" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.IncludeAttribute*", + "name": "IncludeAttribute", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_IncludeAttribute_", + "commentId": "Overload:Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "isSpec": "True", + "fullName": "Docfx.Dotnet.DotnetApiOptions.IncludeAttribute", + "nameWithType": "DotnetApiOptions.IncludeAttribute" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "name": "SourceUrl", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_SourceUrl", + "commentId": "P:Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "fullName": "Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "nameWithType": "DotnetApiOptions.SourceUrl" + }, + { + "uid": "Docfx.Dotnet.DotnetApiOptions.SourceUrl*", + "name": "SourceUrl", + "href": "api/Docfx.Dotnet.DotnetApiOptions.html#Docfx_Dotnet_DotnetApiOptions_SourceUrl_", + "commentId": "Overload:Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "isSpec": "True", + "fullName": "Docfx.Dotnet.DotnetApiOptions.SourceUrl", + "nameWithType": "DotnetApiOptions.SourceUrl" + }, + { + "uid": "Docfx.Dotnet.SymbolIncludeState", + "name": "SymbolIncludeState", + "href": "api/Docfx.Dotnet.SymbolIncludeState.html", + "commentId": "T:Docfx.Dotnet.SymbolIncludeState", + "fullName": "Docfx.Dotnet.SymbolIncludeState", + "nameWithType": "SymbolIncludeState" + }, + { + "uid": "Docfx.Dotnet.SymbolIncludeState.Default", + "name": "Default", + "href": "api/Docfx.Dotnet.SymbolIncludeState.html#Docfx_Dotnet_SymbolIncludeState_Default", + "commentId": "F:Docfx.Dotnet.SymbolIncludeState.Default", + "fullName": "Docfx.Dotnet.SymbolIncludeState.Default", + "nameWithType": "SymbolIncludeState.Default" + }, + { + "uid": "Docfx.Dotnet.SymbolIncludeState.Exclude", + "name": "Exclude", + "href": "api/Docfx.Dotnet.SymbolIncludeState.html#Docfx_Dotnet_SymbolIncludeState_Exclude", + "commentId": "F:Docfx.Dotnet.SymbolIncludeState.Exclude", + "fullName": "Docfx.Dotnet.SymbolIncludeState.Exclude", + "nameWithType": "SymbolIncludeState.Exclude" + }, + { + "uid": "Docfx.Dotnet.SymbolIncludeState.Include", + "name": "Include", + "href": "api/Docfx.Dotnet.SymbolIncludeState.html#Docfx_Dotnet_SymbolIncludeState_Include", + "commentId": "F:Docfx.Dotnet.SymbolIncludeState.Include", + "fullName": "Docfx.Dotnet.SymbolIncludeState.Include", + "nameWithType": "SymbolIncludeState.Include" + }, + { + "uid": "Docfx.MemberLayout", + "name": "MemberLayout", + "href": "api/Docfx.MemberLayout.html", + "commentId": "T:Docfx.MemberLayout", + "fullName": "Docfx.MemberLayout", + "nameWithType": "MemberLayout" + }, + { + "uid": "Docfx.MemberLayout.SamePage", + "name": "SamePage", + "href": "api/Docfx.MemberLayout.html#Docfx_MemberLayout_SamePage", + "commentId": "F:Docfx.MemberLayout.SamePage", + "fullName": "Docfx.MemberLayout.SamePage", + "nameWithType": "MemberLayout.SamePage" + }, + { + "uid": "Docfx.MemberLayout.SeparatePages", + "name": "SeparatePages", + "href": "api/Docfx.MemberLayout.html#Docfx_MemberLayout_SeparatePages", + "commentId": "F:Docfx.MemberLayout.SeparatePages", + "fullName": "Docfx.MemberLayout.SeparatePages", + "nameWithType": "MemberLayout.SeparatePages" + } + ] +} diff --git a/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_01.yml b/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_01.yml new file mode 100644 index 00000000000..172f14a6ea4 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_01.yml @@ -0,0 +1,1612 @@ +### YamlMime:XRefMap +sorted: true +references: +- uid: BuildFromAssembly + name: BuildFromAssembly + href: api/BuildFromAssembly.html + commentId: N:BuildFromAssembly + fullName: BuildFromAssembly + nameWithType: BuildFromAssembly +- uid: BuildFromAssembly.Class1 + name: Class1 + href: api/BuildFromAssembly.Class1.html + commentId: T:BuildFromAssembly.Class1 + fullName: BuildFromAssembly.Class1 + nameWithType: Class1 +- uid: BuildFromAssembly.Class1.#ctor + name: Class1() + href: api/BuildFromAssembly.Class1.html#BuildFromAssembly_Class1__ctor + commentId: M:BuildFromAssembly.Class1.#ctor + name.vb: New() + fullName: BuildFromAssembly.Class1.Class1() + fullName.vb: BuildFromAssembly.Class1.New() + nameWithType: Class1.Class1() + nameWithType.vb: Class1.New() +- uid: BuildFromAssembly.Class1.#ctor* + name: Class1 + href: api/BuildFromAssembly.Class1.html#BuildFromAssembly_Class1__ctor_ + commentId: Overload:BuildFromAssembly.Class1.#ctor + name.vb: New + fullName: BuildFromAssembly.Class1.Class1 + fullName.vb: BuildFromAssembly.Class1.New + nameWithType: Class1.Class1 + nameWithType.vb: Class1.New +- uid: BuildFromAssembly.Class1.HelloWorld + name: HelloWorld() + href: api/BuildFromAssembly.Class1.html#BuildFromAssembly_Class1_HelloWorld + commentId: M:BuildFromAssembly.Class1.HelloWorld + fullName: BuildFromAssembly.Class1.HelloWorld() + nameWithType: Class1.HelloWorld() +- uid: BuildFromAssembly.Class1.HelloWorld* + name: HelloWorld + href: api/BuildFromAssembly.Class1.html#BuildFromAssembly_Class1_HelloWorld_ + commentId: Overload:BuildFromAssembly.Class1.HelloWorld + fullName: BuildFromAssembly.Class1.HelloWorld + nameWithType: Class1.HelloWorld +- uid: BuildFromAssembly.Issue5432 + name: Issue5432 + href: api/BuildFromAssembly.Issue5432.html + commentId: T:BuildFromAssembly.Issue5432 + fullName: BuildFromAssembly.Issue5432 + nameWithType: Issue5432 +- uid: BuildFromAssembly.Issue5432.Name + name: Name + href: api/BuildFromAssembly.Issue5432.html#BuildFromAssembly_Issue5432_Name + commentId: P:BuildFromAssembly.Issue5432.Name + fullName: BuildFromAssembly.Issue5432.Name + nameWithType: Issue5432.Name +- uid: BuildFromAssembly.Issue5432.Name* + name: Name + href: api/BuildFromAssembly.Issue5432.html#BuildFromAssembly_Issue5432_Name_ + commentId: Overload:BuildFromAssembly.Issue5432.Name + fullName: BuildFromAssembly.Issue5432.Name + nameWithType: Issue5432.Name +- uid: BuildFromCSharpSourceCode + name: BuildFromCSharpSourceCode + href: api/BuildFromCSharpSourceCode.html + commentId: N:BuildFromCSharpSourceCode + fullName: BuildFromCSharpSourceCode + nameWithType: BuildFromCSharpSourceCode +- uid: BuildFromCSharpSourceCode.CSharp + name: CSharp + href: api/BuildFromCSharpSourceCode.CSharp.html + commentId: T:BuildFromCSharpSourceCode.CSharp + fullName: BuildFromCSharpSourceCode.CSharp + nameWithType: CSharp +- uid: BuildFromCSharpSourceCode.CSharp.Main(System.String[]) + name: Main(string[]) + href: api/BuildFromCSharpSourceCode.CSharp.html#BuildFromCSharpSourceCode_CSharp_Main_System_String___ + commentId: M:BuildFromCSharpSourceCode.CSharp.Main(System.String[]) + name.vb: Main(String()) + fullName: BuildFromCSharpSourceCode.CSharp.Main(string[]) + fullName.vb: BuildFromCSharpSourceCode.CSharp.Main(String()) + nameWithType: CSharp.Main(string[]) + nameWithType.vb: CSharp.Main(String()) +- uid: BuildFromCSharpSourceCode.CSharp.Main* + name: Main + href: api/BuildFromCSharpSourceCode.CSharp.html#BuildFromCSharpSourceCode_CSharp_Main_ + commentId: Overload:BuildFromCSharpSourceCode.CSharp.Main + isSpec: "True" + fullName: BuildFromCSharpSourceCode.CSharp.Main + nameWithType: CSharp.Main +- uid: BuildFromProject + name: BuildFromProject + href: api/BuildFromProject.html + commentId: N:BuildFromProject + fullName: BuildFromProject + nameWithType: BuildFromProject +- uid: BuildFromProject.Class1 + name: Class1 + href: api/BuildFromProject.Class1.html + commentId: T:BuildFromProject.Class1 + fullName: BuildFromProject.Class1 + nameWithType: Class1 +- uid: BuildFromProject.Class1.IIssue8948 + name: Class1.IIssue8948 + href: api/BuildFromProject.Class1.IIssue8948.html + commentId: T:BuildFromProject.Class1.IIssue8948 + fullName: BuildFromProject.Class1.IIssue8948 + nameWithType: Class1.IIssue8948 +- uid: BuildFromProject.Class1.IIssue8948.DoNothing* + name: DoNothing + href: api/BuildFromProject.Class1.IIssue8948.html#BuildFromProject_Class1_IIssue8948_DoNothing_ + commentId: Overload:BuildFromProject.Class1.IIssue8948.DoNothing + isSpec: "True" + fullName: BuildFromProject.Class1.IIssue8948.DoNothing + nameWithType: Class1.IIssue8948.DoNothing +- uid: BuildFromProject.Class1.IIssue8948.DoNothing``1 + name: DoNothing<T>() + href: api/BuildFromProject.Class1.IIssue8948.html#BuildFromProject_Class1_IIssue8948_DoNothing__1 + commentId: M:BuildFromProject.Class1.IIssue8948.DoNothing``1 + name.vb: DoNothing(Of T)() + fullName: BuildFromProject.Class1.IIssue8948.DoNothing<T>() + fullName.vb: BuildFromProject.Class1.IIssue8948.DoNothing(Of T)() + nameWithType: Class1.IIssue8948.DoNothing<T>() + nameWithType.vb: Class1.IIssue8948.DoNothing(Of T)() +- uid: BuildFromProject.Class1.Issue1651 + name: Issue1651() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue1651 + commentId: M:BuildFromProject.Class1.Issue1651 + fullName: BuildFromProject.Class1.Issue1651() + nameWithType: Class1.Issue1651() +- uid: BuildFromProject.Class1.Issue1651* + name: Issue1651 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue1651_ + commentId: Overload:BuildFromProject.Class1.Issue1651 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue1651 + nameWithType: Class1.Issue1651 +- uid: BuildFromProject.Class1.Issue1887 + name: Issue1887() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue1887 + commentId: M:BuildFromProject.Class1.Issue1887 + fullName: BuildFromProject.Class1.Issue1887() + nameWithType: Class1.Issue1887() +- uid: BuildFromProject.Class1.Issue1887* + name: Issue1887 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue1887_ + commentId: Overload:BuildFromProject.Class1.Issue1887 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue1887 + nameWithType: Class1.Issue1887 +- uid: BuildFromProject.Class1.Issue2623 + name: Issue2623() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue2623 + commentId: M:BuildFromProject.Class1.Issue2623 + fullName: BuildFromProject.Class1.Issue2623() + nameWithType: Class1.Issue2623() +- uid: BuildFromProject.Class1.Issue2623* + name: Issue2623 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue2623_ + commentId: Overload:BuildFromProject.Class1.Issue2623 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue2623 + nameWithType: Class1.Issue2623 +- uid: BuildFromProject.Class1.Issue2723 + name: Issue2723() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue2723 + commentId: M:BuildFromProject.Class1.Issue2723 + fullName: BuildFromProject.Class1.Issue2723() + nameWithType: Class1.Issue2723() +- uid: BuildFromProject.Class1.Issue2723* + name: Issue2723 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue2723_ + commentId: Overload:BuildFromProject.Class1.Issue2723 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue2723 + nameWithType: Class1.Issue2723 +- uid: BuildFromProject.Class1.Issue4017 + name: Issue4017() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue4017 + commentId: M:BuildFromProject.Class1.Issue4017 + fullName: BuildFromProject.Class1.Issue4017() + nameWithType: Class1.Issue4017() +- uid: BuildFromProject.Class1.Issue4017* + name: Issue4017 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue4017_ + commentId: Overload:BuildFromProject.Class1.Issue4017 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue4017 + nameWithType: Class1.Issue4017 +- uid: BuildFromProject.Class1.Issue4392 + name: Issue4392() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue4392 + commentId: M:BuildFromProject.Class1.Issue4392 + fullName: BuildFromProject.Class1.Issue4392() + nameWithType: Class1.Issue4392() +- uid: BuildFromProject.Class1.Issue4392* + name: Issue4392 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue4392_ + commentId: Overload:BuildFromProject.Class1.Issue4392 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue4392 + nameWithType: Class1.Issue4392 +- uid: BuildFromProject.Class1.Issue7484 + name: Issue7484() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue7484 + commentId: M:BuildFromProject.Class1.Issue7484 + fullName: BuildFromProject.Class1.Issue7484() + nameWithType: Class1.Issue7484() +- uid: BuildFromProject.Class1.Issue7484* + name: Issue7484 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue7484_ + commentId: Overload:BuildFromProject.Class1.Issue7484 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue7484 + nameWithType: Class1.Issue7484 +- uid: BuildFromProject.Class1.Issue8665 + name: Class1.Issue8665 + href: api/BuildFromProject.Class1.Issue8665.html + commentId: T:BuildFromProject.Class1.Issue8665 + fullName: BuildFromProject.Class1.Issue8665 + nameWithType: Class1.Issue8665 +- uid: BuildFromProject.Class1.Issue8665.#ctor + name: Issue8665() + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665__ctor + commentId: M:BuildFromProject.Class1.Issue8665.#ctor + name.vb: New() + fullName: BuildFromProject.Class1.Issue8665.Issue8665() + fullName.vb: BuildFromProject.Class1.Issue8665.New() + nameWithType: Class1.Issue8665.Issue8665() + nameWithType.vb: Class1.Issue8665.New() +- uid: BuildFromProject.Class1.Issue8665.#ctor(System.Int32) + name: Issue8665(int) + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665__ctor_System_Int32_ + commentId: M:BuildFromProject.Class1.Issue8665.#ctor(System.Int32) + name.vb: New(Integer) + fullName: BuildFromProject.Class1.Issue8665.Issue8665(int) + fullName.vb: BuildFromProject.Class1.Issue8665.New(Integer) + nameWithType: Class1.Issue8665.Issue8665(int) + nameWithType.vb: Class1.Issue8665.New(Integer) +- uid: BuildFromProject.Class1.Issue8665.#ctor(System.Int32,System.Char) + name: Issue8665(int, char) + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665__ctor_System_Int32_System_Char_ + commentId: M:BuildFromProject.Class1.Issue8665.#ctor(System.Int32,System.Char) + name.vb: New(Integer, Char) + fullName: BuildFromProject.Class1.Issue8665.Issue8665(int, char) + fullName.vb: BuildFromProject.Class1.Issue8665.New(Integer, Char) + nameWithType: Class1.Issue8665.Issue8665(int, char) + nameWithType.vb: Class1.Issue8665.New(Integer, Char) +- uid: BuildFromProject.Class1.Issue8665.#ctor(System.Int32,System.Char,System.String) + name: Issue8665(int, char, string) + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665__ctor_System_Int32_System_Char_System_String_ + commentId: M:BuildFromProject.Class1.Issue8665.#ctor(System.Int32,System.Char,System.String) + name.vb: New(Integer, Char, String) + fullName: BuildFromProject.Class1.Issue8665.Issue8665(int, char, string) + fullName.vb: BuildFromProject.Class1.Issue8665.New(Integer, Char, String) + nameWithType: Class1.Issue8665.Issue8665(int, char, string) + nameWithType.vb: Class1.Issue8665.New(Integer, Char, String) +- uid: BuildFromProject.Class1.Issue8665.#ctor* + name: Issue8665 + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665__ctor_ + commentId: Overload:BuildFromProject.Class1.Issue8665.#ctor + isSpec: "True" + name.vb: New + fullName: BuildFromProject.Class1.Issue8665.Issue8665 + fullName.vb: BuildFromProject.Class1.Issue8665.New + nameWithType: Class1.Issue8665.Issue8665 + nameWithType.vb: Class1.Issue8665.New +- uid: BuildFromProject.Class1.Issue8665.Bar + name: Bar + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665_Bar + commentId: P:BuildFromProject.Class1.Issue8665.Bar + fullName: BuildFromProject.Class1.Issue8665.Bar + nameWithType: Class1.Issue8665.Bar +- uid: BuildFromProject.Class1.Issue8665.Bar* + name: Bar + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665_Bar_ + commentId: Overload:BuildFromProject.Class1.Issue8665.Bar + isSpec: "True" + fullName: BuildFromProject.Class1.Issue8665.Bar + nameWithType: Class1.Issue8665.Bar +- uid: BuildFromProject.Class1.Issue8665.Baz + name: Baz + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665_Baz + commentId: P:BuildFromProject.Class1.Issue8665.Baz + fullName: BuildFromProject.Class1.Issue8665.Baz + nameWithType: Class1.Issue8665.Baz +- uid: BuildFromProject.Class1.Issue8665.Baz* + name: Baz + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665_Baz_ + commentId: Overload:BuildFromProject.Class1.Issue8665.Baz + isSpec: "True" + fullName: BuildFromProject.Class1.Issue8665.Baz + nameWithType: Class1.Issue8665.Baz +- uid: BuildFromProject.Class1.Issue8665.Foo + name: Foo + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665_Foo + commentId: P:BuildFromProject.Class1.Issue8665.Foo + fullName: BuildFromProject.Class1.Issue8665.Foo + nameWithType: Class1.Issue8665.Foo +- uid: BuildFromProject.Class1.Issue8665.Foo* + name: Foo + href: api/BuildFromProject.Class1.Issue8665.html#BuildFromProject_Class1_Issue8665_Foo_ + commentId: Overload:BuildFromProject.Class1.Issue8665.Foo + isSpec: "True" + fullName: BuildFromProject.Class1.Issue8665.Foo + nameWithType: Class1.Issue8665.Foo +- uid: BuildFromProject.Class1.Issue8696Attribute + name: Class1.Issue8696Attribute + href: api/BuildFromProject.Class1.Issue8696Attribute.html + commentId: T:BuildFromProject.Class1.Issue8696Attribute + fullName: BuildFromProject.Class1.Issue8696Attribute + nameWithType: Class1.Issue8696Attribute +- uid: BuildFromProject.Class1.Issue8696Attribute.#ctor(System.String,System.Int32,System.Int32,System.String[],System.Boolean,System.Type) + name: Issue8696Attribute(string?, int, int, string[]?, bool, Type?) + href: api/BuildFromProject.Class1.Issue8696Attribute.html#BuildFromProject_Class1_Issue8696Attribute__ctor_System_String_System_Int32_System_Int32_System_String___System_Boolean_System_Type_ + commentId: M:BuildFromProject.Class1.Issue8696Attribute.#ctor(System.String,System.Int32,System.Int32,System.String[],System.Boolean,System.Type) + name.vb: New(String, Integer, Integer, String(), Boolean, Type) + fullName: BuildFromProject.Class1.Issue8696Attribute.Issue8696Attribute(string?, int, int, string[]?, bool, System.Type?) + fullName.vb: BuildFromProject.Class1.Issue8696Attribute.New(String, Integer, Integer, String(), Boolean, System.Type) + nameWithType: Class1.Issue8696Attribute.Issue8696Attribute(string?, int, int, string[]?, bool, Type?) + nameWithType.vb: Class1.Issue8696Attribute.New(String, Integer, Integer, String(), Boolean, Type) +- uid: BuildFromProject.Class1.Issue8696Attribute.#ctor* + name: Issue8696Attribute + href: api/BuildFromProject.Class1.Issue8696Attribute.html#BuildFromProject_Class1_Issue8696Attribute__ctor_ + commentId: Overload:BuildFromProject.Class1.Issue8696Attribute.#ctor + isSpec: "True" + name.vb: New + fullName: BuildFromProject.Class1.Issue8696Attribute.Issue8696Attribute + fullName.vb: BuildFromProject.Class1.Issue8696Attribute.New + nameWithType: Class1.Issue8696Attribute.Issue8696Attribute + nameWithType.vb: Class1.Issue8696Attribute.New +- uid: BuildFromProject.Class1.Issue8764* + name: Issue8764 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue8764_ + commentId: Overload:BuildFromProject.Class1.Issue8764 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue8764 + nameWithType: Class1.Issue8764 +- uid: BuildFromProject.Class1.Issue8764``1 + name: Issue8764<T>() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue8764__1 + commentId: M:BuildFromProject.Class1.Issue8764``1 + name.vb: Issue8764(Of T)() + fullName: BuildFromProject.Class1.Issue8764<T>() + fullName.vb: BuildFromProject.Class1.Issue8764(Of T)() + nameWithType: Class1.Issue8764<T>() + nameWithType.vb: Class1.Issue8764(Of T)() +- uid: BuildFromProject.Class1.Issue8948 + name: Class1.Issue8948 + href: api/BuildFromProject.Class1.Issue8948.html + commentId: T:BuildFromProject.Class1.Issue8948 + fullName: BuildFromProject.Class1.Issue8948 + nameWithType: Class1.Issue8948 +- uid: BuildFromProject.Class1.Issue8948.DoNothing* + name: DoNothing + href: api/BuildFromProject.Class1.Issue8948.html#BuildFromProject_Class1_Issue8948_DoNothing_ + commentId: Overload:BuildFromProject.Class1.Issue8948.DoNothing + isSpec: "True" + fullName: BuildFromProject.Class1.Issue8948.DoNothing + nameWithType: Class1.Issue8948.DoNothing +- uid: BuildFromProject.Class1.Issue8948.DoNothing``1 + name: DoNothing<T>() + href: api/BuildFromProject.Class1.Issue8948.html#BuildFromProject_Class1_Issue8948_DoNothing__1 + commentId: M:BuildFromProject.Class1.Issue8948.DoNothing``1 + name.vb: DoNothing(Of T)() + fullName: BuildFromProject.Class1.Issue8948.DoNothing<T>() + fullName.vb: BuildFromProject.Class1.Issue8948.DoNothing(Of T)() + nameWithType: Class1.Issue8948.DoNothing<T>() + nameWithType.vb: Class1.Issue8948.DoNothing(Of T)() +- uid: BuildFromProject.Class1.Issue896 + name: Issue896() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue896 + commentId: M:BuildFromProject.Class1.Issue896 + fullName: BuildFromProject.Class1.Issue896() + nameWithType: Class1.Issue896() +- uid: BuildFromProject.Class1.Issue896* + name: Issue896 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue896_ + commentId: Overload:BuildFromProject.Class1.Issue896 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue896 + nameWithType: Class1.Issue896 +- uid: BuildFromProject.Class1.Issue9216 + name: Issue9216() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue9216 + commentId: M:BuildFromProject.Class1.Issue9216 + fullName: BuildFromProject.Class1.Issue9216() + nameWithType: Class1.Issue9216() +- uid: BuildFromProject.Class1.Issue9216* + name: Issue9216 + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_Issue9216_ + commentId: Overload:BuildFromProject.Class1.Issue9216 + isSpec: "True" + fullName: BuildFromProject.Class1.Issue9216 + nameWithType: Class1.Issue9216 +- uid: BuildFromProject.Class1.Issue9260 + name: Class1.Issue9260 + href: api/BuildFromProject.Class1.Issue9260.html + commentId: T:BuildFromProject.Class1.Issue9260 + fullName: BuildFromProject.Class1.Issue9260 + nameWithType: Class1.Issue9260 +- uid: BuildFromProject.Class1.Issue9260.OldAndUnusedValue + name: OldAndUnusedValue + href: api/BuildFromProject.Class1.Issue9260.html#BuildFromProject_Class1_Issue9260_OldAndUnusedValue + commentId: F:BuildFromProject.Class1.Issue9260.OldAndUnusedValue + fullName: BuildFromProject.Class1.Issue9260.OldAndUnusedValue + nameWithType: Class1.Issue9260.OldAndUnusedValue +- uid: BuildFromProject.Class1.Issue9260.OldAndUnusedValue2 + name: OldAndUnusedValue2 + href: api/BuildFromProject.Class1.Issue9260.html#BuildFromProject_Class1_Issue9260_OldAndUnusedValue2 + commentId: F:BuildFromProject.Class1.Issue9260.OldAndUnusedValue2 + fullName: BuildFromProject.Class1.Issue9260.OldAndUnusedValue2 + nameWithType: Class1.Issue9260.OldAndUnusedValue2 +- uid: BuildFromProject.Class1.Issue9260.Value + name: Value + href: api/BuildFromProject.Class1.Issue9260.html#BuildFromProject_Class1_Issue9260_Value + commentId: F:BuildFromProject.Class1.Issue9260.Value + fullName: BuildFromProject.Class1.Issue9260.Value + nameWithType: Class1.Issue9260.Value +- uid: BuildFromProject.Class1.Test`1 + name: Class1.Test<T> + href: api/BuildFromProject.Class1.Test-1.html + commentId: T:BuildFromProject.Class1.Test`1 + name.vb: Class1.Test(Of T) + fullName: BuildFromProject.Class1.Test<T> + fullName.vb: BuildFromProject.Class1.Test(Of T) + nameWithType: Class1.Test<T> + nameWithType.vb: Class1.Test(Of T) +- uid: BuildFromProject.Class1.XmlCommentIncludeTag + name: XmlCommentIncludeTag() + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_XmlCommentIncludeTag + commentId: M:BuildFromProject.Class1.XmlCommentIncludeTag + fullName: BuildFromProject.Class1.XmlCommentIncludeTag() + nameWithType: Class1.XmlCommentIncludeTag() +- uid: BuildFromProject.Class1.XmlCommentIncludeTag* + name: XmlCommentIncludeTag + href: api/BuildFromProject.Class1.html#BuildFromProject_Class1_XmlCommentIncludeTag_ + commentId: Overload:BuildFromProject.Class1.XmlCommentIncludeTag + isSpec: "True" + fullName: BuildFromProject.Class1.XmlCommentIncludeTag + nameWithType: Class1.XmlCommentIncludeTag +- uid: BuildFromProject.Dog + name: Dog + href: api/BuildFromProject.Dog.html + commentId: T:BuildFromProject.Dog + fullName: BuildFromProject.Dog + nameWithType: Dog +- uid: BuildFromProject.Dog.#ctor(System.String,System.Int32) + name: Dog(string, int) + href: api/BuildFromProject.Dog.html#BuildFromProject_Dog__ctor_System_String_System_Int32_ + commentId: M:BuildFromProject.Dog.#ctor(System.String,System.Int32) + name.vb: New(String, Integer) + fullName: BuildFromProject.Dog.Dog(string, int) + fullName.vb: BuildFromProject.Dog.New(String, Integer) + nameWithType: Dog.Dog(string, int) + nameWithType.vb: Dog.New(String, Integer) +- uid: BuildFromProject.Dog.#ctor* + name: Dog + href: api/BuildFromProject.Dog.html#BuildFromProject_Dog__ctor_ + commentId: Overload:BuildFromProject.Dog.#ctor + isSpec: "True" + name.vb: New + fullName: BuildFromProject.Dog.Dog + fullName.vb: BuildFromProject.Dog.New + nameWithType: Dog.Dog + nameWithType.vb: Dog.New +- uid: BuildFromProject.Dog.Age + name: Age + href: api/BuildFromProject.Dog.html#BuildFromProject_Dog_Age + commentId: P:BuildFromProject.Dog.Age + fullName: BuildFromProject.Dog.Age + nameWithType: Dog.Age +- uid: BuildFromProject.Dog.Age* + name: Age + href: api/BuildFromProject.Dog.html#BuildFromProject_Dog_Age_ + commentId: Overload:BuildFromProject.Dog.Age + isSpec: "True" + fullName: BuildFromProject.Dog.Age + nameWithType: Dog.Age +- uid: BuildFromProject.Dog.Name + name: Name + href: api/BuildFromProject.Dog.html#BuildFromProject_Dog_Name + commentId: P:BuildFromProject.Dog.Name + fullName: BuildFromProject.Dog.Name + nameWithType: Dog.Name +- uid: BuildFromProject.Dog.Name* + name: Name + href: api/BuildFromProject.Dog.html#BuildFromProject_Dog_Name_ + commentId: Overload:BuildFromProject.Dog.Name + isSpec: "True" + fullName: BuildFromProject.Dog.Name + nameWithType: Dog.Name +- uid: BuildFromProject.IInheritdoc + name: IInheritdoc + href: api/BuildFromProject.IInheritdoc.html + commentId: T:BuildFromProject.IInheritdoc + fullName: BuildFromProject.IInheritdoc + nameWithType: IInheritdoc +- uid: BuildFromProject.IInheritdoc.Issue7629 + name: Issue7629() + href: api/BuildFromProject.IInheritdoc.html#BuildFromProject_IInheritdoc_Issue7629 + commentId: M:BuildFromProject.IInheritdoc.Issue7629 + fullName: BuildFromProject.IInheritdoc.Issue7629() + nameWithType: IInheritdoc.Issue7629() +- uid: BuildFromProject.IInheritdoc.Issue7629* + name: Issue7629 + href: api/BuildFromProject.IInheritdoc.html#BuildFromProject_IInheritdoc_Issue7629_ + commentId: Overload:BuildFromProject.IInheritdoc.Issue7629 + isSpec: "True" + fullName: BuildFromProject.IInheritdoc.Issue7629 + nameWithType: IInheritdoc.Issue7629 +- uid: BuildFromProject.Inheritdoc + name: Inheritdoc + href: api/BuildFromProject.Inheritdoc.html + commentId: T:BuildFromProject.Inheritdoc + fullName: BuildFromProject.Inheritdoc + nameWithType: Inheritdoc +- uid: BuildFromProject.Inheritdoc.Dispose + name: Dispose() + href: api/BuildFromProject.Inheritdoc.html#BuildFromProject_Inheritdoc_Dispose + commentId: M:BuildFromProject.Inheritdoc.Dispose + fullName: BuildFromProject.Inheritdoc.Dispose() + nameWithType: Inheritdoc.Dispose() +- uid: BuildFromProject.Inheritdoc.Dispose* + name: Dispose + href: api/BuildFromProject.Inheritdoc.html#BuildFromProject_Inheritdoc_Dispose_ + commentId: Overload:BuildFromProject.Inheritdoc.Dispose + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Dispose + nameWithType: Inheritdoc.Dispose +- uid: BuildFromProject.Inheritdoc.Issue6366 + name: Inheritdoc.Issue6366 + href: api/BuildFromProject.Inheritdoc.Issue6366.html + commentId: T:BuildFromProject.Inheritdoc.Issue6366 + fullName: BuildFromProject.Inheritdoc.Issue6366 + nameWithType: Inheritdoc.Issue6366 +- uid: BuildFromProject.Inheritdoc.Issue6366.Class1`1 + name: Inheritdoc.Issue6366.Class1<T> + href: api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html + commentId: T:BuildFromProject.Inheritdoc.Issue6366.Class1`1 + name.vb: Inheritdoc.Issue6366.Class1(Of T) + fullName: BuildFromProject.Inheritdoc.Issue6366.Class1<T> + fullName.vb: BuildFromProject.Inheritdoc.Issue6366.Class1(Of T) + nameWithType: Inheritdoc.Issue6366.Class1<T> + nameWithType.vb: Inheritdoc.Issue6366.Class1(Of T) +- uid: BuildFromProject.Inheritdoc.Issue6366.Class1`1.TestMethod1(`0,System.Int32) + name: TestMethod1(T, int) + href: api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html#BuildFromProject_Inheritdoc_Issue6366_Class1_1_TestMethod1__0_System_Int32_ + commentId: M:BuildFromProject.Inheritdoc.Issue6366.Class1`1.TestMethod1(`0,System.Int32) + name.vb: TestMethod1(T, Integer) + fullName: BuildFromProject.Inheritdoc.Issue6366.Class1<T>.TestMethod1(T, int) + fullName.vb: BuildFromProject.Inheritdoc.Issue6366.Class1(Of T).TestMethod1(T, Integer) + nameWithType: Inheritdoc.Issue6366.Class1<T>.TestMethod1(T, int) + nameWithType.vb: Inheritdoc.Issue6366.Class1(Of T).TestMethod1(T, Integer) +- uid: BuildFromProject.Inheritdoc.Issue6366.Class1`1.TestMethod1* + name: TestMethod1 + href: api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html#BuildFromProject_Inheritdoc_Issue6366_Class1_1_TestMethod1_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue6366.Class1`1.TestMethod1 + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue6366.Class1<T>.TestMethod1 + fullName.vb: BuildFromProject.Inheritdoc.Issue6366.Class1(Of T).TestMethod1 + nameWithType: Inheritdoc.Issue6366.Class1<T>.TestMethod1 + nameWithType.vb: Inheritdoc.Issue6366.Class1(Of T).TestMethod1 +- uid: BuildFromProject.Inheritdoc.Issue6366.Class2 + name: Inheritdoc.Issue6366.Class2 + href: api/BuildFromProject.Inheritdoc.Issue6366.Class2.html + commentId: T:BuildFromProject.Inheritdoc.Issue6366.Class2 + fullName: BuildFromProject.Inheritdoc.Issue6366.Class2 + nameWithType: Inheritdoc.Issue6366.Class2 +- uid: BuildFromProject.Inheritdoc.Issue6366.Class2.TestMethod1(System.Boolean,System.Int32) + name: TestMethod1(bool, int) + href: api/BuildFromProject.Inheritdoc.Issue6366.Class2.html#BuildFromProject_Inheritdoc_Issue6366_Class2_TestMethod1_System_Boolean_System_Int32_ + commentId: M:BuildFromProject.Inheritdoc.Issue6366.Class2.TestMethod1(System.Boolean,System.Int32) + name.vb: TestMethod1(Boolean, Integer) + fullName: BuildFromProject.Inheritdoc.Issue6366.Class2.TestMethod1(bool, int) + fullName.vb: BuildFromProject.Inheritdoc.Issue6366.Class2.TestMethod1(Boolean, Integer) + nameWithType: Inheritdoc.Issue6366.Class2.TestMethod1(bool, int) + nameWithType.vb: Inheritdoc.Issue6366.Class2.TestMethod1(Boolean, Integer) +- uid: BuildFromProject.Inheritdoc.Issue6366.Class2.TestMethod1* + name: TestMethod1 + href: api/BuildFromProject.Inheritdoc.Issue6366.Class2.html#BuildFromProject_Inheritdoc_Issue6366_Class2_TestMethod1_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue6366.Class2.TestMethod1 + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue6366.Class2.TestMethod1 + nameWithType: Inheritdoc.Issue6366.Class2.TestMethod1 +- uid: BuildFromProject.Inheritdoc.Issue7035 + name: Inheritdoc.Issue7035 + href: api/BuildFromProject.Inheritdoc.Issue7035.html + commentId: T:BuildFromProject.Inheritdoc.Issue7035 + fullName: BuildFromProject.Inheritdoc.Issue7035 + nameWithType: Inheritdoc.Issue7035 +- uid: BuildFromProject.Inheritdoc.Issue7035.A + name: A() + href: api/BuildFromProject.Inheritdoc.Issue7035.html#BuildFromProject_Inheritdoc_Issue7035_A + commentId: M:BuildFromProject.Inheritdoc.Issue7035.A + fullName: BuildFromProject.Inheritdoc.Issue7035.A() + nameWithType: Inheritdoc.Issue7035.A() +- uid: BuildFromProject.Inheritdoc.Issue7035.A* + name: A + href: api/BuildFromProject.Inheritdoc.Issue7035.html#BuildFromProject_Inheritdoc_Issue7035_A_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue7035.A + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue7035.A + nameWithType: Inheritdoc.Issue7035.A +- uid: BuildFromProject.Inheritdoc.Issue7035.B + name: B() + href: api/BuildFromProject.Inheritdoc.Issue7035.html#BuildFromProject_Inheritdoc_Issue7035_B + commentId: M:BuildFromProject.Inheritdoc.Issue7035.B + fullName: BuildFromProject.Inheritdoc.Issue7035.B() + nameWithType: Inheritdoc.Issue7035.B() +- uid: BuildFromProject.Inheritdoc.Issue7035.B* + name: B + href: api/BuildFromProject.Inheritdoc.Issue7035.html#BuildFromProject_Inheritdoc_Issue7035_B_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue7035.B + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue7035.B + nameWithType: Inheritdoc.Issue7035.B +- uid: BuildFromProject.Inheritdoc.Issue7484 + name: Inheritdoc.Issue7484 + href: api/BuildFromProject.Inheritdoc.Issue7484.html + commentId: T:BuildFromProject.Inheritdoc.Issue7484 + fullName: BuildFromProject.Inheritdoc.Issue7484 + nameWithType: Inheritdoc.Issue7484 +- uid: BuildFromProject.Inheritdoc.Issue7484.#ctor + name: Issue7484() + href: api/BuildFromProject.Inheritdoc.Issue7484.html#BuildFromProject_Inheritdoc_Issue7484__ctor + commentId: M:BuildFromProject.Inheritdoc.Issue7484.#ctor + name.vb: New() + fullName: BuildFromProject.Inheritdoc.Issue7484.Issue7484() + fullName.vb: BuildFromProject.Inheritdoc.Issue7484.New() + nameWithType: Inheritdoc.Issue7484.Issue7484() + nameWithType.vb: Inheritdoc.Issue7484.New() +- uid: BuildFromProject.Inheritdoc.Issue7484.#ctor* + name: Issue7484 + href: api/BuildFromProject.Inheritdoc.Issue7484.html#BuildFromProject_Inheritdoc_Issue7484__ctor_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue7484.#ctor + isSpec: "True" + name.vb: New + fullName: BuildFromProject.Inheritdoc.Issue7484.Issue7484 + fullName.vb: BuildFromProject.Inheritdoc.Issue7484.New + nameWithType: Inheritdoc.Issue7484.Issue7484 + nameWithType.vb: Inheritdoc.Issue7484.New +- uid: BuildFromProject.Inheritdoc.Issue7484.BoolReturningMethod(System.Boolean) + name: BoolReturningMethod(bool) + href: api/BuildFromProject.Inheritdoc.Issue7484.html#BuildFromProject_Inheritdoc_Issue7484_BoolReturningMethod_System_Boolean_ + commentId: M:BuildFromProject.Inheritdoc.Issue7484.BoolReturningMethod(System.Boolean) + name.vb: BoolReturningMethod(Boolean) + fullName: BuildFromProject.Inheritdoc.Issue7484.BoolReturningMethod(bool) + fullName.vb: BuildFromProject.Inheritdoc.Issue7484.BoolReturningMethod(Boolean) + nameWithType: Inheritdoc.Issue7484.BoolReturningMethod(bool) + nameWithType.vb: Inheritdoc.Issue7484.BoolReturningMethod(Boolean) +- uid: BuildFromProject.Inheritdoc.Issue7484.BoolReturningMethod* + name: BoolReturningMethod + href: api/BuildFromProject.Inheritdoc.Issue7484.html#BuildFromProject_Inheritdoc_Issue7484_BoolReturningMethod_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue7484.BoolReturningMethod + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue7484.BoolReturningMethod + nameWithType: Inheritdoc.Issue7484.BoolReturningMethod +- uid: BuildFromProject.Inheritdoc.Issue7484.DoDad + name: DoDad + href: api/BuildFromProject.Inheritdoc.Issue7484.html#BuildFromProject_Inheritdoc_Issue7484_DoDad + commentId: P:BuildFromProject.Inheritdoc.Issue7484.DoDad + fullName: BuildFromProject.Inheritdoc.Issue7484.DoDad + nameWithType: Inheritdoc.Issue7484.DoDad +- uid: BuildFromProject.Inheritdoc.Issue7484.DoDad* + name: DoDad + href: api/BuildFromProject.Inheritdoc.Issue7484.html#BuildFromProject_Inheritdoc_Issue7484_DoDad_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue7484.DoDad + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue7484.DoDad + nameWithType: Inheritdoc.Issue7484.DoDad +- uid: BuildFromProject.Inheritdoc.Issue7628 + name: Issue7628() + href: api/BuildFromProject.Inheritdoc.html#BuildFromProject_Inheritdoc_Issue7628 + commentId: M:BuildFromProject.Inheritdoc.Issue7628 + fullName: BuildFromProject.Inheritdoc.Issue7628() + nameWithType: Inheritdoc.Issue7628() +- uid: BuildFromProject.Inheritdoc.Issue7628* + name: Issue7628 + href: api/BuildFromProject.Inheritdoc.html#BuildFromProject_Inheritdoc_Issue7628_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue7628 + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue7628 + nameWithType: Inheritdoc.Issue7628 +- uid: BuildFromProject.Inheritdoc.Issue7629 + name: Issue7629() + href: api/BuildFromProject.Inheritdoc.html#BuildFromProject_Inheritdoc_Issue7629 + commentId: M:BuildFromProject.Inheritdoc.Issue7629 + fullName: BuildFromProject.Inheritdoc.Issue7629() + nameWithType: Inheritdoc.Issue7629() +- uid: BuildFromProject.Inheritdoc.Issue7629* + name: Issue7629 + href: api/BuildFromProject.Inheritdoc.html#BuildFromProject_Inheritdoc_Issue7629_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue7629 + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue7629 + nameWithType: Inheritdoc.Issue7629 +- uid: BuildFromProject.Inheritdoc.Issue8101 + name: Inheritdoc.Issue8101 + href: api/BuildFromProject.Inheritdoc.Issue8101.html + commentId: T:BuildFromProject.Inheritdoc.Issue8101 + fullName: BuildFromProject.Inheritdoc.Issue8101 + nameWithType: Inheritdoc.Issue8101 +- uid: BuildFromProject.Inheritdoc.Issue8101.Tween(System.Int32,System.Int32,System.Single,System.Action{System.Int32}) + name: Tween(int, int, float, Action<int>) + href: api/BuildFromProject.Inheritdoc.Issue8101.html#BuildFromProject_Inheritdoc_Issue8101_Tween_System_Int32_System_Int32_System_Single_System_Action_System_Int32__ + commentId: M:BuildFromProject.Inheritdoc.Issue8101.Tween(System.Int32,System.Int32,System.Single,System.Action{System.Int32}) + name.vb: Tween(Integer, Integer, Single, Action(Of Integer)) + fullName: BuildFromProject.Inheritdoc.Issue8101.Tween(int, int, float, System.Action<int>) + fullName.vb: BuildFromProject.Inheritdoc.Issue8101.Tween(Integer, Integer, Single, System.Action(Of Integer)) + nameWithType: Inheritdoc.Issue8101.Tween(int, int, float, Action<int>) + nameWithType.vb: Inheritdoc.Issue8101.Tween(Integer, Integer, Single, Action(Of Integer)) +- uid: BuildFromProject.Inheritdoc.Issue8101.Tween(System.Single,System.Single,System.Single,System.Action{System.Single}) + name: Tween(float, float, float, Action<float>) + href: api/BuildFromProject.Inheritdoc.Issue8101.html#BuildFromProject_Inheritdoc_Issue8101_Tween_System_Single_System_Single_System_Single_System_Action_System_Single__ + commentId: M:BuildFromProject.Inheritdoc.Issue8101.Tween(System.Single,System.Single,System.Single,System.Action{System.Single}) + name.vb: Tween(Single, Single, Single, Action(Of Single)) + fullName: BuildFromProject.Inheritdoc.Issue8101.Tween(float, float, float, System.Action<float>) + fullName.vb: BuildFromProject.Inheritdoc.Issue8101.Tween(Single, Single, Single, System.Action(Of Single)) + nameWithType: Inheritdoc.Issue8101.Tween(float, float, float, Action<float>) + nameWithType.vb: Inheritdoc.Issue8101.Tween(Single, Single, Single, Action(Of Single)) +- uid: BuildFromProject.Inheritdoc.Issue8101.Tween* + name: Tween + href: api/BuildFromProject.Inheritdoc.Issue8101.html#BuildFromProject_Inheritdoc_Issue8101_Tween_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue8101.Tween + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue8101.Tween + nameWithType: Inheritdoc.Issue8101.Tween +- uid: BuildFromProject.Inheritdoc.Issue8129 + name: Inheritdoc.Issue8129 + href: api/BuildFromProject.Inheritdoc.Issue8129.html + commentId: T:BuildFromProject.Inheritdoc.Issue8129 + fullName: BuildFromProject.Inheritdoc.Issue8129 + nameWithType: Inheritdoc.Issue8129 +- uid: BuildFromProject.Inheritdoc.Issue8129.#ctor(System.String) + name: Issue8129(string) + href: api/BuildFromProject.Inheritdoc.Issue8129.html#BuildFromProject_Inheritdoc_Issue8129__ctor_System_String_ + commentId: M:BuildFromProject.Inheritdoc.Issue8129.#ctor(System.String) + name.vb: New(String) + fullName: BuildFromProject.Inheritdoc.Issue8129.Issue8129(string) + fullName.vb: BuildFromProject.Inheritdoc.Issue8129.New(String) + nameWithType: Inheritdoc.Issue8129.Issue8129(string) + nameWithType.vb: Inheritdoc.Issue8129.New(String) +- uid: BuildFromProject.Inheritdoc.Issue8129.#ctor* + name: Issue8129 + href: api/BuildFromProject.Inheritdoc.Issue8129.html#BuildFromProject_Inheritdoc_Issue8129__ctor_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue8129.#ctor + isSpec: "True" + name.vb: New + fullName: BuildFromProject.Inheritdoc.Issue8129.Issue8129 + fullName.vb: BuildFromProject.Inheritdoc.Issue8129.New + nameWithType: Inheritdoc.Issue8129.Issue8129 + nameWithType.vb: Inheritdoc.Issue8129.New +- uid: BuildFromProject.Issue8540 + name: BuildFromProject.Issue8540 + href: api/BuildFromProject.Issue8540.html +- uid: BuildFromProject.Issue8540.A + name: BuildFromProject.Issue8540.A + href: api/BuildFromProject.Issue8540.A.html + commentId: N:BuildFromProject.Issue8540.A + fullName: BuildFromProject.Issue8540.A + nameWithType: BuildFromProject.Issue8540.A +- uid: BuildFromProject.Issue8540.A.A + name: A + href: api/BuildFromProject.Issue8540.A.A.html + commentId: T:BuildFromProject.Issue8540.A.A + fullName: BuildFromProject.Issue8540.A.A + nameWithType: A +- uid: BuildFromProject.Issue8540.B + name: BuildFromProject.Issue8540.B + href: api/BuildFromProject.Issue8540.B.html + commentId: N:BuildFromProject.Issue8540.B + fullName: BuildFromProject.Issue8540.B + nameWithType: BuildFromProject.Issue8540.B +- uid: BuildFromProject.Issue8540.B.B + name: B + href: api/BuildFromProject.Issue8540.B.B.html + commentId: T:BuildFromProject.Issue8540.B.B + fullName: BuildFromProject.Issue8540.B.B + nameWithType: B +- uid: BuildFromProject.Issue8725 + name: Issue8725 + href: api/BuildFromProject.Issue8725.html + commentId: T:BuildFromProject.Issue8725 + fullName: BuildFromProject.Issue8725 + nameWithType: Issue8725 +- uid: BuildFromProject.Issue8725.MoreOperations + name: MoreOperations() + href: api/BuildFromProject.Issue8725.html#BuildFromProject_Issue8725_MoreOperations + commentId: M:BuildFromProject.Issue8725.MoreOperations + fullName: BuildFromProject.Issue8725.MoreOperations() + nameWithType: Issue8725.MoreOperations() +- uid: BuildFromProject.Issue8725.MoreOperations* + name: MoreOperations + href: api/BuildFromProject.Issue8725.html#BuildFromProject_Issue8725_MoreOperations_ + commentId: Overload:BuildFromProject.Issue8725.MoreOperations + isSpec: "True" + fullName: BuildFromProject.Issue8725.MoreOperations + nameWithType: Issue8725.MoreOperations +- uid: BuildFromProject.Issue8725.MyOperation + name: MyOperation() + href: api/BuildFromProject.Issue8725.html#BuildFromProject_Issue8725_MyOperation + commentId: M:BuildFromProject.Issue8725.MyOperation + fullName: BuildFromProject.Issue8725.MyOperation() + nameWithType: Issue8725.MyOperation() +- uid: BuildFromProject.Issue8725.MyOperation* + name: MyOperation + href: api/BuildFromProject.Issue8725.html#BuildFromProject_Issue8725_MyOperation_ + commentId: Overload:BuildFromProject.Issue8725.MyOperation + isSpec: "True" + fullName: BuildFromProject.Issue8725.MyOperation + nameWithType: Issue8725.MyOperation +- uid: BuildFromVBSourceCode + name: BuildFromVBSourceCode + href: api/BuildFromVBSourceCode.html + commentId: N:BuildFromVBSourceCode + fullName: BuildFromVBSourceCode + nameWithType: BuildFromVBSourceCode +- uid: BuildFromVBSourceCode.BaseClass1 + name: BaseClass1 + href: api/BuildFromVBSourceCode.BaseClass1.html + commentId: T:BuildFromVBSourceCode.BaseClass1 + fullName: BuildFromVBSourceCode.BaseClass1 + nameWithType: BaseClass1 +- uid: BuildFromVBSourceCode.BaseClass1.WithDeclarationKeyword(BuildFromVBSourceCode.Class1) + name: WithDeclarationKeyword(Class1) + href: api/BuildFromVBSourceCode.BaseClass1.html#BuildFromVBSourceCode_BaseClass1_WithDeclarationKeyword_BuildFromVBSourceCode_Class1_ + commentId: M:BuildFromVBSourceCode.BaseClass1.WithDeclarationKeyword(BuildFromVBSourceCode.Class1) + fullName: BuildFromVBSourceCode.BaseClass1.WithDeclarationKeyword(BuildFromVBSourceCode.Class1) + nameWithType: BaseClass1.WithDeclarationKeyword(Class1) +- uid: BuildFromVBSourceCode.BaseClass1.WithDeclarationKeyword* + name: WithDeclarationKeyword + href: api/BuildFromVBSourceCode.BaseClass1.html#BuildFromVBSourceCode_BaseClass1_WithDeclarationKeyword_ + commentId: Overload:BuildFromVBSourceCode.BaseClass1.WithDeclarationKeyword + isSpec: "True" + fullName: BuildFromVBSourceCode.BaseClass1.WithDeclarationKeyword + nameWithType: BaseClass1.WithDeclarationKeyword +- uid: BuildFromVBSourceCode.Class1 + name: Class1 + href: api/BuildFromVBSourceCode.Class1.html + commentId: T:BuildFromVBSourceCode.Class1 + fullName: BuildFromVBSourceCode.Class1 + nameWithType: Class1 +- uid: BuildFromVBSourceCode.Class1.Keyword + name: Keyword + href: api/BuildFromVBSourceCode.Class1.html#BuildFromVBSourceCode_Class1_Keyword + commentId: P:BuildFromVBSourceCode.Class1.Keyword + fullName: BuildFromVBSourceCode.Class1.Keyword + nameWithType: Class1.Keyword +- uid: BuildFromVBSourceCode.Class1.Keyword* + name: Keyword + href: api/BuildFromVBSourceCode.Class1.html#BuildFromVBSourceCode_Class1_Keyword_ + commentId: Overload:BuildFromVBSourceCode.Class1.Keyword + isSpec: "True" + fullName: BuildFromVBSourceCode.Class1.Keyword + nameWithType: Class1.Keyword +- uid: BuildFromVBSourceCode.Class1.Value(System.String) + name: Value(string) + href: api/BuildFromVBSourceCode.Class1.html#BuildFromVBSourceCode_Class1_Value_System_String_ + commentId: M:BuildFromVBSourceCode.Class1.Value(System.String) + name.vb: Value(String) + fullName: BuildFromVBSourceCode.Class1.Value(string) + fullName.vb: BuildFromVBSourceCode.Class1.Value(String) + nameWithType: Class1.Value(string) + nameWithType.vb: Class1.Value(String) +- uid: BuildFromVBSourceCode.Class1.Value* + name: Value + href: api/BuildFromVBSourceCode.Class1.html#BuildFromVBSourceCode_Class1_Value_ + commentId: Overload:BuildFromVBSourceCode.Class1.Value + isSpec: "True" + fullName: BuildFromVBSourceCode.Class1.Value + nameWithType: Class1.Value +- uid: BuildFromVBSourceCode.Class1.ValueClass + name: ValueClass + href: api/BuildFromVBSourceCode.Class1.html#BuildFromVBSourceCode_Class1_ValueClass + commentId: F:BuildFromVBSourceCode.Class1.ValueClass + fullName: BuildFromVBSourceCode.Class1.ValueClass + nameWithType: Class1.ValueClass +- uid: BuildFromVBSourceCode.Class1.WithDeclarationKeyword(BuildFromVBSourceCode.Class1) + name: WithDeclarationKeyword(Class1) + href: api/BuildFromVBSourceCode.Class1.html#BuildFromVBSourceCode_Class1_WithDeclarationKeyword_BuildFromVBSourceCode_Class1_ + commentId: M:BuildFromVBSourceCode.Class1.WithDeclarationKeyword(BuildFromVBSourceCode.Class1) + fullName: BuildFromVBSourceCode.Class1.WithDeclarationKeyword(BuildFromVBSourceCode.Class1) + nameWithType: Class1.WithDeclarationKeyword(Class1) +- uid: BuildFromVBSourceCode.Class1.WithDeclarationKeyword* + name: WithDeclarationKeyword + href: api/BuildFromVBSourceCode.Class1.html#BuildFromVBSourceCode_Class1_WithDeclarationKeyword_ + commentId: Overload:BuildFromVBSourceCode.Class1.WithDeclarationKeyword + isSpec: "True" + fullName: BuildFromVBSourceCode.Class1.WithDeclarationKeyword + nameWithType: Class1.WithDeclarationKeyword +- uid: CatLibrary + name: CatLibrary + href: api/CatLibrary.html + commentId: N:CatLibrary + fullName: CatLibrary + nameWithType: CatLibrary +- uid: CatLibrary.CatException`1 + name: CatException<T> + href: api/CatLibrary.CatException-1.html + commentId: T:CatLibrary.CatException`1 + name.vb: CatException(Of T) + fullName: CatLibrary.CatException<T> + fullName.vb: CatLibrary.CatException(Of T) + nameWithType: CatException<T> + nameWithType.vb: CatException(Of T) +- uid: CatLibrary.Cat`2 + name: Cat<T, K> + href: api/CatLibrary.Cat-2.html + commentId: T:CatLibrary.Cat`2 + name.vb: Cat(Of T, K) + fullName: CatLibrary.Cat<T, K> + fullName.vb: CatLibrary.Cat(Of T, K) + nameWithType: Cat<T, K> + nameWithType.vb: Cat(Of T, K) +- uid: CatLibrary.Cat`2.#ctor + name: Cat() + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2__ctor + commentId: M:CatLibrary.Cat`2.#ctor + name.vb: New() + fullName: CatLibrary.Cat<T, K>.Cat() + fullName.vb: CatLibrary.Cat(Of T, K).New() + nameWithType: Cat<T, K>.Cat() + nameWithType.vb: Cat(Of T, K).New() +- uid: CatLibrary.Cat`2.#ctor(System.String,System.Int32@,System.String,System.Boolean) + name: Cat(string, out int, string, bool) + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2__ctor_System_String_System_Int32__System_String_System_Boolean_ + commentId: M:CatLibrary.Cat`2.#ctor(System.String,System.Int32@,System.String,System.Boolean) + name.vb: New(String, Integer, String, Boolean) + fullName: CatLibrary.Cat<T, K>.Cat(string, out int, string, bool) + fullName.vb: CatLibrary.Cat(Of T, K).New(String, Integer, String, Boolean) + nameWithType: Cat<T, K>.Cat(string, out int, string, bool) + nameWithType.vb: Cat(Of T, K).New(String, Integer, String, Boolean) +- uid: CatLibrary.Cat`2.#ctor(`0) + name: Cat(T) + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2__ctor__0_ + commentId: M:CatLibrary.Cat`2.#ctor(`0) + name.vb: New(T) + fullName: CatLibrary.Cat<T, K>.Cat(T) + fullName.vb: CatLibrary.Cat(Of T, K).New(T) + nameWithType: Cat<T, K>.Cat(T) + nameWithType.vb: Cat(Of T, K).New(T) +- uid: CatLibrary.Cat`2.#ctor* + name: Cat + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2__ctor_ + commentId: Overload:CatLibrary.Cat`2.#ctor + isSpec: "True" + name.vb: New + fullName: CatLibrary.Cat<T, K>.Cat + fullName.vb: CatLibrary.Cat(Of T, K).New + nameWithType: Cat<T, K>.Cat + nameWithType.vb: Cat(Of T, K).New +- uid: CatLibrary.Cat`2.Age + name: Age + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Age + commentId: P:CatLibrary.Cat`2.Age + fullName: CatLibrary.Cat<T, K>.Age + fullName.vb: CatLibrary.Cat(Of T, K).Age + nameWithType: Cat<T, K>.Age + nameWithType.vb: Cat(Of T, K).Age +- uid: CatLibrary.Cat`2.Age* + name: Age + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Age_ + commentId: Overload:CatLibrary.Cat`2.Age + isSpec: "True" + fullName: CatLibrary.Cat<T, K>.Age + fullName.vb: CatLibrary.Cat(Of T, K).Age + nameWithType: Cat<T, K>.Age + nameWithType.vb: Cat(Of T, K).Age +- uid: CatLibrary.Cat`2.CalculateFood(System.DateTime) + name: Override CalculateFood Name + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_CalculateFood_System_DateTime_ + commentId: M:CatLibrary.Cat`2.CalculateFood(System.DateTime) + name.vb: CalculateFood(Date) + fullName: CatLibrary.Cat<T, K>.CalculateFood(System.DateTime) + fullName.vb: CatLibrary.Cat(Of T, K).CalculateFood(Date) + nameWithType: Cat<T, K>.CalculateFood(DateTime) + nameWithType.vb: Cat(Of T, K).CalculateFood(Date) +- uid: CatLibrary.Cat`2.CalculateFood* + name: CalculateFood + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_CalculateFood_ + commentId: Overload:CatLibrary.Cat`2.CalculateFood + isSpec: "True" + fullName: CatLibrary.Cat<T, K>.CalculateFood + fullName.vb: CatLibrary.Cat(Of T, K).CalculateFood + nameWithType: Cat<T, K>.CalculateFood + nameWithType.vb: Cat(Of T, K).CalculateFood +- uid: CatLibrary.Cat`2.Equals(System.Object) + name: Equals(object) + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Equals_System_Object_ + commentId: M:CatLibrary.Cat`2.Equals(System.Object) + name.vb: Equals(Object) + fullName: CatLibrary.Cat<T, K>.Equals(object) + fullName.vb: CatLibrary.Cat(Of T, K).Equals(Object) + nameWithType: Cat<T, K>.Equals(object) + nameWithType.vb: Cat(Of T, K).Equals(Object) +- uid: CatLibrary.Cat`2.Equals* + name: Equals + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Equals_ + commentId: Overload:CatLibrary.Cat`2.Equals + isSpec: "True" + fullName: CatLibrary.Cat<T, K>.Equals + fullName.vb: CatLibrary.Cat(Of T, K).Equals + nameWithType: Cat<T, K>.Equals + nameWithType.vb: Cat(Of T, K).Equals +- uid: CatLibrary.Cat`2.GetTailLength(System.Int32*,System.Object[]) + name: GetTailLength(int*, params object[]) + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_GetTailLength_System_Int32__System_Object___ + commentId: M:CatLibrary.Cat`2.GetTailLength(System.Int32*,System.Object[]) + name.vb: GetTailLength(Integer*, ParamArray Object()) + fullName: CatLibrary.Cat<T, K>.GetTailLength(int*, params object[]) + fullName.vb: CatLibrary.Cat(Of T, K).GetTailLength(Integer*, ParamArray Object()) + nameWithType: Cat<T, K>.GetTailLength(int*, params object[]) + nameWithType.vb: Cat(Of T, K).GetTailLength(Integer*, ParamArray Object()) +- uid: CatLibrary.Cat`2.GetTailLength* + name: GetTailLength + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_GetTailLength_ + commentId: Overload:CatLibrary.Cat`2.GetTailLength + isSpec: "True" + fullName: CatLibrary.Cat<T, K>.GetTailLength + fullName.vb: CatLibrary.Cat(Of T, K).GetTailLength + nameWithType: Cat<T, K>.GetTailLength + nameWithType.vb: Cat(Of T, K).GetTailLength +- uid: CatLibrary.Cat`2.Item(System.String) + name: this[string] + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Item_System_String_ + commentId: P:CatLibrary.Cat`2.Item(System.String) + name.vb: this[](String) + fullName: CatLibrary.Cat<T, K>.this[string] + fullName.vb: CatLibrary.Cat(Of T, K).this[](String) + nameWithType: Cat<T, K>.this[string] + nameWithType.vb: Cat(Of T, K).this[](String) +- uid: CatLibrary.Cat`2.Item* + name: this + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Item_ + commentId: Overload:CatLibrary.Cat`2.Item + isSpec: "True" + name.vb: this[] + fullName: CatLibrary.Cat<T, K>.this + fullName.vb: CatLibrary.Cat(Of T, K).this[] + nameWithType: Cat<T, K>.this + nameWithType.vb: Cat(Of T, K).this[] +- uid: CatLibrary.Cat`2.Jump(`0,`1,System.Boolean@) + name: Jump(T, K, ref bool) + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Jump__0__1_System_Boolean__ + commentId: M:CatLibrary.Cat`2.Jump(`0,`1,System.Boolean@) + name.vb: Jump(T, K, Boolean) + fullName: CatLibrary.Cat<T, K>.Jump(T, K, ref bool) + fullName.vb: CatLibrary.Cat(Of T, K).Jump(T, K, Boolean) + nameWithType: Cat<T, K>.Jump(T, K, ref bool) + nameWithType.vb: Cat(Of T, K).Jump(T, K, Boolean) +- uid: CatLibrary.Cat`2.Jump* + name: Jump + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Jump_ + commentId: Overload:CatLibrary.Cat`2.Jump + isSpec: "True" + fullName: CatLibrary.Cat<T, K>.Jump + fullName.vb: CatLibrary.Cat(Of T, K).Jump + nameWithType: Cat<T, K>.Jump + nameWithType.vb: Cat(Of T, K).Jump +- uid: CatLibrary.Cat`2.Name + name: Name + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Name + commentId: P:CatLibrary.Cat`2.Name + fullName: CatLibrary.Cat<T, K>.Name + fullName.vb: CatLibrary.Cat(Of T, K).Name + nameWithType: Cat<T, K>.Name + nameWithType.vb: Cat(Of T, K).Name +- uid: CatLibrary.Cat`2.Name* + name: Name + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_Name_ + commentId: Overload:CatLibrary.Cat`2.Name + isSpec: "True" + fullName: CatLibrary.Cat<T, K>.Name + fullName.vb: CatLibrary.Cat(Of T, K).Name + nameWithType: Cat<T, K>.Name + nameWithType.vb: Cat(Of T, K).Name +- uid: CatLibrary.Cat`2.isHealthy + name: isHealthy + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_isHealthy + commentId: F:CatLibrary.Cat`2.isHealthy + fullName: CatLibrary.Cat<T, K>.isHealthy + fullName.vb: CatLibrary.Cat(Of T, K).isHealthy + nameWithType: Cat<T, K>.isHealthy + nameWithType.vb: Cat(Of T, K).isHealthy +- uid: CatLibrary.Cat`2.op_Addition(CatLibrary.Cat{`0,`1},System.Int32) + name: operator +(Cat<T, K>, int) + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_op_Addition_CatLibrary_Cat__0__1__System_Int32_ + commentId: M:CatLibrary.Cat`2.op_Addition(CatLibrary.Cat{`0,`1},System.Int32) + name.vb: +(Cat(Of T, K), Integer) + fullName: CatLibrary.Cat<T, K>.operator +(CatLibrary.Cat<T, K>, int) + fullName.vb: CatLibrary.Cat(Of T, K).+(CatLibrary.Cat(Of T, K), Integer) + nameWithType: Cat<T, K>.operator +(Cat<T, K>, int) + nameWithType.vb: Cat(Of T, K).+(Cat(Of T, K), Integer) +- uid: CatLibrary.Cat`2.op_Addition* + name: operator + + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_op_Addition_ + commentId: Overload:CatLibrary.Cat`2.op_Addition + isSpec: "True" + name.vb: + + fullName: CatLibrary.Cat<T, K>.operator + + fullName.vb: CatLibrary.Cat(Of T, K).+ + nameWithType: Cat<T, K>.operator + + nameWithType.vb: Cat(Of T, K).+ +- uid: CatLibrary.Cat`2.op_Explicit(CatLibrary.Cat{`0,`1})~CatLibrary.Tom + name: explicit operator Tom(Cat<T, K>) + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_op_Explicit_CatLibrary_Cat__0__1___CatLibrary_Tom + commentId: M:CatLibrary.Cat`2.op_Explicit(CatLibrary.Cat{`0,`1})~CatLibrary.Tom + name.vb: CType(Cat(Of T, K)) + fullName: CatLibrary.Cat<T, K>.explicit operator CatLibrary.Tom(CatLibrary.Cat<T, K>) + fullName.vb: CatLibrary.Cat(Of T, K).CType(CatLibrary.Cat(Of T, K)) + nameWithType: Cat<T, K>.explicit operator Tom(Cat<T, K>) + nameWithType.vb: Cat(Of T, K).CType(Cat(Of T, K)) +- uid: CatLibrary.Cat`2.op_Explicit* + name: explicit operator + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_op_Explicit_ + commentId: Overload:CatLibrary.Cat`2.op_Explicit + isSpec: "True" + name.vb: CType + fullName: CatLibrary.Cat<T, K>.explicit operator + fullName.vb: CatLibrary.Cat(Of T, K).CType + nameWithType: Cat<T, K>.explicit operator + nameWithType.vb: Cat(Of T, K).CType +- uid: CatLibrary.Cat`2.op_Subtraction(CatLibrary.Cat{`0,`1},System.Int32) + name: operator -(Cat<T, K>, int) + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_op_Subtraction_CatLibrary_Cat__0__1__System_Int32_ + commentId: M:CatLibrary.Cat`2.op_Subtraction(CatLibrary.Cat{`0,`1},System.Int32) + name.vb: -(Cat(Of T, K), Integer) + fullName: CatLibrary.Cat<T, K>.operator -(CatLibrary.Cat<T, K>, int) + fullName.vb: CatLibrary.Cat(Of T, K).-(CatLibrary.Cat(Of T, K), Integer) + nameWithType: Cat<T, K>.operator -(Cat<T, K>, int) + nameWithType.vb: Cat(Of T, K).-(Cat(Of T, K), Integer) +- uid: CatLibrary.Cat`2.op_Subtraction* + name: operator - + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_op_Subtraction_ + commentId: Overload:CatLibrary.Cat`2.op_Subtraction + isSpec: "True" + name.vb: '-' + fullName: CatLibrary.Cat<T, K>.operator - + fullName.vb: CatLibrary.Cat(Of T, K).- + nameWithType: Cat<T, K>.operator - + nameWithType.vb: Cat(Of T, K).- +- uid: CatLibrary.Cat`2.ownEat + name: ownEat + href: api/CatLibrary.Cat-2.html#CatLibrary_Cat_2_ownEat + commentId: E:CatLibrary.Cat`2.ownEat + fullName: CatLibrary.Cat<T, K>.ownEat + fullName.vb: CatLibrary.Cat(Of T, K).ownEat + nameWithType: Cat<T, K>.ownEat + nameWithType.vb: Cat(Of T, K).ownEat +- uid: CatLibrary.Complex`2 + name: Complex<T, J> + href: api/CatLibrary.Complex-2.html + commentId: T:CatLibrary.Complex`2 + name.vb: Complex(Of T, J) + fullName: CatLibrary.Complex<T, J> + fullName.vb: CatLibrary.Complex(Of T, J) + nameWithType: Complex<T, J> + nameWithType.vb: Complex(Of T, J) +- uid: CatLibrary.Core + name: CatLibrary.Core + href: api/CatLibrary.Core.html + commentId: N:CatLibrary.Core + fullName: CatLibrary.Core + nameWithType: CatLibrary.Core +- uid: CatLibrary.Core.ContainersRefType + name: ContainersRefType + href: api/CatLibrary.Core.ContainersRefType.html + commentId: T:CatLibrary.Core.ContainersRefType + fullName: CatLibrary.Core.ContainersRefType + nameWithType: ContainersRefType +- uid: CatLibrary.Core.ContainersRefType.ColorCount + name: ColorCount + href: api/CatLibrary.Core.ContainersRefType.html#CatLibrary_Core_ContainersRefType_ColorCount + commentId: F:CatLibrary.Core.ContainersRefType.ColorCount + fullName: CatLibrary.Core.ContainersRefType.ColorCount + nameWithType: ContainersRefType.ColorCount +- uid: CatLibrary.Core.ContainersRefType.ColorType + name: ContainersRefType.ColorType + href: api/CatLibrary.Core.ContainersRefType.ColorType.html + commentId: T:CatLibrary.Core.ContainersRefType.ColorType + fullName: CatLibrary.Core.ContainersRefType.ColorType + nameWithType: ContainersRefType.ColorType +- uid: CatLibrary.Core.ContainersRefType.ColorType.Blue + name: Blue + href: api/CatLibrary.Core.ContainersRefType.ColorType.html#CatLibrary_Core_ContainersRefType_ColorType_Blue + commentId: F:CatLibrary.Core.ContainersRefType.ColorType.Blue + fullName: CatLibrary.Core.ContainersRefType.ColorType.Blue + nameWithType: ContainersRefType.ColorType.Blue +- uid: CatLibrary.Core.ContainersRefType.ColorType.Red + name: Red + href: api/CatLibrary.Core.ContainersRefType.ColorType.html#CatLibrary_Core_ContainersRefType_ColorType_Red + commentId: F:CatLibrary.Core.ContainersRefType.ColorType.Red + fullName: CatLibrary.Core.ContainersRefType.ColorType.Red + nameWithType: ContainersRefType.ColorType.Red +- uid: CatLibrary.Core.ContainersRefType.ColorType.Yellow + name: Yellow + href: api/CatLibrary.Core.ContainersRefType.ColorType.html#CatLibrary_Core_ContainersRefType_ColorType_Yellow + commentId: F:CatLibrary.Core.ContainersRefType.ColorType.Yellow + fullName: CatLibrary.Core.ContainersRefType.ColorType.Yellow + nameWithType: ContainersRefType.ColorType.Yellow +- uid: CatLibrary.Core.ContainersRefType.ContainersRefTypeChild + name: ContainersRefType.ContainersRefTypeChild + href: api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html + commentId: T:CatLibrary.Core.ContainersRefType.ContainersRefTypeChild + fullName: CatLibrary.Core.ContainersRefType.ContainersRefTypeChild + nameWithType: ContainersRefType.ContainersRefTypeChild +- uid: CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface + name: ContainersRefType.ContainersRefTypeChildInterface + href: api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html + commentId: T:CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface + fullName: CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface + nameWithType: ContainersRefType.ContainersRefTypeChildInterface +- uid: CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate + name: ContainersRefType.ContainersRefTypeDelegate + href: api/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html + commentId: T:CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate + fullName: CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate + nameWithType: ContainersRefType.ContainersRefTypeDelegate +- uid: CatLibrary.Core.ContainersRefType.ContainersRefTypeEventHandler + name: ContainersRefTypeEventHandler + href: api/CatLibrary.Core.ContainersRefType.html#CatLibrary_Core_ContainersRefType_ContainersRefTypeEventHandler + commentId: E:CatLibrary.Core.ContainersRefType.ContainersRefTypeEventHandler + fullName: CatLibrary.Core.ContainersRefType.ContainersRefTypeEventHandler + nameWithType: ContainersRefType.ContainersRefTypeEventHandler +- uid: CatLibrary.Core.ContainersRefType.ContainersRefTypeNonRefMethod(System.Object[]) + name: ContainersRefTypeNonRefMethod(params object[]) + href: api/CatLibrary.Core.ContainersRefType.html#CatLibrary_Core_ContainersRefType_ContainersRefTypeNonRefMethod_System_Object___ + commentId: M:CatLibrary.Core.ContainersRefType.ContainersRefTypeNonRefMethod(System.Object[]) + name.vb: ContainersRefTypeNonRefMethod(ParamArray Object()) + fullName: CatLibrary.Core.ContainersRefType.ContainersRefTypeNonRefMethod(params object[]) + fullName.vb: CatLibrary.Core.ContainersRefType.ContainersRefTypeNonRefMethod(ParamArray Object()) + nameWithType: ContainersRefType.ContainersRefTypeNonRefMethod(params object[]) + nameWithType.vb: ContainersRefType.ContainersRefTypeNonRefMethod(ParamArray Object()) +- uid: CatLibrary.Core.ContainersRefType.ContainersRefTypeNonRefMethod* + name: ContainersRefTypeNonRefMethod + href: api/CatLibrary.Core.ContainersRefType.html#CatLibrary_Core_ContainersRefType_ContainersRefTypeNonRefMethod_ + commentId: Overload:CatLibrary.Core.ContainersRefType.ContainersRefTypeNonRefMethod + isSpec: "True" + fullName: CatLibrary.Core.ContainersRefType.ContainersRefTypeNonRefMethod + nameWithType: ContainersRefType.ContainersRefTypeNonRefMethod +- uid: CatLibrary.Core.ContainersRefType.GetColorCount + name: GetColorCount + href: api/CatLibrary.Core.ContainersRefType.html#CatLibrary_Core_ContainersRefType_GetColorCount + commentId: P:CatLibrary.Core.ContainersRefType.GetColorCount + fullName: CatLibrary.Core.ContainersRefType.GetColorCount + nameWithType: ContainersRefType.GetColorCount +- uid: CatLibrary.Core.ContainersRefType.GetColorCount* + name: GetColorCount + href: api/CatLibrary.Core.ContainersRefType.html#CatLibrary_Core_ContainersRefType_GetColorCount_ + commentId: Overload:CatLibrary.Core.ContainersRefType.GetColorCount + isSpec: "True" + fullName: CatLibrary.Core.ContainersRefType.GetColorCount + nameWithType: ContainersRefType.GetColorCount +- uid: CatLibrary.Core.ExplicitLayoutClass + name: ExplicitLayoutClass + href: api/CatLibrary.Core.ExplicitLayoutClass.html + commentId: T:CatLibrary.Core.ExplicitLayoutClass + fullName: CatLibrary.Core.ExplicitLayoutClass + nameWithType: ExplicitLayoutClass +- uid: CatLibrary.Core.Issue231 + name: Issue231 + href: api/CatLibrary.Core.Issue231.html + commentId: T:CatLibrary.Core.Issue231 + fullName: CatLibrary.Core.Issue231 + nameWithType: Issue231 +- uid: CatLibrary.Core.Issue231.Bar(CatLibrary.Core.ContainersRefType) + name: Bar(ContainersRefType) + href: api/CatLibrary.Core.Issue231.html#CatLibrary_Core_Issue231_Bar_CatLibrary_Core_ContainersRefType_ + commentId: M:CatLibrary.Core.Issue231.Bar(CatLibrary.Core.ContainersRefType) + fullName: CatLibrary.Core.Issue231.Bar(CatLibrary.Core.ContainersRefType) + nameWithType: Issue231.Bar(ContainersRefType) +- uid: CatLibrary.Core.Issue231.Bar* + name: Bar + href: api/CatLibrary.Core.Issue231.html#CatLibrary_Core_Issue231_Bar_ + commentId: Overload:CatLibrary.Core.Issue231.Bar + isSpec: "True" + fullName: CatLibrary.Core.Issue231.Bar + nameWithType: Issue231.Bar +- uid: CatLibrary.Core.Issue231.Foo(CatLibrary.Core.ContainersRefType) + name: Foo(ContainersRefType) + href: api/CatLibrary.Core.Issue231.html#CatLibrary_Core_Issue231_Foo_CatLibrary_Core_ContainersRefType_ + commentId: M:CatLibrary.Core.Issue231.Foo(CatLibrary.Core.ContainersRefType) + fullName: CatLibrary.Core.Issue231.Foo(CatLibrary.Core.ContainersRefType) + nameWithType: Issue231.Foo(ContainersRefType) +- uid: CatLibrary.Core.Issue231.Foo* + name: Foo + href: api/CatLibrary.Core.Issue231.html#CatLibrary_Core_Issue231_Foo_ + commentId: Overload:CatLibrary.Core.Issue231.Foo + isSpec: "True" + fullName: CatLibrary.Core.Issue231.Foo + nameWithType: Issue231.Foo +- uid: CatLibrary.FakeDelegate`1 + name: FakeDelegate<T> + href: api/CatLibrary.FakeDelegate-1.html + commentId: T:CatLibrary.FakeDelegate`1 + name.vb: FakeDelegate(Of T) + fullName: CatLibrary.FakeDelegate<T> + fullName.vb: CatLibrary.FakeDelegate(Of T) + nameWithType: FakeDelegate<T> + nameWithType.vb: FakeDelegate(Of T) +- uid: CatLibrary.IAnimal + name: IAnimal + href: api/CatLibrary.IAnimal.html + commentId: T:CatLibrary.IAnimal + fullName: CatLibrary.IAnimal + nameWithType: IAnimal +- uid: CatLibrary.IAnimal.Eat + name: Eat() + href: api/CatLibrary.IAnimal.html#CatLibrary_IAnimal_Eat + commentId: M:CatLibrary.IAnimal.Eat + fullName: CatLibrary.IAnimal.Eat() + nameWithType: IAnimal.Eat() +- uid: CatLibrary.IAnimal.Eat(System.String) + name: Eat(string) + href: api/CatLibrary.IAnimal.html#CatLibrary_IAnimal_Eat_System_String_ + commentId: M:CatLibrary.IAnimal.Eat(System.String) + name.vb: Eat(String) + fullName: CatLibrary.IAnimal.Eat(string) + fullName.vb: CatLibrary.IAnimal.Eat(String) + nameWithType: IAnimal.Eat(string) + nameWithType.vb: IAnimal.Eat(String) +- uid: CatLibrary.IAnimal.Eat* + name: Eat + href: api/CatLibrary.IAnimal.html#CatLibrary_IAnimal_Eat_ + commentId: Overload:CatLibrary.IAnimal.Eat + isSpec: "True" + fullName: CatLibrary.IAnimal.Eat + nameWithType: IAnimal.Eat +- uid: CatLibrary.IAnimal.Eat``1(``0) + name: Eat<Tool>(Tool) + href: api/CatLibrary.IAnimal.html#CatLibrary_IAnimal_Eat__1___0_ + commentId: M:CatLibrary.IAnimal.Eat``1(``0) + name.vb: Eat(Of Tool)(Tool) + fullName: CatLibrary.IAnimal.Eat<Tool>(Tool) + fullName.vb: CatLibrary.IAnimal.Eat(Of Tool)(Tool) + nameWithType: IAnimal.Eat<Tool>(Tool) + nameWithType.vb: IAnimal.Eat(Of Tool)(Tool) +- uid: CatLibrary.IAnimal.Item(System.Int32) + name: this[int] + href: api/CatLibrary.IAnimal.html#CatLibrary_IAnimal_Item_System_Int32_ + commentId: P:CatLibrary.IAnimal.Item(System.Int32) + name.vb: this[](Integer) + fullName: CatLibrary.IAnimal.this[int] + fullName.vb: CatLibrary.IAnimal.this[](Integer) + nameWithType: IAnimal.this[int] + nameWithType.vb: IAnimal.this[](Integer) +- uid: CatLibrary.IAnimal.Item* + name: this + href: api/CatLibrary.IAnimal.html#CatLibrary_IAnimal_Item_ + commentId: Overload:CatLibrary.IAnimal.Item + isSpec: "True" + name.vb: this[] + fullName: CatLibrary.IAnimal.this + fullName.vb: CatLibrary.IAnimal.this[] + nameWithType: IAnimal.this + nameWithType.vb: IAnimal.this[] +- uid: CatLibrary.IAnimal.Name + name: Name + href: api/CatLibrary.IAnimal.html#CatLibrary_IAnimal_Name + commentId: P:CatLibrary.IAnimal.Name + fullName: CatLibrary.IAnimal.Name + nameWithType: IAnimal.Name +- uid: CatLibrary.IAnimal.Name* + name: Name + href: api/CatLibrary.IAnimal.html#CatLibrary_IAnimal_Name_ + commentId: Overload:CatLibrary.IAnimal.Name + isSpec: "True" + fullName: CatLibrary.IAnimal.Name + nameWithType: IAnimal.Name +- uid: CatLibrary.ICat + name: ICat + href: api/CatLibrary.ICat.html + commentId: T:CatLibrary.ICat + fullName: CatLibrary.ICat + nameWithType: ICat +- uid: CatLibrary.ICat.eat + name: eat + href: api/CatLibrary.ICat.html#CatLibrary_ICat_eat + commentId: E:CatLibrary.ICat.eat + fullName: CatLibrary.ICat.eat + nameWithType: ICat.eat +- uid: CatLibrary.ICatExtension + name: ICatExtension + href: api/CatLibrary.ICatExtension.html + commentId: T:CatLibrary.ICatExtension + fullName: CatLibrary.ICatExtension + nameWithType: ICatExtension +- uid: CatLibrary.ICatExtension.Play(CatLibrary.ICat,CatLibrary.Core.ContainersRefType.ColorType) + name: Play(ICat, ColorType) + href: api/CatLibrary.ICatExtension.html#CatLibrary_ICatExtension_Play_CatLibrary_ICat_CatLibrary_Core_ContainersRefType_ColorType_ + commentId: M:CatLibrary.ICatExtension.Play(CatLibrary.ICat,CatLibrary.Core.ContainersRefType.ColorType) + fullName: CatLibrary.ICatExtension.Play(CatLibrary.ICat, CatLibrary.Core.ContainersRefType.ColorType) + nameWithType: ICatExtension.Play(ICat, ContainersRefType.ColorType) +- uid: CatLibrary.ICatExtension.Play* + name: Play + href: api/CatLibrary.ICatExtension.html#CatLibrary_ICatExtension_Play_ + commentId: Overload:CatLibrary.ICatExtension.Play + isSpec: "True" + fullName: CatLibrary.ICatExtension.Play + nameWithType: ICatExtension.Play +- uid: CatLibrary.ICatExtension.Sleep(CatLibrary.ICat,System.Int64) + name: Sleep(ICat, long) + href: api/CatLibrary.ICatExtension.html#CatLibrary_ICatExtension_Sleep_CatLibrary_ICat_System_Int64_ + commentId: M:CatLibrary.ICatExtension.Sleep(CatLibrary.ICat,System.Int64) + name.vb: Sleep(ICat, Long) + fullName: CatLibrary.ICatExtension.Sleep(CatLibrary.ICat, long) + fullName.vb: CatLibrary.ICatExtension.Sleep(CatLibrary.ICat, Long) + nameWithType: ICatExtension.Sleep(ICat, long) + nameWithType.vb: ICatExtension.Sleep(ICat, Long) +- uid: CatLibrary.ICatExtension.Sleep* + name: Sleep + href: api/CatLibrary.ICatExtension.html#CatLibrary_ICatExtension_Sleep_ + commentId: Overload:CatLibrary.ICatExtension.Sleep + isSpec: "True" + fullName: CatLibrary.ICatExtension.Sleep + nameWithType: ICatExtension.Sleep +- uid: CatLibrary.MRefDelegate`3 + name: MRefDelegate<K, T, L> + href: api/CatLibrary.MRefDelegate-3.html + commentId: T:CatLibrary.MRefDelegate`3 + name.vb: MRefDelegate(Of K, T, L) + fullName: CatLibrary.MRefDelegate<K, T, L> + fullName.vb: CatLibrary.MRefDelegate(Of K, T, L) + nameWithType: MRefDelegate<K, T, L> + nameWithType.vb: MRefDelegate(Of K, T, L) +- uid: CatLibrary.MRefNormalDelegate + name: MRefNormalDelegate + href: api/CatLibrary.MRefNormalDelegate.html + commentId: T:CatLibrary.MRefNormalDelegate + fullName: CatLibrary.MRefNormalDelegate + nameWithType: MRefNormalDelegate +- uid: CatLibrary.Tom + name: Tom + href: api/CatLibrary.Tom.html + commentId: T:CatLibrary.Tom + fullName: CatLibrary.Tom + nameWithType: Tom +- uid: CatLibrary.Tom.TomMethod(CatLibrary.Complex{CatLibrary.TomFromBaseClass,CatLibrary.TomFromBaseClass},System.Tuple{System.String,CatLibrary.Tom}) + name: TomMethod(Complex<TomFromBaseClass, TomFromBaseClass>, Tuple<string, Tom>) + href: api/CatLibrary.Tom.html#CatLibrary_Tom_TomMethod_CatLibrary_Complex_CatLibrary_TomFromBaseClass_CatLibrary_TomFromBaseClass__System_Tuple_System_String_CatLibrary_Tom__ + commentId: M:CatLibrary.Tom.TomMethod(CatLibrary.Complex{CatLibrary.TomFromBaseClass,CatLibrary.TomFromBaseClass},System.Tuple{System.String,CatLibrary.Tom}) + name.vb: TomMethod(Complex(Of TomFromBaseClass, TomFromBaseClass), Tuple(Of String, Tom)) + fullName: CatLibrary.Tom.TomMethod(CatLibrary.Complex<CatLibrary.TomFromBaseClass, CatLibrary.TomFromBaseClass>, System.Tuple<string, CatLibrary.Tom>) + fullName.vb: CatLibrary.Tom.TomMethod(CatLibrary.Complex(Of CatLibrary.TomFromBaseClass, CatLibrary.TomFromBaseClass), System.Tuple(Of String, CatLibrary.Tom)) + nameWithType: Tom.TomMethod(Complex<TomFromBaseClass, TomFromBaseClass>, Tuple<string, Tom>) + nameWithType.vb: Tom.TomMethod(Complex(Of TomFromBaseClass, TomFromBaseClass), Tuple(Of String, Tom)) +- uid: CatLibrary.Tom.TomMethod* + name: TomMethod + href: api/CatLibrary.Tom.html#CatLibrary_Tom_TomMethod_ + commentId: Overload:CatLibrary.Tom.TomMethod + isSpec: "True" + fullName: CatLibrary.Tom.TomMethod + nameWithType: Tom.TomMethod +- uid: CatLibrary.TomFromBaseClass + name: TomFromBaseClass + href: api/CatLibrary.TomFromBaseClass.html + commentId: T:CatLibrary.TomFromBaseClass + fullName: CatLibrary.TomFromBaseClass + nameWithType: TomFromBaseClass +- uid: CatLibrary.TomFromBaseClass.#ctor(System.Int32) + name: TomFromBaseClass(int) + href: api/CatLibrary.TomFromBaseClass.html#CatLibrary_TomFromBaseClass__ctor_System_Int32_ + commentId: M:CatLibrary.TomFromBaseClass.#ctor(System.Int32) + name.vb: New(Integer) + fullName: CatLibrary.TomFromBaseClass.TomFromBaseClass(int) + fullName.vb: CatLibrary.TomFromBaseClass.New(Integer) + nameWithType: TomFromBaseClass.TomFromBaseClass(int) + nameWithType.vb: TomFromBaseClass.New(Integer) +- uid: CatLibrary.TomFromBaseClass.#ctor* + name: TomFromBaseClass + href: api/CatLibrary.TomFromBaseClass.html#CatLibrary_TomFromBaseClass__ctor_ + commentId: Overload:CatLibrary.TomFromBaseClass.#ctor + isSpec: "True" + name.vb: New + fullName: CatLibrary.TomFromBaseClass.TomFromBaseClass + fullName.vb: CatLibrary.TomFromBaseClass.New + nameWithType: TomFromBaseClass.TomFromBaseClass + nameWithType.vb: TomFromBaseClass.New +- uid: MRef.Demo.Enumeration + name: MRef.Demo.Enumeration + href: api/MRef.Demo.Enumeration.html + commentId: N:MRef.Demo.Enumeration + fullName: MRef.Demo.Enumeration + nameWithType: MRef.Demo.Enumeration +- uid: MRef.Demo.Enumeration.ColorType + name: ColorType + href: api/MRef.Demo.Enumeration.ColorType.html + commentId: T:MRef.Demo.Enumeration.ColorType + fullName: MRef.Demo.Enumeration.ColorType + nameWithType: ColorType +- uid: MRef.Demo.Enumeration.ColorType.Blue + name: Blue + href: api/MRef.Demo.Enumeration.ColorType.html#MRef_Demo_Enumeration_ColorType_Blue + commentId: F:MRef.Demo.Enumeration.ColorType.Blue + fullName: MRef.Demo.Enumeration.ColorType.Blue + nameWithType: ColorType.Blue +- uid: MRef.Demo.Enumeration.ColorType.Red + name: Red + href: api/MRef.Demo.Enumeration.ColorType.html#MRef_Demo_Enumeration_ColorType_Red + commentId: F:MRef.Demo.Enumeration.ColorType.Red + fullName: MRef.Demo.Enumeration.ColorType.Red + nameWithType: ColorType.Red +- uid: MRef.Demo.Enumeration.ColorType.Yellow + name: Yellow + href: api/MRef.Demo.Enumeration.ColorType.html#MRef_Demo_Enumeration_ColorType_Yellow + commentId: F:MRef.Demo.Enumeration.ColorType.Yellow + fullName: MRef.Demo.Enumeration.ColorType.Yellow + nameWithType: ColorType.Yellow +- uid: graph.windows.net/myorganization/Contacts/1.6 + name: Contacts + href: restapi/contacts.html +- uid: graph.windows.net/myorganization/Contacts/1.6/delete contact + name: delete contact + href: restapi/contacts.html#graph_windows_net_myorganization_Contacts_1_6_delete_contact +- uid: graph.windows.net/myorganization/Contacts/1.6/delete contact manager by id + name: delete contact manager by id + href: restapi/contacts.html#graph_windows_net_myorganization_Contacts_1_6_delete_contact_manager_by_id +- uid: graph.windows.net/myorganization/Contacts/1.6/get contact by id + name: get contact by id + href: restapi/contacts.html#graph_windows_net_myorganization_Contacts_1_6_get_contact_by_id +- uid: graph.windows.net/myorganization/Contacts/1.6/get contact direct reports links + name: get contact direct reports links + href: restapi/contacts.html#graph_windows_net_myorganization_Contacts_1_6_get_contact_direct_reports_links +- uid: graph.windows.net/myorganization/Contacts/1.6/get contact manager link + name: get contact manager link + href: restapi/contacts.html#graph_windows_net_myorganization_Contacts_1_6_get_contact_manager_link +- uid: graph.windows.net/myorganization/Contacts/1.6/get contact memberOf links + name: get contact memberOf links + href: restapi/contacts.html#graph_windows_net_myorganization_Contacts_1_6_get_contact_memberOf_links +- uid: graph.windows.net/myorganization/Contacts/1.6/get contacts + name: get contacts + href: restapi/contacts.html#graph_windows_net_myorganization_Contacts_1_6_get_contacts +- uid: graph.windows.net/myorganization/Contacts/1.6/update contact + name: update contact + href: restapi/contacts.html#graph_windows_net_myorganization_Contacts_1_6_update_contact +- uid: graph.windows.net/myorganization/Contacts/1.6/update contact manager + name: update contact manager + href: restapi/contacts.html#graph_windows_net_myorganization_Contacts_1_6_update_contact_manager +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0 + name: Swagger Petstore + href: restapi/petstore.html +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/addPet + name: addPet + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_addPet +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/createUser + name: createUser + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_createUser +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/createUsersWithArrayInput + name: createUsersWithArrayInput + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_createUsersWithArrayInput +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/createUsersWithListInput + name: createUsersWithListInput + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_createUsersWithListInput +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/deleteOrder + name: deleteOrder + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_deleteOrder +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/deletePet + name: deletePet + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_deletePet +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/deleteUser + name: deleteUser + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_deleteUser +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/findPetsByStatus + name: findPetsByStatus + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_findPetsByStatus +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/findPetsByTags + name: findPetsByTags + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_findPetsByTags +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/getInventory + name: getInventory + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getInventory +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/getOrderById + name: getOrderById + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getOrderById +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/getPetById + name: getPetById + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getPetById +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/getUserByName + name: getUserByName + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getUserByName +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/loginUser + name: loginUser + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_loginUser +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/logoutUser + name: logoutUser + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_logoutUser +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/placeOrder + name: placeOrder + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_placeOrder +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/tag/pet + name: pet + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_tag_pet +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/tag/store + name: store + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_tag_store +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/tag/user + name: user + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_tag_user +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/updatePet + name: updatePet + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_updatePet +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/updatePetWithForm + name: updatePetWithForm + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_updatePetWithForm +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/updateUser + name: updateUser + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_updateUser +- uid: petstore.swagger.io/v2/Swagger Petstore/1.0.0/uploadFile + name: uploadFile + href: restapi/petstore.html#petstore_swagger_io_v2_Swagger_Petstore_1_0_0_uploadFile diff --git a/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_02.json b/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_02.json new file mode 100644 index 00000000000..630e2c33f23 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_02.json @@ -0,0 +1,19 @@ +{ + "sorted": true, + "hrefUpdated": false, + "baseUrl": "http://localhost", + "redirections": [ + { + "uidPrefix": "dummy", + "href": "dummy" + } + ], + "references": [ + { + "dummy1": "dummy1", + "uid": "dummy", + "href": "dummy" + } + ], + "dummy": "dummy" +} diff --git a/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_02.yml b/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_02.yml new file mode 100644 index 00000000000..56f418cd9b4 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/TestData/XRefMap/xrefmap_02.yml @@ -0,0 +1,11 @@ +sorted: "true" +hrefUpdated: "false" +baseUrl: "http://localhost" +redirections: +- uidPrefix: "dummy" + href: "dummy" +references: +- dummy1: "dummy1" + uid: "dummy" + href: "dummy" +dummy: "dummy" diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.ApiPage.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.ApiPage.cs new file mode 100644 index 00000000000..c0db0066478 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.ApiPage.cs @@ -0,0 +1,84 @@ +// 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 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 +{ + [Theory] + [TestData<ApiPage>] + public void YamlSerializationTest_ApiPage(string path) + { + // Arrange + var model = LoadApiPage(path); // Note: Loading ApiPage YAML file requires custom logics. + + // Act/Assert + ValidateApiPageRoundTrip(model); + } + + /// <summary> + /// + /// </summary> + 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 + var model = deserializer.Deserialize<Dictionary<object, object>>(File.ReadAllText(path)); + var json = JsonSerializer.Serialize(model); + return JsonSerializer.Deserialize<ApiPage>(json, ApiPage.JsonSerializerOptions); + } + + private static void ValidateApiPageRoundTrip(ApiPage model) + { + // Act + var yaml = ToYaml(model); + var result = ToApiPage(yaml); + + // Assert + + // ApiPage model can't be validated with `BeEquivalentTo` (See: https://github.com/dotnet/docfx/pull/10232) + // So compare serialized YAML contents. + ToYaml(result).Should().Be(yaml); + } + + 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); + + using var writer = new StringWriter(); + YamlUtility.Serialize(writer, obj, "YamlMime:ApiPage"); + return writer.ToString(); + } + + private static ApiPage ToApiPage(string yaml) + { + var deserializer = new DeserializerBuilder().WithAttemptingUnquotedStringTypeDeserialization().Build(); + var dict = deserializer.Deserialize<Dictionary<object, object>>(new StringReader(yaml)); + var json = JsonSerializer.Serialize(dict); + return JsonSerializer.Deserialize<ApiPage>(json, ApiPage.JsonSerializerOptions); + } +} diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.FilterConfig.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.FilterConfig.cs new file mode 100644 index 00000000000..01654be228b --- /dev/null +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.FilterConfig.cs @@ -0,0 +1,29 @@ +// 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; + +public partial class YamlSerializationTest +{ + [Theory] + [TestData<ConfigFilterRule>] + public void YamlSerializationTest_FilterConfig(string path) + { + // Arrange + var model = TestData.Load<ConfigFilterRule>(path); + + // Act/Assert + ValidateYamlRoundTrip(model); + + // ConfigFilterRule don't support JSON serialization/deserialization + // ValidateYamlJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.ManagedReference.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.ManagedReference.cs new file mode 100644 index 00000000000..3012c8a890f --- /dev/null +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.ManagedReference.cs @@ -0,0 +1,24 @@ +// 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; + +public partial class YamlSerializationTest +{ + [Theory] + [TestData<PageViewModel>] + public void YamlSerializationTest_ManagedReference(string path) + { + // Arrange + var model = TestData.Load<PageViewModel>(path); + + // Act/Assert + ValidateYamlRoundTrip(model); + ValidateYamlJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.TocItemViewModel.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.TocItemViewModel.cs new file mode 100644 index 00000000000..ac3d4b47bfa --- /dev/null +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.TocItemViewModel.cs @@ -0,0 +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 Docfx.Build.ApiPage; +using Docfx.DataContracts.Common; +using FluentAssertions; + +namespace docfx.Tests; + +public partial class YamlSerializationTest +{ + [Theory] + [TestData<TocItemViewModel>] + public void YamlSerializationTest_TocItemViewModel(string path) + { + // Arrange + var model = TestData.Load<TocItemViewModel>(path); + + // Act/Assert + ValidateYamlRoundTrip(model); + ValidateYamlJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.UniversalReference.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.UniversalReference.cs new file mode 100644 index 00000000000..2920741e685 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.UniversalReference.cs @@ -0,0 +1,24 @@ +// 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; + +public partial class YamlSerializationTest +{ + [Theory] + [TestData<PageViewModel>] + public void YamlSerializationTest_Universal(string path) + { + // Arrange + var model = TestData.Load<PageViewModel>(path); + + // Act/Assert + ValidateYamlRoundTrip(model); + ValidateYamlJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.XRefMap.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.XRefMap.cs new file mode 100644 index 00000000000..68bc961a423 --- /dev/null +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.XRefMap.cs @@ -0,0 +1,32 @@ +// 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; + +public partial class YamlSerializationTest +{ + [Theory] + [TestData<XRefMap>] + public void YamlSerializationTest_XRefMap(string path) + { + // Arrange + var model = TestData.Load<XRefMap>(path); + + // Act/Assert + ValidateYamlRoundTrip(model); + ValidateYamlJsonRoundTrip(model); + } +} diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.cs new file mode 100644 index 00000000000..96088759bcb --- /dev/null +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.cs @@ -0,0 +1,64 @@ +// 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.Common; +using Docfx.YamlSerialization; +using FluentAssertions; +using FluentAssertions.Equivalency; +namespace docfx.Tests; + +public partial class YamlSerializationTest +{ + private static readonly ThreadLocal<YamlSerializer> YamlJsonSerializer = new(() => new YamlSerializer(SerializationOptions.JsonCompatible | SerializationOptions.DisableAliases)); + + /// <summary> + /// Helper method to validate serialize/deserialize results. + /// </summary> + protected void ValidateYamlRoundTrip<T>(T model) + { + // Act + using var writer = new StringWriter(); + YamlUtility.Serialize(writer, model); + var yaml = writer.ToString(); + + var result = YamlUtility.Deserialize<T>(new StringReader(yaml)); + + // Assert + result.Should().BeEquivalentTo(model); + } + + /// <summary> + /// Helper method to validate serialize/deserialize results. + /// </summary> + protected void ValidateYamlJsonRoundTrip<T>(T model) + { + // 1. Serialize to JSON with YamlDotNet + using var writer = new StringWriter(); + YamlJsonSerializer.Value.Serialize(writer, model); + var json = writer.ToString(); + + // 2. Deserialize JSON to models + var systemTextJsonModel = SystemTextJsonUtility.Deserialize<T>(json); + var newtownsoftJsonModel = NewtonsoftJsonUtility.Deserialize<T>(new StringReader(json)); + + // Assert + + // 3.1. Validate SystemTextJson/NewtonsoftJson models. + systemTextJsonModel.Should().BeEquivalentTo(newtownsoftJsonModel, customAssertionOptions); + newtownsoftJsonModel.Should().BeEquivalentTo(systemTextJsonModel, customAssertionOptions); + + // 3.3. Validate models that is loaded by YamlUtility. + model.Should().BeEquivalentTo(newtownsoftJsonModel, customAssertionOptions); + model.Should().BeEquivalentTo(systemTextJsonModel, customAssertionOptions); + systemTextJsonModel.Should().BeEquivalentTo(model, customAssertionOptions); + newtownsoftJsonModel.Should().BeEquivalentTo(systemTextJsonModel, customAssertionOptions); + } + + private static EquivalencyAssertionOptions<T> customAssertionOptions<T>(EquivalencyAssertionOptions<T> opt) + { + // By default. JsonElement is compared by reference because JsonElement don't override Equals. + return opt.ComparingByMembers<JsonElement>() + .Using(new CustomEqualityEquivalencyStep()); + } +} diff --git a/test/docfx.Tests/Utilities/JsonSchemaUtility.cs b/test/docfx.Tests/Utilities/JsonSchemaUtility.cs index 1710ff85f52..0d12c1e2063 100644 --- a/test/docfx.Tests/Utilities/JsonSchemaUtility.cs +++ b/test/docfx.Tests/Utilities/JsonSchemaUtility.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 Json.Schema; using System.Text; using System.Text.Json; +using Json.Schema; namespace Docfx.Tests; diff --git a/test/docfx.Tests/Utilities/PathHelper.cs b/test/docfx.Tests/Utilities/PathHelper.cs index bd28b418c13..05fd58838b0 100644 --- a/test/docfx.Tests/Utilities/PathHelper.cs +++ b/test/docfx.Tests/Utilities/PathHelper.cs @@ -22,7 +22,7 @@ public static string GetSolutionFolder([CallerFilePath] string callerFilePath = { // CallerFilePath is resolved at build timing. // If build/test is executed on separated machine. It failed to find file. - throw new Exception($"File is not found. callerFilePath: {callerFilePath}"); + throw new FileNotFoundException($"File is not found. callerFilePath: {callerFilePath}"); } return FindSolutionFolder(callerFilePath, "docfx"); @@ -46,4 +46,63 @@ private static string FindSolutionFolder(string callerFilePath, string solutionN return dir.FullName; } + + /// <summary> + /// Find TestData from callerFilePath. + /// </summary> + public static string ResolveTestDataPath(string path = "", [CallerFilePath] string callerFilePath = "") + { + if (Path.IsPathFullyQualified(path)) + return path; + + var dir = GetTestDataDirectory(callerFilePath); + + var resultPath = Path.Combine(dir, path); + if (!File.Exists(callerFilePath) && !Directory.Exists(callerFilePath)) + { + throw new FileNotFoundException($"Specified TestData file/directory is not found. path: {resultPath}"); + } + + return Path.GetFullPath(resultPath); + } + + /// <summary> + /// Find TestData from callerFilePath. + /// </summary> + public static string GetTestDataDirectory([CallerFilePath] string callerFilePath = "") + { + if (callerFilePath.StartsWith("/_/")) + { + var workspace = Environment.GetEnvironmentVariable("GITHUB_WORKSPACE"); + if (workspace != null) + callerFilePath = callerFilePath.Replace("/_/", workspace); + } + + 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}"); + } + + // Find closest `TestData` directory. + var dir = new FileInfo(callerFilePath).Directory; + while (dir != null) + { + var testDataDir = dir.EnumerateDirectories() + .FirstOrDefault(d => d.Name == "TestData"); + if (testDataDir != null) + { + dir = testDataDir; + break; + } + + dir = dir.Parent; + } + + if (dir == null) + throw new DirectoryNotFoundException("Failed to find TestData folder."); + + return dir.FullName; + } } diff --git a/test/docfx.Tests/docfx.Tests.csproj b/test/docfx.Tests/docfx.Tests.csproj index 21c9af9adf8..7ae078bfb84 100644 --- a/test/docfx.Tests/docfx.Tests.csproj +++ b/test/docfx.Tests/docfx.Tests.csproj @@ -1,4 +1,5 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup /> <ItemGroup> <None Include="Assets\**" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup>