diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index a3cce2ea12ed..3cbd594ec303 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -51,6 +51,8 @@ variables: /p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines) /p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory) # Do not log most Windows steps in official builds; this is the slowest job. Site extensions step always logs. + - name: WindowsArm64LogArgs + value: -ExcludeCIBinaryLog - name: Windows64LogArgs value: -ExcludeCIBinaryLog - name: Windows86LogArgs @@ -59,12 +61,16 @@ variables: value: -ExcludeCIBinaryLog - name: WindowsInstallersLogArgs value: -ExcludeCIBinaryLog + - name: WindowsArm64InstallersLogArgs + value: -ExcludeCIBinaryLog - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - name: _BuildArgs value: '/p:SkipTestBuild=true' - name: _PublishArgs value: '' # Write binary logs for all main Windows build steps except the x86 one in public and PR builds. + - name: WindowsArm64LogArgs + value: /bl:artifacts/log/Release/Build.arm64.binlog - name: Windows64LogArgs value: /bl:artifacts/log/Release/Build.x64.binlog - name: Windows86LogArgs @@ -73,6 +79,8 @@ variables: value: /bl:artifacts/log/Release/Build.CodeSign.binlog - name: WindowsInstallersLogArgs value: /bl:artifacts/log/Release/Build.Installers.binlog + - name: WindowsArm64InstallersLogArgs + value: /bl:artifacts/log/Release/Build.Installers.Arm64.binlog - ${{ if ne(variables['System.TeamProject'], 'internal') }}: - name: _UseHelixOpenQueues value: 'true' @@ -210,7 +218,7 @@ stages: displayName: Build Installers # A few files must also go to the VS package feed. - - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(variables['PostBuildSign'], 'true')) }}: - task: NuGetCommand@2 displayName: Push Visual Studio packages inputs: @@ -263,18 +271,6 @@ stages: jobName: Windows_arm64_build jobDisplayName: "Build: Windows ARM64" agentOs: Windows - buildArgs: - -arch arm64 - -sign - -pack - -noBuildNodeJS - -noBuildJava - /p:DotNetSignType=$(_SignType) - /p:OnlyPackPlatformSpecificPackages=true - /p:AssetManifestFileName=aspnetcore-win-arm64.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) installNodeJs: false installJdk: false artifacts: @@ -286,6 +282,47 @@ stages: path: artifacts/packages/ - name: Windows_arm64_Installers path: artifacts/installers/ + steps: + - script: ./build.cmd + -ci + -arch arm64 + -sign + -pack + -noBuildJava + -noBuildNative + /p:DotNetSignType=$(_SignType) + /p:OnlyPackPlatformSpecificPackages=true + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + $(WindowsArm64LogArgs) + displayName: Build ARM64 + + # Windows installers bundle for arm64 + - script: ./build.cmd + -ci + -noBuildRepoTasks + -arch arm64 + -sign + -buildInstallers + -noBuildNative + /p:DotNetSignType=$(_SignType) + /p:AssetManifestFileName=aspnetcore-win-arm64.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + $(WindowsArm64InstallersLogArgs) + displayName: Build Arm64 Installers + + # A few files must also go to the VS package feed. + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - task: NuGetCommand@2 + displayName: Push Visual Studio packages + inputs: + command: push + packagesToPush: 'artifacts/packages/**/VS.Redist.Common.AspNetCore.*.nupkg' + nuGetFeedType: external + publishFeedCredentials: 'DevDiv - VS package feed' + # Build MacOS - template: jobs/default-build.yml @@ -713,6 +750,7 @@ stages: - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - template: /eng/common/templates/post-build/post-build.yml parameters: + publishingInfraVersion: 3 enableSymbolValidation: false enableSigningValidation: false enableNugetValidation: false diff --git a/AspNetCore.sln b/AspNetCore.sln index c334ef68d95b..28551367a76c 100644 --- a/AspNetCore.sln +++ b/AspNetCore.sln @@ -1507,6 +1507,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.App.Un EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Localization", "Localization", "{3D34C81F-2CB5-459E-87E9-0CC04757A2A0}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GlobalizationWasmApp", "src\Components\test\testassets\GlobalizationWasmApp\GlobalizationWasmApp.csproj", "{04CFE286-6D32-41EF-8887-4B5F8086A365}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Localization.Abstractions", "src\Localization\Abstractions\src\Microsoft.Extensions.Localization.Abstractions.csproj", "{FEF97646-9BC9-4D1B-A939-784D915C18A4}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Localization", "src\Localization\Localization\src\Microsoft.Extensions.Localization.csproj", "{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}" @@ -1521,6 +1523,26 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Loggin EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.AzureAppServices.Tests", "src\Logging.AzureAppServices\test\Microsoft.Extensions.Logging.AzureAppServices.Tests.csproj", "{43E3B132-2486-44A3-92C6-39E39724FAFD}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SiteExtensions", "SiteExtensions", "{DFC4F588-B4B4-484B-AB93-B36721374AD3}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LoggingAggregate", "LoggingAggregate", "{48FF1D87-5066-4294-B802-2D1B478C6EB6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.AzureAppServices.SiteExtension", "src\SiteExtensions\LoggingAggregate\src\Microsoft.AspNetCore.AzureAppServices.SiteExtension\Microsoft.AspNetCore.AzureAppServices.SiteExtension.csproj", "{563A3FFA-32DA-4ADA-891C-E00897BD919E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.AzureAppServices.SiteExtension.Tests", "src\SiteExtensions\LoggingAggregate\test\Microsoft.AspNetCore.AzureAppServices.SiteExtension.Tests\Microsoft.AspNetCore.AzureAppServices.SiteExtension.Tests.csproj", "{DC5DE087-5C93-4441-9D62-1743A50E5086}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LB", "src\SiteExtensions\LoggingBranch\LB.csproj", "{F00CE8C1-5715-4683-A8E5-C467B712AD46}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.Web.Xdt.Extensions", "Microsoft.Web.Xdt.Extensions", "{56B45580-B089-424E-A847-A6115D591950}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Web.Xdt.Extensions", "src\SiteExtensions\Microsoft.Web.Xdt.Extensions\src\Microsoft.Web.Xdt.Extensions.csproj", "{4382555A-E4CD-4DFC-B59B-408FD4E93530}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Web.Xdt.Extensions.Tests", "src\SiteExtensions\Microsoft.Web.Xdt.Extensions\tests\Microsoft.Web.Xdt.Extensions.Tests.csproj", "{545751D5-71FC-4889-A3A0-BBD731DBA18A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sdk", "Sdk", "{E83B0BCC-A8E0-4FBD-BE51-9A533C9CB972}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HostingStartup", "src\SiteExtensions\Sdk\HostingStartup\HostingStartup.csproj", "{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -7193,6 +7215,18 @@ Global {BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Release|x64.Build.0 = Release|Any CPU {BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Release|x86.ActiveCfg = Release|Any CPU {BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Release|x86.Build.0 = Release|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|x64.ActiveCfg = Debug|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|x64.Build.0 = Debug|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|x86.ActiveCfg = Debug|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|x86.Build.0 = Debug|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|Any CPU.ActiveCfg = Release|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|Any CPU.Build.0 = Release|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|x64.ActiveCfg = Release|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|x64.Build.0 = Release|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|x86.ActiveCfg = Release|Any CPU + {04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|x86.Build.0 = Release|Any CPU {010A9638-F20E-4FE6-A186-85732BFC9CB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {010A9638-F20E-4FE6-A186-85732BFC9CB0}.Debug|Any CPU.Build.0 = Debug|Any CPU {010A9638-F20E-4FE6-A186-85732BFC9CB0}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -7277,6 +7311,78 @@ Global {43E3B132-2486-44A3-92C6-39E39724FAFD}.Release|x64.Build.0 = Release|Any CPU {43E3B132-2486-44A3-92C6-39E39724FAFD}.Release|x86.ActiveCfg = Release|Any CPU {43E3B132-2486-44A3-92C6-39E39724FAFD}.Release|x86.Build.0 = Release|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|x64.ActiveCfg = Debug|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|x64.Build.0 = Debug|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|x86.ActiveCfg = Debug|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|x86.Build.0 = Debug|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|Any CPU.Build.0 = Release|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|x64.ActiveCfg = Release|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|x64.Build.0 = Release|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|x86.ActiveCfg = Release|Any CPU + {563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|x86.Build.0 = Release|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|x64.ActiveCfg = Debug|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|x64.Build.0 = Debug|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|x86.ActiveCfg = Debug|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|x86.Build.0 = Debug|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|Any CPU.Build.0 = Release|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|x64.ActiveCfg = Release|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|x64.Build.0 = Release|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|x86.ActiveCfg = Release|Any CPU + {DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|x86.Build.0 = Release|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|x64.ActiveCfg = Debug|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|x64.Build.0 = Debug|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|x86.ActiveCfg = Debug|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|x86.Build.0 = Debug|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|Any CPU.Build.0 = Release|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|x64.ActiveCfg = Release|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|x64.Build.0 = Release|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|x86.ActiveCfg = Release|Any CPU + {F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|x86.Build.0 = Release|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|x64.ActiveCfg = Debug|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|x64.Build.0 = Debug|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|x86.ActiveCfg = Debug|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|x86.Build.0 = Debug|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|Any CPU.Build.0 = Release|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|x64.ActiveCfg = Release|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|x64.Build.0 = Release|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|x86.ActiveCfg = Release|Any CPU + {4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|x86.Build.0 = Release|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|x64.ActiveCfg = Debug|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|x64.Build.0 = Debug|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|x86.ActiveCfg = Debug|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|x86.Build.0 = Debug|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|Any CPU.Build.0 = Release|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|x64.ActiveCfg = Release|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|x64.Build.0 = Release|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|x86.ActiveCfg = Release|Any CPU + {545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|x86.Build.0 = Release|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|x64.ActiveCfg = Debug|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|x64.Build.0 = Debug|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|x86.ActiveCfg = Debug|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|x86.Build.0 = Debug|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|Any CPU.Build.0 = Release|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|x64.ActiveCfg = Release|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|x64.Build.0 = Release|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|x86.ActiveCfg = Release|Any CPU + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -8029,6 +8135,7 @@ Global {37329855-01B8-4B03-9765-1A941B06E43C} = {8C15FD04-7F90-43FC-B488-023432FE3CE1} {D3246226-BC1A-47F1-8E3E-C3380A8F13FB} = {8C15FD04-7F90-43FC-B488-023432FE3CE1} {B06ADD57-E855-4D8C-85DC-B323509AE540} = {898F7E0B-1671-42CB-9DFB-689AFF212ED3} + {04CFE286-6D32-41EF-8887-4B5F8086A365} = {6126DCE4-9692-4EE2-B240-C65743572995} {BAD47859-95DF-4C8F-9AF7-C48B68F478A1} = {A4C26078-B6D8-4FD8-87A6-7C15A3482038} {010A9638-F20E-4FE6-A186-85732BFC9CB0} = {A4C26078-B6D8-4FD8-87A6-7C15A3482038} {3D34C81F-2CB5-459E-87E9-0CC04757A2A0} = {017429CC-C5FB-48B4-9C46-034E29EE2F06} @@ -8039,6 +8146,16 @@ Global {3EAB9890-2C01-444C-ACA0-D77B29CDE08B} = {017429CC-C5FB-48B4-9C46-034E29EE2F06} {3E29454A-C4DC-44B7-AF0A-A782AD2E73BC} = {3EAB9890-2C01-444C-ACA0-D77B29CDE08B} {43E3B132-2486-44A3-92C6-39E39724FAFD} = {3EAB9890-2C01-444C-ACA0-D77B29CDE08B} + {DFC4F588-B4B4-484B-AB93-B36721374AD3} = {017429CC-C5FB-48B4-9C46-034E29EE2F06} + {48FF1D87-5066-4294-B802-2D1B478C6EB6} = {DFC4F588-B4B4-484B-AB93-B36721374AD3} + {563A3FFA-32DA-4ADA-891C-E00897BD919E} = {48FF1D87-5066-4294-B802-2D1B478C6EB6} + {DC5DE087-5C93-4441-9D62-1743A50E5086} = {48FF1D87-5066-4294-B802-2D1B478C6EB6} + {F00CE8C1-5715-4683-A8E5-C467B712AD46} = {DFC4F588-B4B4-484B-AB93-B36721374AD3} + {56B45580-B089-424E-A847-A6115D591950} = {DFC4F588-B4B4-484B-AB93-B36721374AD3} + {4382555A-E4CD-4DFC-B59B-408FD4E93530} = {56B45580-B089-424E-A847-A6115D591950} + {545751D5-71FC-4889-A3A0-BBD731DBA18A} = {56B45580-B089-424E-A847-A6115D591950} + {E83B0BCC-A8E0-4FBD-BE51-9A533C9CB972} = {DFC4F588-B4B4-484B-AB93-B36721374AD3} + {5D6F99C5-D292-4459-B8BD-8E4AD42E1B21} = {E83B0BCC-A8E0-4FBD-BE51-9A533C9CB972} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {3E8720B3-DBDD-498C-B383-2CC32A054E8F} diff --git a/Directory.Build.props b/Directory.Build.props index 224d84c78184..258a01d38823 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -13,7 +13,7 @@ true true - false + false true true true diff --git a/Directory.Build.targets b/Directory.Build.targets index 98d6f37df1b7..4b66c7301d17 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -36,13 +36,15 @@ $(VersionPrefix)-$(VersionSuffix.Replace('.','-')) $(Version) - $(SiteExtensionPackageVersion) + $(PackageVersion) + $(VersionPrefix) + $(Product) $(SharedFxVersion) Shared Framework - $(TargetingPackVersionPrefix) - $(TargetingPackVersionPrefix)-$(VersionSuffix) + $(SharedFxVersion) + $(TargetingPackVersionPrefix) - $(Product) $(PackageVersion) Shared Framework + $(SiteExtensionPackageVersion) @@ -156,7 +158,7 @@ $(SharedFxVersion) $(SharedFxVersion) - $(SharedFxVersion) + $(TargetingPackVersion) diff --git a/build.ps1 b/build.ps1 index 96e5cb7bf07a..0d82c3b2657b 100644 --- a/build.ps1 +++ b/build.ps1 @@ -296,12 +296,11 @@ if ($BuildNodeJS) { $dotnetBuildArguments += "/p:BuildNodeJS=true" } # Don't bother with two builds if just one will build everything. Ignore super-weird cases like # "-Projects ... -NoBuildJava -NoBuildManaged -NoBuildNodeJS". An empty `./build.ps1` command will build both # managed and native projects. -$performDesktopBuild = ($BuildInstallers -or $BuildNative) -and ` - -not $Architecture.StartsWith("arm", [System.StringComparison]::OrdinalIgnoreCase) +$performDesktopBuild = ($BuildInstallers -and $Architecture -ne "arm") -or ` + ($BuildNative -and -not $Architecture.StartsWith("arm", [System.StringComparison]::OrdinalIgnoreCase)) $performDotnetBuild = $BuildJava -or $BuildManaged -or $BuildNodeJS -or ` ($All -and -not ($NoBuildJava -and $NoBuildManaged -and $NoBuildNodeJS)) -or ` ($Projects -and -not ($BuildInstallers -or $specifiedBuildNative)) - $foundJdk = $false $javac = Get-Command javac -ErrorAction Ignore -CommandType Application $localJdkPath = "$PSScriptRoot\.tools\jdk\win-x64\" diff --git a/eng/Build.props b/eng/Build.props index f0cb8db0b8a0..1333471df20c 100644 --- a/eng/Build.props +++ b/eng/Build.props @@ -25,7 +25,7 @@ $(RepoRoot)src\Installers\**\*.*proj; $(RepoRoot)src\SignalR\clients\ts\**\node_modules\**\*.*proj; $(RepoRoot)src\Components\Web.JS\node_modules\**\*.*proj; - $(RepoRoot)src\Components\WebAssembly\Build\testassets\**\*.csproj; + $(RepoRoot)src\Components\WebAssembly\Sdk\testassets\**\*.csproj; $(RepoRoot)src\ProjectTemplates\Web.ProjectTemplates\content\**\*.csproj; $(RepoRoot)src\ProjectTemplates\Web.ProjectTemplates\content\**\*.fsproj; $(RepoRoot)src\ProjectTemplates\Web.Spa.ProjectTemplates\content\**\*.csproj; @@ -50,7 +50,7 @@ - + @@ -64,6 +64,10 @@ + + @@ -77,6 +81,14 @@ + + + + + + + diff --git a/eng/Dependencies.props b/eng/Dependencies.props index 8b2f6d3f3bc3..1254d0926501 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -73,8 +73,6 @@ and are generated based on the last package release. - - @@ -168,7 +166,6 @@ and are generated based on the last package release. - @@ -197,11 +194,6 @@ and are generated based on the last package release. $(%(VersionName)PackageVersion) - $(%(VersionName)V0PackageVersion) - - - - $(ArtifactsDir.Substring(0, $([MSBuild]::Subtract($(ArtifactsDir.Length), 1)))) diff --git a/eng/Versions.props b/eng/Versions.props index b7e18760e922..731e739aa2e8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -160,36 +160,6 @@ --> $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) - - - $(MicrosoftWin32RegistryPackageVersion.Split('.')[0]).$(MicrosoftWin32RegistryPackageVersion.Split('.')[1]).0 - $(MicrosoftWin32SystemEventsPackageVersion.Split('.')[0]).$(MicrosoftWin32SystemEventsPackageVersion.Split('.')[1]).0 - $(SystemDiagnosticsEventLogPackageVersion.Split('.')[0]).$(SystemDiagnosticsEventLogPackageVersion.Split('.')[1]).0 - $(SystemDrawingCommonPackageVersion.Split('.')[0]).$(SystemDrawingCommonPackageVersion.Split('.')[1]).0 - $(SystemIOPipelinesPackageVersion.Split('.')[0]).$(SystemIOPipelinesPackageVersion.Split('.')[1]).0 - $(SystemSecurityAccessControlPackageVersion.Split('.')[0]).$(SystemSecurityAccessControlPackageVersion.Split('.')[1]).0 - $(SystemSecurityCryptographyCngPackageVersion.Split('.')[0]).$(SystemSecurityCryptographyCngPackageVersion.Split('.')[1]).0 - $(SystemSecurityCryptographyPkcsPackageVersion.Split('.')[0]).$(SystemSecurityCryptographyPkcsPackageVersion.Split('.')[1]).0 - $(SystemSecurityCryptographyXmlPackageVersion.Split('.')[0]).$(SystemSecurityCryptographyXmlPackageVersion.Split('.')[1]).0 - $(SystemSecurityPermissionsPackageVersion.Split('.')[0]).$(SystemSecurityPermissionsPackageVersion.Split('.')[1]).0 - $(SystemSecurityPrincipalWindowsPackageVersion.Split('.')[0]).$(SystemSecurityPrincipalWindowsPackageVersion.Split('.')[1]).0 - $(SystemWindowsExtensionsPackageVersion.Split('.')[0]).$(SystemWindowsExtensionsPackageVersion.Split('.')[1]).0 - 3.8.0-3.20458.6 @@ -241,7 +211,8 @@ 6.7.1 2.1.1 - 3.1.7-servicing-20372-13 + 2.2.0 + 3.1.8-servicing-20421-6 $(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion) $(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion) 5.0.0-preview-7-20365-19 @@ -253,19 +224,20 @@ 4.2.1 2.3.0 4.2.1 - 3.10.0 - 2.27.0 - 2.27.0 - 2.27.0 - 2.27.0 + 3.13.0 + 2.32.0-pre1 + 2.32.0-pre1 + 2.32.0-pre1 + 2.32.0-pre1 4.0.4 4.0.4 4.0.4 4.0.4 4.0.4 2.1.90 - 0.3.1-preview - 0.3.1-preview + 0.4.0-preview + 0.4.0-preview + 0.4.0-preview $(MessagePackPackageVersion) 4.10.0 0.11.2 diff --git a/eng/helix/content/RunTests/RunTestsOptions.cs b/eng/helix/content/RunTests/RunTestsOptions.cs index 5bb6b46a308f..031326ba8a14 100644 --- a/eng/helix/content/RunTests/RunTestsOptions.cs +++ b/eng/helix/content/RunTests/RunTestsOptions.cs @@ -46,16 +46,6 @@ public static RunTestsOptions Parse(string[] args) description: "The version of the EF tool to use") { Argument = new Argument(), Required = true }, - new Option( - aliases: new string[] { "--aspnetruntime" }, - description: "The path to the aspnet runtime nupkg to install") - { Argument = new Argument(), Required = true }, - - new Option( - aliases: new string[] { "--aspnetref" }, - description: "The path to the aspnet ref nupkg to install") - { Argument = new Argument(), Required = true }, - new Option( aliases: new string[] { "--helixTimeout" }, description: "The timeout duration of the Helix job") @@ -68,36 +58,41 @@ public static RunTestsOptions Parse(string[] args) }; var parseResult = command.Parse(args); - var options = new RunTestsOptions(); - options.Target = parseResult.ValueForOption("--target"); - options.RuntimeVersion = parseResult.ValueForOption("--runtime"); - options.HelixQueue = parseResult.ValueForOption("--queue"); - options.Architecture = parseResult.ValueForOption("--arch"); - options.Quarantined = parseResult.ValueForOption("--quarantined"); - options.EfVersion = parseResult.ValueForOption("--ef"); - options.AspNetRuntime = parseResult.ValueForOption("--aspnetruntime"); - options.AspNetRef = parseResult.ValueForOption("--aspnetref"); - options.Timeout = TimeSpan.Parse(parseResult.ValueForOption("--helixTimeout")); - options.Source = parseResult.ValueForOption>("--source"); - options.HELIX_WORKITEM_ROOT = Environment.GetEnvironmentVariable("HELIX_WORKITEM_ROOT"); - options.Path = Environment.GetEnvironmentVariable("PATH"); - options.DotnetRoot = Environment.GetEnvironmentVariable("DOTNET_ROOT"); + var sharedFxVersion = parseResult.ValueForOption("--runtime"); + var options = new RunTestsOptions + { + Architecture = parseResult.ValueForOption("--arch"), + EfVersion = parseResult.ValueForOption("--ef"), + HelixQueue = parseResult.ValueForOption("--queue"), + Quarantined = parseResult.ValueForOption("--quarantined"), + RuntimeVersion = sharedFxVersion, + Target = parseResult.ValueForOption("--target"), + Timeout = TimeSpan.Parse(parseResult.ValueForOption("--helixTimeout")), + + // When targeting pack builds, it has exactly the same version as the shared framework. + AspNetRef = $"Microsoft.AspNetCore.App.Ref.{sharedFxVersion}.nupkg", + AspNetRuntime = $"Microsoft.AspNetCore.App.Runtime.win-x64.{sharedFxVersion}.nupkg", + + DotnetRoot = Environment.GetEnvironmentVariable("DOTNET_ROOT"), + HELIX_WORKITEM_ROOT = Environment.GetEnvironmentVariable("HELIX_WORKITEM_ROOT"), + Path = Environment.GetEnvironmentVariable("PATH"), + }; + return options; } - public string Target { get; set;} - public string SdkVersion { get; set;} - public string RuntimeVersion { get; set;} - public string AspNetRuntime { get; set;} - public string AspNetRef { get; set;} - public string HelixQueue { get; set;} - public string Architecture { get; set;} - public bool Quarantined { get; set;} - public string EfVersion { get; set;} - public string HELIX_WORKITEM_ROOT { get; set;} - public string DotnetRoot { get; set; } + public string Architecture { get; private set; } + public string EfVersion { get; private set; } + public string HelixQueue { get; private set; } + public bool Quarantined { get; private set; } + public string RuntimeVersion { get; private set; } + public string Target { get; private set; } + public TimeSpan Timeout { get; private set; } + + public string AspNetRef { get; private set; } + public string AspNetRuntime { get; private set; } + public string HELIX_WORKITEM_ROOT { get; private set; } + public string DotnetRoot { get; private set; } public string Path { get; set; } - public IEnumerable Source { get; set; } - public TimeSpan Timeout { get; set; } } } diff --git a/eng/helix/content/runtests.cmd b/eng/helix/content/runtests.cmd index 1016d25aad8f..68bc1bf494e6 100644 --- a/eng/helix/content/runtests.cmd +++ b/eng/helix/content/runtests.cmd @@ -10,38 +10,41 @@ set $queue=%5 set $arch=%6 set $quarantined=%7 set $ef=%8 -set $aspnetruntime=%9 -REM Batch only supports up to 9 arguments using the %# syntax, need to shift to get more -shift -set $aspnetref=%9 -shift set $helixTimeout=%9 +REM Batch only supports up to 9 arguments using the %# syntax, need to shift to get more shift set $feedCred=%9 -set DOTNET_HOME=%HELIX_CORRELATION_PAYLOAD%\sdk +set DOTNET_HOME=%CD%\sdk%random% set DOTNET_ROOT=%DOTNET_HOME%\%$arch% set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 set DOTNET_MULTILEVEL_LOOKUP=0 -set DOTNET_CLI_HOME=%HELIX_CORRELATION_PAYLOAD%\home +set DOTNET_CLI_HOME=%CD%\home%random% set "PATH=%DOTNET_ROOT%;%PATH%;%HELIX_CORRELATION_PAYLOAD%\node\bin" echo Set path to: "%PATH%" +echo. +echo "InstallDotNet %DOTNET_ROOT% %$sdkVersion% %$arch% '' $true '' '' $true" powershell.exe -noLogo -NoProfile -ExecutionPolicy unrestricted -command ". eng\common\tools.ps1; InstallDotNet %DOTNET_ROOT% %$sdkVersion% %$arch% '' $true '' '' $true" +echo. + IF [%$feedCred%] == [] ( + echo "InstallDotNet %DOTNET_ROOT% %$runtimeVersion% %$arch% dotnet $true '' '' $true" powershell.exe -noLogo -NoProfile -ExecutionPolicy unrestricted -command ". eng\common\tools.ps1; InstallDotNet %DOTNET_ROOT% %$runtimeVersion% %$arch% dotnet $true '' '' $true" ) else ( + echo "InstallDotNet %DOTNET_ROOT% %$runtimeVersion% %$arch% dotnet $true https://dotnetclimsrc.blob.core.windows.net/dotnet ... $true" powershell.exe -noLogo -NoProfile -ExecutionPolicy unrestricted -command ". eng\common\tools.ps1; InstallDotNet %DOTNET_ROOT% %$runtimeVersion% %$arch% dotnet $true https://dotnetclimsrc.blob.core.windows.net/dotnet %$feedCred% $true" ) +echo. set exit_code=0 echo "Restore: dotnet restore RunTests\RunTests.csproj --ignore-failed-sources" dotnet restore RunTests\RunTests.csproj --ignore-failed-sources -echo "Running tests: dotnet run --no-restore --project RunTests\RunTests.csproj -- --target %$target% --runtime %$aspRuntimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --aspnetruntime %$aspnetruntime% --aspnetref %$aspnetref% --helixTimeout %$helixTimeout%" -dotnet run --no-restore --project RunTests\RunTests.csproj -- --target %$target% --runtime %$aspRuntimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --aspnetruntime %$aspnetruntime% --aspnetref %$aspnetref% --helixTimeout %$helixTimeout% +echo "Running tests: dotnet run --no-restore --project RunTests\RunTests.csproj -- --target %$target% --runtime %$aspRuntimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --helixTimeout %$helixTimeout%" +dotnet run --no-restore --project RunTests\RunTests.csproj -- --target %$target% --runtime %$aspRuntimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --helixTimeout %$helixTimeout% if errorlevel neq 0 ( set exit_code=%errorlevel% ) diff --git a/eng/helix/content/runtests.sh b/eng/helix/content/runtests.sh index 713f51cab90f..f0ca1b76a65e 100644 --- a/eng/helix/content/runtests.sh +++ b/eng/helix/content/runtests.sh @@ -31,24 +31,30 @@ YELLOW="\033[0;33m" MAGENTA="\033[0;95m" . eng/common/tools.sh +echo "InstallDotNet $DOTNET_ROOT $dotnet_sdk_version '' '' true" InstallDotNet $DOTNET_ROOT $dotnet_sdk_version "" "" true || { exit_code=$? Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2 ExitWithExitCode $exit_code } -if [[ -z "${11:-}" ]]; then +echo + +if [[ -z "${10:-}" ]]; then + echo "InstallDotNet $DOTNET_ROOT $dotnet_runtime_version '' dotnet true" InstallDotNet $DOTNET_ROOT $dotnet_runtime_version "" dotnet true || { exit_code=$? Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2 ExitWithExitCode $exit_code } else - InstallDotNet $DOTNET_ROOT $dotnet_runtime_version "" dotnet true https://dotnetclimsrc.blob.core.windows.net/dotnet ${11} || { + echo "InstallDotNet $DOTNET_ROOT $dotnet_runtime_version '' dotnet true https://dotnetclimsrc.blob.core.windows.net/dotnet ..." + InstallDotNet $DOTNET_ROOT $dotnet_runtime_version "" dotnet true https://dotnetclimsrc.blob.core.windows.net/dotnet ${10} || { exit_code=$? Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2 ExitWithExitCode $exit_code } fi +echo if [ -e /proc/self/coredump_filter ]; then # Include memory in private and shared file-backed mappings in the dump. @@ -65,8 +71,8 @@ exit_code=0 echo "Restore: $DOTNET_ROOT/dotnet restore RunTests/RunTests.csproj --ignore-failed-sources" $DOTNET_ROOT/dotnet restore RunTests/RunTests.csproj --ignore-failed-sources -echo "Running tests: $DOTNET_ROOT/dotnet run --no-restore --project RunTests/RunTests.csproj -- --target $1 --runtime $4 --queue $5 --arch $6 --quarantined $7 --ef $8 --aspnetruntime $9 --aspnetref ${10} --helixTimeout ${11}" -$DOTNET_ROOT/dotnet run --no-restore --project RunTests/RunTests.csproj -- --target $1 --runtime $4 --queue $5 --arch $6 --quarantined $7 --ef $8 --aspnetruntime $9 --aspnetref ${10} --helixTimeout ${11} +echo "Running tests: $DOTNET_ROOT/dotnet run --no-restore --project RunTests/RunTests.csproj -- --target $1 --runtime $4 --queue $5 --arch $6 --quarantined $7 --ef $8 --helixTimeout $9" +$DOTNET_ROOT/dotnet run --no-restore --project RunTests/RunTests.csproj -- --target $1 --runtime $4 --queue $5 --arch $6 --quarantined $7 --ef $8 --helixTimeout $9 exit_code=$? echo "Finished tests...exit_code=$exit_code" diff --git a/eng/helix/helix.proj b/eng/helix/helix.proj index 250b2fb9b2c8..65e47db27434 100644 --- a/eng/helix/helix.proj +++ b/eng/helix/helix.proj @@ -11,7 +11,8 @@ - + + diff --git a/eng/scripts/RunHelix.ps1 b/eng/scripts/RunHelix.ps1 index 2a20580c3a55..0bad5574a4e7 100644 --- a/eng/scripts/RunHelix.ps1 +++ b/eng/scripts/RunHelix.ps1 @@ -6,7 +6,7 @@ .PARAMETER Project The test project to publish and send to Helix. .PARAMETER HelixQueues - Set the Helix queues to use, the list is ';' separated. + Set the Helix queues to use. The list is '+' or ';'-separated. Some supported queues: Ubuntu.1604.Amd64.Open Ubuntu.1804.Amd64.Open diff --git a/eng/targets/CSharp.Common.props b/eng/targets/CSharp.Common.props index ff77d1b86aab..097769897b73 100644 --- a/eng/targets/CSharp.Common.props +++ b/eng/targets/CSharp.Common.props @@ -12,7 +12,12 @@ - + + <_ReferenceLocalRazorSDK + Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' OR '$(UsingMicrosoftNETSdkBlazorWebAssembly)' == 'true' OR '$(RazorSdkCurrentVersionProps)' != '' OR '$(_RazorSdkImportsMicrosoftNetSdk)' == 'true'">true + + + $(NoWarn);RS0041 + + + $(NoWarn);CA1416 + diff --git a/eng/targets/Helix.targets b/eng/targets/Helix.targets index 706c407778f2..ba28388707f2 100644 --- a/eng/targets/Helix.targets +++ b/eng/targets/Helix.targets @@ -16,11 +16,20 @@ - - + + + - + + + + + + + @@ -40,13 +49,10 @@ - + @@ -101,25 +107,6 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj - - - - - - - - - - - - - - <_HelixFriendlyNameTargetQueue>$(HelixTargetQueue) @@ -139,8 +126,12 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj $(TargetFileName) @(HelixPreCommand) @(HelixPostCommand) - call runtests.cmd $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) Microsoft.AspNetCore.App.Runtime.win-x64.$(SharedFxVersion).nupkg Microsoft.AspNetCore.App.Ref.$(SharedFxVersion).nupkg $(HelixTimeout) - ./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) Microsoft.AspNetCore.App.Runtime.win-x64.$(SharedFxVersion).nupkg Microsoft.AspNetCore.App.Ref.$(SharedFxVersion).nupkg $(HelixTimeout) + + call runtests.cmd $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppInternalPackageVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) $(HelixTimeout) $(DotNetRuntimeSourceFeedKey) + ./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppInternalPackageVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) $(HelixTimeout) $(DotNetRuntimeSourceFeedKey) $(HelixCommand) $(HelixTimeout) diff --git a/eng/targets/ResolveReferences.targets b/eng/targets/ResolveReferences.targets index fe8224d1988d..092d7aec6732 100644 --- a/eng/targets/ResolveReferences.targets +++ b/eng/targets/ResolveReferences.targets @@ -253,45 +253,6 @@ Text="Could not resolve this reference. Could not locate the package or project for "%(Reference.Identity)". Did you update baselines and dependencies lists? See docs/ReferenceResolution.md for more details." /> - - - - - - - - - - - - - <_ResolvedCompileFileDefinitionsToChange - HintPath="$([System.String]::new('%(Identity)').Replace('\%(Version)\', '\%(RTMVersion)\').Replace('/%(Version)/', '/%(RTMVersion)/'))" /> - - - <_ResolvedCompileFileDefinitionsToChange Remove="@(_ResolvedCompileFileDefinitionsToChange)" /> - - - <_CompileTfmUsingReferenceAssemblies>false <_CompileTfmUsingReferenceAssemblies diff --git a/eng/targets/Wix.Common.props b/eng/targets/Wix.Common.props index e6b1337fcba0..9a29437eb2e5 100644 --- a/eng/targets/Wix.Common.props +++ b/eng/targets/Wix.Common.props @@ -3,8 +3,8 @@ 2.0 - 3.11 - 3.11.1 + 3.14 + 3.14.0-dotnet diff --git a/eng/tools/RepoTasks/RepoTasks.csproj b/eng/tools/RepoTasks/RepoTasks.csproj index 798c6c9fb356..e71a1d759183 100644 --- a/eng/tools/RepoTasks/RepoTasks.csproj +++ b/eng/tools/RepoTasks/RepoTasks.csproj @@ -36,15 +36,5 @@ $(WiXSdkPath)\Microsoft.Deployment.WindowsInstaller.Package.dll - - - diff --git a/global.json b/global.json index 40231c23877a..4c2009c7135f 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "5.0.100-rc.1.20379.10" + "version": "5.0.100-rc.1.20452.10" }, "tools": { - "dotnet": "5.0.100-rc.1.20379.10", + "dotnet": "5.0.100-rc.1.20452.10", "runtimes": { "dotnet/x64": [ "2.1.18", diff --git a/src/Components/Components.slnf b/src/Components/Components.slnf index 87f23a36bd84..50973b2288a5 100644 --- a/src/Components/Components.slnf +++ b/src/Components/Components.slnf @@ -98,6 +98,7 @@ "src\\Components\\Ignitor\\src\\Ignitor.csproj", "src\\Components\\Ignitor\\test\\Ignitor.Test.csproj", "src\\Components\\test\\testassets\\ComponentsApp.Server\\ComponentsApp.Server.csproj", + "src\\Components\\test\\testassets\\GlobalizationWasmApp\\GlobalizationWasmApp.csproj", "src\\Components\\benchmarkapps\\Wasm.Performance\\Driver\\Wasm.Performance.Driver.csproj", "src\\Components\\benchmarkapps\\Wasm.Performance\\TestApp\\Wasm.Performance.TestApp.csproj", "src\\Components\\Web.Extensions\\src\\Microsoft.AspNetCore.Components.Web.Extensions.csproj", diff --git a/src/Components/Components/src/BindConverter.cs b/src/Components/Components/src/BindConverter.cs index 223681ad0de9..56c44ac5dcf3 100644 --- a/src/Components/Components/src/BindConverter.cs +++ b/src/Components/Components/src/BindConverter.cs @@ -23,10 +23,9 @@ public static class BindConverter private static readonly object BoxedFalse = false; private delegate object? BindFormatter(T value, CultureInfo? culture); - private delegate object BindFormatterWithFormat(T value, CultureInfo? culture, string format); - internal delegate bool BindParser(object? obj, CultureInfo? culture, out T value); - internal delegate bool BindParserWithFormat(object? obj, CultureInfo? culture, string? format, out T value); + internal delegate bool BindParser(object? obj, CultureInfo? culture, [MaybeNullWhen(false)] out T value); + internal delegate bool BindParserWithFormat(object? obj, CultureInfo? culture, string? format, [MaybeNullWhen(false)] out T value); /// /// Formats the provided as a . @@ -1276,7 +1275,7 @@ private static bool ConvertToNullableEnum(object? obj, CultureInfo? culture, /// The to use for conversion. /// The converted value. /// true if conversion is successful, otherwise false. - public static bool TryConvertTo(object? obj, CultureInfo? culture, out T value) + public static bool TryConvertTo(object? obj, CultureInfo? culture, [MaybeNullWhen(false)] out T value) { var converter = ParserDelegateCache.Get(); return converter(obj, culture, out value); diff --git a/src/Components/Components/src/EventCallback.cs b/src/Components/Components/src/EventCallback.cs index c053f810ab54..03f2fae15e97 100644 --- a/src/Components/Components/src/EventCallback.cs +++ b/src/Components/Components/src/EventCallback.cs @@ -51,11 +51,11 @@ public EventCallback(IHandleEvent? receiver, MulticastDelegate? @delegate) /// /// The argument. /// A which completes asynchronously once event processing has completed. - public Task InvokeAsync(object arg) + public Task InvokeAsync(object? arg) { if (Receiver == null) { - return EventCallbackWorkItem.InvokeAsync(Delegate, arg); + return EventCallbackWorkItem.InvokeAsync(Delegate, arg); } return Receiver.HandleEventAsync(new EventCallbackWorkItem(Delegate), arg); diff --git a/src/Components/Components/src/EventCallbackOfT.cs b/src/Components/Components/src/EventCallbackOfT.cs index 23f7888826d2..e228d8e31e1e 100644 --- a/src/Components/Components/src/EventCallbackOfT.cs +++ b/src/Components/Components/src/EventCallbackOfT.cs @@ -46,11 +46,11 @@ public EventCallback(IHandleEvent? receiver, MulticastDelegate? @delegate) /// /// The argument. /// A which completes asynchronously once event processing has completed. - public Task InvokeAsync(TValue arg) + public Task InvokeAsync(TValue? arg) { if (Receiver == null) { - return EventCallbackWorkItem.InvokeAsync(Delegate, arg); + return EventCallbackWorkItem.InvokeAsync(Delegate, arg); } return Receiver.HandleEventAsync(new EventCallbackWorkItem(Delegate), arg); diff --git a/src/Components/Components/src/ParameterView.cs b/src/Components/Components/src/ParameterView.cs index f68fb605736d..b58e92e9c0fe 100644 --- a/src/Components/Components/src/ParameterView.cs +++ b/src/Components/Components/src/ParameterView.cs @@ -88,9 +88,8 @@ public bool TryGetValue(string parameterName, [MaybeNullWhen(false)] out /// The type of the value. /// The name of the parameter. /// The parameter value if found; otherwise the default value for the specified type. - [return: MaybeNull] - public TValue GetValueOrDefault(string parameterName) - => GetValueOrDefault(parameterName, default!); + public TValue? GetValueOrDefault(string parameterName) + => GetValueOrDefault(parameterName, default); /// /// Gets the value of the parameter with the specified name, or a specified default value diff --git a/src/Components/ComponentsNoDeps.slnf b/src/Components/ComponentsNoDeps.slnf index d7918fcc1acd..3c95b3b7caca 100644 --- a/src/Components/ComponentsNoDeps.slnf +++ b/src/Components/ComponentsNoDeps.slnf @@ -44,6 +44,7 @@ "src\\Components\\test\\E2ETest\\Microsoft.AspNetCore.Components.E2ETests.csproj", "src\\Components\\test\\testassets\\BasicTestApp\\BasicTestApp.csproj", "src\\Components\\test\\testassets\\ComponentsApp.Server\\ComponentsApp.Server.csproj", + "src\\Components\\test\\testassets\\GlobalizationWasmApp\\GlobalizationWasmApp.csproj", "src\\Components\\test\\testassets\\TestContentPackage\\TestContentPackage.csproj", "src\\Components\\test\\testassets\\TestServer\\Components.TestServer.csproj" ] diff --git a/src/Components/Ignitor/src/CancellableOperation.cs b/src/Components/Ignitor/src/CancellableOperation.cs index 6e1f217d19fa..4498440800bf 100644 --- a/src/Components/Ignitor/src/CancellableOperation.cs +++ b/src/Components/Ignitor/src/CancellableOperation.cs @@ -14,7 +14,7 @@ public CancellableOperation(TimeSpan? timeout, CancellationToken cancellationTok { Timeout = timeout; - Completion = new TaskCompletionSource(TaskContinuationOptions.RunContinuationsAsynchronously); + Completion = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); Completion.Task.ContinueWith( (task, state) => { diff --git a/src/Components/Server/src/Circuits/CircuitId.cs b/src/Components/Server/src/Circuits/CircuitId.cs index 3d63d2fdb492..90240b620b47 100644 --- a/src/Components/Server/src/Circuits/CircuitId.cs +++ b/src/Components/Server/src/Circuits/CircuitId.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.Security.Cryptography; @@ -29,7 +28,7 @@ public CircuitId(string secret, string id) public string Secret { get; } - public bool Equals([AllowNull] CircuitId other) + public bool Equals(CircuitId other) { // We want to use a fixed time equality comparison for a *real* comparisons. // The only use case for Secret being null is with a default struct value, diff --git a/src/Components/Web.JS/dist/Release/blazor.server.js b/src/Components/Web.JS/dist/Release/blazor.server.js index 2884e50021ec..a9bfd46cb49b 100644 --- a/src/Components/Web.JS/dist/Release/blazor.server.js +++ b/src/Components/Web.JS/dist/Release/blazor.server.js @@ -1,19 +1,19 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=53)}([function(e,t,n){"use strict";var r;n.d(t,"a",(function(){return r})),function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(r||(r={}))},function(e,t,n){"use strict";(function(e){n.d(t,"e",(function(){return c})),n.d(t,"a",(function(){return u})),n.d(t,"c",(function(){return l})),n.d(t,"g",(function(){return f})),n.d(t,"i",(function(){return h})),n.d(t,"j",(function(){return p})),n.d(t,"f",(function(){return d})),n.d(t,"d",(function(){return g})),n.d(t,"b",(function(){return y})),n.d(t,"h",(function(){return v}));var r=n(0),o=n(4),i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]-1&&this.subject.observers.splice(e,1),0===this.subject.observers.length&&this.subject.cancelCallback&&this.subject.cancelCallback().catch((function(e){}))},e}(),y=function(){function e(e){this.minimumLogLevel=e,this.outputConsole=console}return e.prototype.log=function(e,t){if(e>=this.minimumLogLevel)switch(e){case r.a.Critical:case r.a.Error:this.outputConsole.error("["+(new Date).toISOString()+"] "+r.a[e]+": "+t);break;case r.a.Warning:this.outputConsole.warn("["+(new Date).toISOString()+"] "+r.a[e]+": "+t);break;case r.a.Information:this.outputConsole.info("["+(new Date).toISOString()+"] "+r.a[e]+": "+t);break;default:this.outputConsole.log("["+(new Date).toISOString()+"] "+r.a[e]+": "+t)}},e}();function v(){var e="X-SignalR-User-Agent";return l.isNode&&(e="User-Agent"),[e,b(c,m(),E(),w())]}function b(e,t,n,r){var o="Microsoft SignalR/",i=e.split(".");return o+=i[0]+"."+i[1],o+=" ("+e+"; ",o+=t&&""!==t?t+"; ":"Unknown OS; ",o+=""+n,o+=r?"; "+r:"; Unknown Runtime Version",o+=")"}function m(){if(!l.isNode)return"";switch(e.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return e.platform}}function w(){if(l.isNode)return e.versions.node}function E(){return l.isNode?"NodeJS":"Browser"}}).call(this,n(13))},function(e,t,n){"use strict";n.r(t),n.d(t,"AbortError",(function(){return s})),n.d(t,"HttpError",(function(){return i})),n.d(t,"TimeoutError",(function(){return a})),n.d(t,"HttpClient",(function(){return l})),n.d(t,"HttpResponse",(function(){return u})),n.d(t,"DefaultHttpClient",(function(){return S})),n.d(t,"HubConnection",(function(){return R})),n.d(t,"HubConnectionState",(function(){return I})),n.d(t,"HubConnectionBuilder",(function(){return re})),n.d(t,"MessageType",(function(){return b})),n.d(t,"LogLevel",(function(){return f.a})),n.d(t,"HttpTransportType",(function(){return P})),n.d(t,"TransferFormat",(function(){return O})),n.d(t,"NullLogger",(function(){return $.a})),n.d(t,"JsonHubProtocol",(function(){return ee})),n.d(t,"Subject",(function(){return C})),n.d(t,"VERSION",(function(){return h.e}));var r,o=(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t,n){var r=this,o=this.constructor.prototype;return(r=e.call(this,t)||this).statusCode=n,r.__proto__=o,r}return o(t,e),t}(Error),a=function(e){function t(t){void 0===t&&(t="A timeout occurred.");var n=this,r=this.constructor.prototype;return(n=e.call(this,t)||this).__proto__=r,n}return o(t,e),t}(Error),s=function(e){function t(t){void 0===t&&(t="An abort occurred.");var n=this,r=this.constructor.prototype;return(n=e.call(this,t)||this).__proto__=r,n}return o(t,e),t}(Error),c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=200&&o.status<300?n(new u(o.status,o.statusText,o.response||o.responseText)):r(new i(o.statusText,o.status))},o.onerror=function(){t.logger.log(f.a.Warning,"Error from HTTP request. "+o.status+": "+o.statusText+"."),r(new i(o.statusText,o.status))},o.ontimeout=function(){t.logger.log(f.a.Warning,"Timeout from HTTP request."),r(new a)},o.send(e.content||"")})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))},t}(l),E=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),S=function(e){function t(t){var n=e.call(this)||this;if("undefined"!=typeof fetch||h.c.isNode)n.httpClient=new v(t);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");n.httpClient=new w(t)}return n}return E(t,e),t.prototype.send=function(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new s):e.method?e.url?this.httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))},t.prototype.getCookieString=function(e){return this.httpClient.getCookieString(e)},t}(l),_=n(46);!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close"}(b||(b={}));var I,C=function(){function e(){this.observers=[]}return e.prototype.next=function(e){for(var t=0,n=this.observers;t0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0?[2,Promise.reject(new Error("Unable to connect to the server with any of the available transports. "+i.join(" ")))]:[2,Promise.reject(new Error("None of the transports supported by the client are supported by the server."))]}}))}))},e.prototype.constructTransport=function(e){switch(e){case P.WebSockets:if(!this.options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new J(this.httpClient,this.accessTokenFactory,this.logger,this.options.logMessageContent||!1,this.options.WebSocket,this.options.headers||{});case P.ServerSentEvents:if(!this.options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new H(this.httpClient,this.accessTokenFactory,this.logger,this.options.logMessageContent||!1,this.options.EventSource,this.options.withCredentials,this.options.headers||{});case P.LongPolling:return new B(this.httpClient,this.accessTokenFactory,this.logger,this.options.logMessageContent||!1,this.options.withCredentials,this.options.headers||{});default:throw new Error("Unknown transport: "+e+".")}},e.prototype.startTransport=function(e,t){var n=this;return this.transport.onreceive=this.onreceive,this.transport.onclose=function(e){return n.stopConnection(e)},this.transport.connect(e,t)},e.prototype.resolveTransportOrError=function(e,t,n){var r=P[e.transport];if(null==r)return this.logger.log(f.a.Debug,"Skipping transport '"+e.transport+"' because it is not supported by this client."),new Error("Skipping transport '"+e.transport+"' because it is not supported by this client.");if(!function(e,t){return!e||0!=(t&e)}(t,r))return this.logger.log(f.a.Debug,"Skipping transport '"+P[r]+"' because it was disabled by the client."),new Error("'"+P[r]+"' is disabled by the client.");if(!(e.transferFormats.map((function(e){return O[e]})).indexOf(n)>=0))return this.logger.log(f.a.Debug,"Skipping transport '"+P[r]+"' because it does not support the requested transfer format '"+O[n]+"'."),new Error("'"+P[r]+"' does not support "+O[n]+".");if(r===P.WebSockets&&!this.options.WebSocket||r===P.ServerSentEvents&&!this.options.EventSource)return this.logger.log(f.a.Debug,"Skipping transport '"+P[r]+"' because it is not supported in your environment.'"),new Error("'"+P[r]+"' is not supported in your environment.");this.logger.log(f.a.Debug,"Selecting transport '"+P[r]+"'.");try{return this.constructTransport(r)}catch(e){return e}},e.prototype.isITransport=function(e){return e&&"object"==typeof e&&"connect"in e},e.prototype.stopConnection=function(e){var t=this;if(this.logger.log(f.a.Debug,"HttpConnection.stopConnection("+e+") called while in state "+this.connectionState+"."),this.transport=void 0,e=this.stopError||e,this.stopError=void 0,"Disconnected"!==this.connectionState){if("Connecting"===this.connectionState)throw this.logger.log(f.a.Warning,"Call to HttpConnection.stopConnection("+e+") was ignored because the connection is still in the connecting state."),new Error("HttpConnection.stopConnection("+e+") was called while the connection is still in the connecting state.");if("Disconnecting"===this.connectionState&&this.stopPromiseResolver(),e?this.logger.log(f.a.Error,"Connection disconnected with error '"+e+"'."):this.logger.log(f.a.Information,"Connection disconnected."),this.sendQueue&&(this.sendQueue.stop().catch((function(e){t.logger.log(f.a.Error,"TransportSendQueue.stop() threw error '"+e+"'.")})),this.sendQueue=void 0),this.connectionId=void 0,this.connectionState="Disconnected",this.connectionStarted){this.connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this.logger.log(f.a.Error,"HttpConnection.onclose("+e+") threw error '"+t+"'.")}}}else this.logger.log(f.a.Debug,"Call to HttpConnection.stopConnection("+e+") was ignored because the connection is already in the disconnected state.")},e.prototype.resolveUrl=function(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!h.c.isBrowser||!window.document)throw new Error("Cannot resolve '"+e+"'.");var t=window.document.createElement("a");return t.href=e,this.logger.log(f.a.Information,"Normalizing '"+e+"' to '"+t.href+"'."),t.href},e.prototype.resolveNegotiateUrl=function(e){var t=e.indexOf("?"),n=e.substring(0,-1===t?e.length:t);return"/"!==n[n.length-1]&&(n+="/"),n+="negotiate",-1===(n+=-1===t?"":e.substring(t)).indexOf("negotiateVersion")&&(n+=-1===t?"?":"&",n+="negotiateVersion="+this.negotiateVersion),n},e}();var X=function(){function e(e){this.transport=e,this.buffer=[],this.executing=!0,this.sendBufferedData=new Q,this.transportResult=new Q,this.sendLoopPromise=this.sendLoop()}return e.prototype.send=function(e){return this.bufferData(e),this.transportResult||(this.transportResult=new Q),this.transportResult.promise},e.prototype.stop=function(){return this.executing=!1,this.sendBufferedData.resolve(),this.sendLoopPromise},e.prototype.bufferData=function(e){if(this.buffer.length&&typeof this.buffer[0]!=typeof e)throw new Error("Expected data to be of type "+typeof this.buffer+" but was of type "+typeof e);this.buffer.push(e),this.sendBufferedData.resolve()},e.prototype.sendLoop=function(){return V(this,void 0,void 0,(function(){var t,n,r;return G(this,(function(o){switch(o.label){case 0:return[4,this.sendBufferedData.promise];case 1:if(o.sent(),!this.executing)return this.transportResult&&this.transportResult.reject("Connection stopped."),[3,6];this.sendBufferedData=new Q,t=this.transportResult,this.transportResult=void 0,n="string"==typeof this.buffer[0]?this.buffer.join(""):e.concatBuffers(this.buffer),this.buffer.length=0,o.label=2;case 2:return o.trys.push([2,4,,5]),[4,this.transport.send(n)];case 3:return o.sent(),t.resolve(),[3,5];case 4:return r=o.sent(),t.reject(r),[3,5];case 5:return[3,0];case 6:return[2]}}))}))},e.concatBuffers=function(e){for(var t=e.map((function(e){return e.byteLength})).reduce((function(e,t){return e+t})),n=new Uint8Array(t),r=0,o=0,i=e;o0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");return r in e||(e[r]=[]),e}function s(e,t,n){var i=e;if(e instanceof Comment&&(u(i)&&u(i).length>0))throw new Error("Not implemented: inserting non-empty logical container");if(c(i))throw new Error("Not implemented: moving existing logical children");var a=u(t);if(n0;)e(r,0)}var i=r;i.parentNode.removeChild(i)},t.getLogicalParent=c,t.getLogicalSiblingEnd=function(e){return e[i]||null},t.getLogicalChild=function(e,t){return u(e)[t]},t.isSvgElement=function(e){return"http://www.w3.org/2000/svg"===l(e).namespaceURI},t.getLogicalChildrenArray=u,t.permuteLogicalChildren=function(e,t){var n=u(e);t.forEach((function(e){e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=function e(t){if(t instanceof Element)return t;var n=f(t);if(n)return n.previousSibling;var r=c(t);return r instanceof Element?r.lastChild:e(r)}(e.moveRangeStart)})),t.forEach((function(t){var r=t.moveToBeforeMarker=document.createComment("marker"),o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):h(r,e)})),t.forEach((function(e){for(var t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd,i=r;i;){var a=i.nextSibling;if(n.insertBefore(i,t),i===o)break;i=a}n.removeChild(t)})),t.forEach((function(e){n[e.toSiblingIndex]=e.moveRangeStart}))},t.getClosestDomElement=l},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=n(23),o=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=f;var i=n(19);i.inherits=n(15);var a=n(39),s=n(44);i.inherits(f,a);for(var c=o(s.prototype),u=0;u0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]-1&&this.subject.observers.splice(e,1),0===this.subject.observers.length&&this.subject.cancelCallback&&this.subject.cancelCallback().catch((function(e){}))},e}(),y=function(){function e(e){this.minimumLogLevel=e,this.outputConsole=console}return e.prototype.log=function(e,t){if(e>=this.minimumLogLevel)switch(e){case r.a.Critical:case r.a.Error:this.outputConsole.error("["+(new Date).toISOString()+"] "+r.a[e]+": "+t);break;case r.a.Warning:this.outputConsole.warn("["+(new Date).toISOString()+"] "+r.a[e]+": "+t);break;case r.a.Information:this.outputConsole.info("["+(new Date).toISOString()+"] "+r.a[e]+": "+t);break;default:this.outputConsole.log("["+(new Date).toISOString()+"] "+r.a[e]+": "+t)}},e}();function v(){var e="X-SignalR-User-Agent";return l.isNode&&(e="User-Agent"),[e,b(c,m(),E(),w())]}function b(e,t,n,r){var o="Microsoft SignalR/",i=e.split(".");return o+=i[0]+"."+i[1],o+=" ("+e+"; ",o+=t&&""!==t?t+"; ":"Unknown OS; ",o+=""+n,o+=r?"; "+r:"; Unknown Runtime Version",o+=")"}function m(){if(!l.isNode)return"";switch(e.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return e.platform}}function w(){if(l.isNode)return e.versions.node}function E(){return l.isNode?"NodeJS":"Browser"}}).call(this,n(13))},function(e,t,n){"use strict";n.r(t),n.d(t,"AbortError",(function(){return s})),n.d(t,"HttpError",(function(){return i})),n.d(t,"TimeoutError",(function(){return a})),n.d(t,"HttpClient",(function(){return l})),n.d(t,"HttpResponse",(function(){return u})),n.d(t,"DefaultHttpClient",(function(){return S})),n.d(t,"HubConnection",(function(){return R})),n.d(t,"HubConnectionState",(function(){return I})),n.d(t,"HubConnectionBuilder",(function(){return re})),n.d(t,"MessageType",(function(){return b})),n.d(t,"LogLevel",(function(){return f.a})),n.d(t,"HttpTransportType",(function(){return P})),n.d(t,"TransferFormat",(function(){return O})),n.d(t,"NullLogger",(function(){return $.a})),n.d(t,"JsonHubProtocol",(function(){return ee})),n.d(t,"Subject",(function(){return C})),n.d(t,"VERSION",(function(){return h.e}));var r,o=(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t,n){var r=this,o=this.constructor.prototype;return(r=e.call(this,t)||this).statusCode=n,r.__proto__=o,r}return o(t,e),t}(Error),a=function(e){function t(t){void 0===t&&(t="A timeout occurred.");var n=this,r=this.constructor.prototype;return(n=e.call(this,t)||this).__proto__=r,n}return o(t,e),t}(Error),s=function(e){function t(t){void 0===t&&(t="An abort occurred.");var n=this,r=this.constructor.prototype;return(n=e.call(this,t)||this).__proto__=r,n}return o(t,e),t}(Error),c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=200&&o.status<300?n(new u(o.status,o.statusText,o.response||o.responseText)):r(new i(o.statusText,o.status))},o.onerror=function(){t.logger.log(f.a.Warning,"Error from HTTP request. "+o.status+": "+o.statusText+"."),r(new i(o.statusText,o.status))},o.ontimeout=function(){t.logger.log(f.a.Warning,"Timeout from HTTP request."),r(new a)},o.send(e.content||"")})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))},t}(l),E=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),S=function(e){function t(t){var n=e.call(this)||this;if("undefined"!=typeof fetch||h.c.isNode)n.httpClient=new v(t);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");n.httpClient=new w(t)}return n}return E(t,e),t.prototype.send=function(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new s):e.method?e.url?this.httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))},t.prototype.getCookieString=function(e){return this.httpClient.getCookieString(e)},t}(l),_=n(47);!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close"}(b||(b={}));var I,C=function(){function e(){this.observers=[]}return e.prototype.next=function(e){for(var t=0,n=this.observers;t0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0?[2,Promise.reject(new Error("Unable to connect to the server with any of the available transports. "+i.join(" ")))]:[2,Promise.reject(new Error("None of the transports supported by the client are supported by the server."))]}}))}))},e.prototype.constructTransport=function(e){switch(e){case P.WebSockets:if(!this.options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new J(this.httpClient,this.accessTokenFactory,this.logger,this.options.logMessageContent||!1,this.options.WebSocket,this.options.headers||{});case P.ServerSentEvents:if(!this.options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new H(this.httpClient,this.accessTokenFactory,this.logger,this.options.logMessageContent||!1,this.options.EventSource,this.options.withCredentials,this.options.headers||{});case P.LongPolling:return new B(this.httpClient,this.accessTokenFactory,this.logger,this.options.logMessageContent||!1,this.options.withCredentials,this.options.headers||{});default:throw new Error("Unknown transport: "+e+".")}},e.prototype.startTransport=function(e,t){var n=this;return this.transport.onreceive=this.onreceive,this.transport.onclose=function(e){return n.stopConnection(e)},this.transport.connect(e,t)},e.prototype.resolveTransportOrError=function(e,t,n){var r=P[e.transport];if(null==r)return this.logger.log(f.a.Debug,"Skipping transport '"+e.transport+"' because it is not supported by this client."),new Error("Skipping transport '"+e.transport+"' because it is not supported by this client.");if(!function(e,t){return!e||0!=(t&e)}(t,r))return this.logger.log(f.a.Debug,"Skipping transport '"+P[r]+"' because it was disabled by the client."),new Error("'"+P[r]+"' is disabled by the client.");if(!(e.transferFormats.map((function(e){return O[e]})).indexOf(n)>=0))return this.logger.log(f.a.Debug,"Skipping transport '"+P[r]+"' because it does not support the requested transfer format '"+O[n]+"'."),new Error("'"+P[r]+"' does not support "+O[n]+".");if(r===P.WebSockets&&!this.options.WebSocket||r===P.ServerSentEvents&&!this.options.EventSource)return this.logger.log(f.a.Debug,"Skipping transport '"+P[r]+"' because it is not supported in your environment.'"),new Error("'"+P[r]+"' is not supported in your environment.");this.logger.log(f.a.Debug,"Selecting transport '"+P[r]+"'.");try{return this.constructTransport(r)}catch(e){return e}},e.prototype.isITransport=function(e){return e&&"object"==typeof e&&"connect"in e},e.prototype.stopConnection=function(e){var t=this;if(this.logger.log(f.a.Debug,"HttpConnection.stopConnection("+e+") called while in state "+this.connectionState+"."),this.transport=void 0,e=this.stopError||e,this.stopError=void 0,"Disconnected"!==this.connectionState){if("Connecting"===this.connectionState)throw this.logger.log(f.a.Warning,"Call to HttpConnection.stopConnection("+e+") was ignored because the connection is still in the connecting state."),new Error("HttpConnection.stopConnection("+e+") was called while the connection is still in the connecting state.");if("Disconnecting"===this.connectionState&&this.stopPromiseResolver(),e?this.logger.log(f.a.Error,"Connection disconnected with error '"+e+"'."):this.logger.log(f.a.Information,"Connection disconnected."),this.sendQueue&&(this.sendQueue.stop().catch((function(e){t.logger.log(f.a.Error,"TransportSendQueue.stop() threw error '"+e+"'.")})),this.sendQueue=void 0),this.connectionId=void 0,this.connectionState="Disconnected",this.connectionStarted){this.connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this.logger.log(f.a.Error,"HttpConnection.onclose("+e+") threw error '"+t+"'.")}}}else this.logger.log(f.a.Debug,"Call to HttpConnection.stopConnection("+e+") was ignored because the connection is already in the disconnected state.")},e.prototype.resolveUrl=function(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!h.c.isBrowser||!window.document)throw new Error("Cannot resolve '"+e+"'.");var t=window.document.createElement("a");return t.href=e,this.logger.log(f.a.Information,"Normalizing '"+e+"' to '"+t.href+"'."),t.href},e.prototype.resolveNegotiateUrl=function(e){var t=e.indexOf("?"),n=e.substring(0,-1===t?e.length:t);return"/"!==n[n.length-1]&&(n+="/"),n+="negotiate",-1===(n+=-1===t?"":e.substring(t)).indexOf("negotiateVersion")&&(n+=-1===t?"?":"&",n+="negotiateVersion="+this.negotiateVersion),n},e}();var X=function(){function e(e){this.transport=e,this.buffer=[],this.executing=!0,this.sendBufferedData=new Q,this.transportResult=new Q,this.sendLoopPromise=this.sendLoop()}return e.prototype.send=function(e){return this.bufferData(e),this.transportResult||(this.transportResult=new Q),this.transportResult.promise},e.prototype.stop=function(){return this.executing=!1,this.sendBufferedData.resolve(),this.sendLoopPromise},e.prototype.bufferData=function(e){if(this.buffer.length&&typeof this.buffer[0]!=typeof e)throw new Error("Expected data to be of type "+typeof this.buffer+" but was of type "+typeof e);this.buffer.push(e),this.sendBufferedData.resolve()},e.prototype.sendLoop=function(){return G(this,void 0,void 0,(function(){var t,n,r;return V(this,(function(o){switch(o.label){case 0:return[4,this.sendBufferedData.promise];case 1:if(o.sent(),!this.executing)return this.transportResult&&this.transportResult.reject("Connection stopped."),[3,6];this.sendBufferedData=new Q,t=this.transportResult,this.transportResult=void 0,n="string"==typeof this.buffer[0]?this.buffer.join(""):e.concatBuffers(this.buffer),this.buffer.length=0,o.label=2;case 2:return o.trys.push([2,4,,5]),[4,this.transport.send(n)];case 3:return o.sent(),t.resolve(),[3,5];case 4:return r=o.sent(),t.reject(r),[3,5];case 5:return[3,0];case 6:return[2]}}))}))},e.concatBuffers=function(e){for(var t=e.map((function(e){return e.byteLength})).reduce((function(e,t){return e+t})),n=new Uint8Array(t),r=0,o=0,i=e;o0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");return r in e||(e[r]=[]),e}function s(e,t,n){var i=e;if(e instanceof Comment&&(u(i)&&u(i).length>0))throw new Error("Not implemented: inserting non-empty logical container");if(c(i))throw new Error("Not implemented: moving existing logical children");var a=u(t);if(n0;)e(r,0)}var i=r;i.parentNode.removeChild(i)},t.getLogicalParent=c,t.getLogicalSiblingEnd=function(e){return e[i]||null},t.getLogicalChild=function(e,t){return u(e)[t]},t.isSvgElement=function(e){return"http://www.w3.org/2000/svg"===l(e).namespaceURI},t.getLogicalChildrenArray=u,t.permuteLogicalChildren=function(e,t){var n=u(e);t.forEach((function(e){e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=function e(t){if(t instanceof Element)return t;var n=f(t);if(n)return n.previousSibling;var r=c(t);return r instanceof Element?r.lastChild:e(r)}(e.moveRangeStart)})),t.forEach((function(t){var r=t.moveToBeforeMarker=document.createComment("marker"),o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):h(r,e)})),t.forEach((function(e){for(var t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd,i=r;i;){var a=i.nextSibling;if(n.insertBefore(i,t),i===o)break;i=a}n.removeChild(t)})),t.forEach((function(e){n[e.toSiblingIndex]=e.moveRangeStart}))},t.getClosestDomElement=l},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=n(24),o=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=f;var i=n(19);i.inherits=n(15);var a=n(40),s=n(45);i.inherits(f,a);for(var c=o(s.prototype),u=0;u * @license MIT */ -var r=n(54),o=n(55),i=n(56);function a(){return c.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function d(e,t){if(c.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return F(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return H(e).length;default:if(r)return F(e).length;t=(""+t).toLowerCase(),r=!0}}function g(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,n);case"utf8":case"utf-8":return k(this,t,n);case"ascii":return T(this,t,n);case"latin1":case"binary":return P(this,t,n);case"base64":return C(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function y(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function v(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=c.from(t,r)),c.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,o);if("number"==typeof t)return t&=255,c.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,o){var i,a=1,s=e.length,c=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,c/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var l=-1;for(i=n;is&&(n=s-c),i=n;i>=0;i--){for(var f=!0,h=0;ho&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function C(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function k(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:u>223?3:u>191?2:1;if(o+f<=n)switch(f){case 1:u<128&&(l=u);break;case 2:128==(192&(i=e[o+1]))&&(c=(31&u)<<6|63&i)>127&&(l=c);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(c=(15&u)<<12|(63&i)<<6|63&a)>2047&&(c<55296||c>57343)&&(l=c);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(c=(15&u)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&c<1114112&&(l=c)}null===l?(l=65533,f=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),o+=f}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},c.prototype.compare=function(e,t,n,r,o){if(!c.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(i,a),u=this.slice(r,o),l=e.slice(t,n),f=0;fo)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return m(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":return E(this,e,t,n);case"latin1":case"binary":return S(this,e,t,n);case"base64":return _(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function T(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function D(e,t,n,r,o,i){if(!c.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function A(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function M(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function L(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function j(e,t,n,r,i){return i||L(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function B(e,t,n,r,i){return i||L(e,0,n,8),o.write(e,t,n,r,52,8),n+8}c.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},c.prototype.readUInt8=function(e,t){return t||x(e,1,this.length),this[e]},c.prototype.readUInt16LE=function(e,t){return t||x(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUInt16BE=function(e,t){return t||x(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUInt32LE=function(e,t){return t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUInt32BE=function(e,t){return t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||x(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},c.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||x(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},c.prototype.readInt8=function(e,t){return t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){t||x(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt16BE=function(e,t){t||x(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt32LE=function(e,t){return t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readFloatLE=function(e,t){return t||x(e,4,this.length),o.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return t||x(e,4,this.length),o.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return t||x(e,8,this.length),o.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return t||x(e,8,this.length),o.read(this,e,!1,52,8)},c.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||D(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},c.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,1,255,0),c.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},c.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},c.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},c.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):M(this,e,t,!0),t+4},c.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},c.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);D(this,e,t,n,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},c.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);D(this,e,t,n,o-1,-o)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},c.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,1,127,-128),c.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},c.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},c.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,4,2147483647,-2147483648),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):M(this,e,t,!0),t+4},c.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},c.prototype.writeFloatLE=function(e,t,n){return j(this,e,t,!0,n)},c.prototype.writeFloatBE=function(e,t,n){return j(this,e,t,!1,n)},c.prototype.writeDoubleLE=function(e,t,n){return B(this,e,t,!0,n)},c.prototype.writeDoubleBE=function(e,t,n){return B(this,e,t,!1,n)},c.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(i<1e3||!c.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function H(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(N,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function W(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}}).call(this,n(8))},function(e,t,n){"use strict";var r=n(14).Buffer,o=n(57),i=n(22),a=n(70),s=n(73),c=n(74);e.exports=function(e){var t=[],n=[];return{encode:c(t,(e=e||{forceFloat64:!1,compatibilityMode:!1,disableTimestampEncoding:!1}).forceFloat64,e.compatibilityMode,e.disableTimestampEncoding),decode:s(n),register:function(e,t,n,a){return o(t,"must have a constructor"),o(n,"must have an encode function"),o(e>=0,"must have a non-negative type"),o(a,"must have a decode function"),this.registerEncoder((function(e){return e instanceof t}),(function(t){var o=i(),a=r.allocUnsafe(1);return a.writeInt8(e,0),o.append(a),o.append(n(t)),o})),this.registerDecoder(e,a),this},registerEncoder:function(e,n){return o(e,"must have an encode function"),o(n,"must have an encode function"),t.push({check:e,encode:n}),this},registerDecoder:function(e,t){return o(e>=0,"must have a non-negative type"),o(t,"must have a decode function"),n.push({type:e,decode:t}),this},encoder:a.encoder,decoder:a.decoder,buffer:!0,type:"msgpack5",IncompleteBufferError:s.IncompleteBufferError}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(25),n(17);var r=n(26),o=n(7),i={},a=!1;function s(e,t,n){var o=i[e];o||(o=i[e]=new r.BrowserRenderer(e)),o.attachRootComponentToLogicalElement(n,t)}t.attachRootComponentToLogicalElement=s,t.attachRootComponentToElement=function(e,t,n){var r=document.querySelector(e);if(!r)throw new Error("Could not find any element matching selector '"+e+"'.");s(n||0,o.toLogicalElement(r,!0),t)},t.getRendererer=function(e){return i[e]},t.renderBatch=function(e,t){var n=i[e];if(!n)throw new Error("There is no browser renderer with ID "+e+".");for(var r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),c=r.count(o),u=t.referenceFrames(),l=r.values(u),f=t.diffReader,h=0;h1)for(var n=1;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]>2]}t.monoPlatform={start:function(e){return new Promise((function(t,n){var u,l;s.attachDebuggerHotkey(e),window.Browser={init:function(){}},u=function(){window.Module=function(e,t,n){var u=this,l=e.bootConfig.resources,f=window.Module||{},h=["DEBUGGING ENABLED"];f.print=function(e){return h.indexOf(e)<0&&console.log(e)},f.printErr=function(e){console.error(e),c.showErrorNotification()},f.preRun=f.preRun||[],f.postRun=f.postRun||[],f.preloadPlugins=[];var d,b,m=e.loadResources(l.assembly,(function(e){return"_framework/"+e}),"assembly"),w=e.loadResources(l.pdb||{},(function(e){return"_framework/"+e}),"pdb"),E=e.loadResource("dotnet.wasm","_framework/dotnet.wasm",e.bootConfig.resources.runtime["dotnet.wasm"],"dotnetwasm");return e.bootConfig.resources.runtime.hasOwnProperty("dotnet.timezones.blat")&&(d=e.loadResource("dotnet.timezones.blat","_framework/dotnet.timezones.blat",e.bootConfig.resources.runtime["dotnet.timezones.blat"],"globalization")),e.bootConfig.resources.runtime.hasOwnProperty("icudt.dat")&&(b=e.loadResource("icudt.dat","_framework/icudt.dat",e.bootConfig.resources.runtime["icudt.dat"],"globalization")),f.instantiateWasm=function(e,t){return r(u,void 0,void 0,(function(){var n,r;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,3,,4]),[4,E];case 1:return[4,y(o.sent(),e)];case 2:return n=o.sent(),[3,4];case 3:throw r=o.sent(),f.printErr(r),r;case 4:return t(n),[2]}}))})),[]},f.preRun.push((function(){i=cwrap("mono_wasm_add_assembly",null,["string","number","number"]),MONO.loaded_files=[],d&&function(e){r(this,void 0,void 0,(function(){var t,n;return o(this,(function(r){switch(r.label){case 0:return t="blazor:timezonedata",addRunDependency(t),[4,e.response];case 1:return[4,r.sent().arrayBuffer()];case 2:return n=r.sent(),Module.FS_createPath("/","usr",!0,!0),Module.FS_createPath("/usr/","share",!0,!0),Module.FS_createPath("/usr/share/","zoneinfo",!0,!0),MONO.mono_wasm_load_data_archive(new Uint8Array(n),"/usr/share/zoneinfo/"),removeRunDependency(t),[2]}}))}))}(d),b?function(e){r(this,void 0,void 0,(function(){var t,n,r,i,a;return o(this,(function(o){switch(o.label){case 0:return t="blazor:icudata",addRunDependency(t),[4,e.response];case 1:return n=o.sent(),i=Uint8Array.bind,[4,n.arrayBuffer()];case 2:if(r=new(i.apply(Uint8Array,[void 0,o.sent()])),a=MONO.mono_wasm_load_bytes_into_heap(r),!MONO.mono_wasm_load_icu_data(a))throw new Error("Error loading ICU asset.");return removeRunDependency(t),[2]}}))}))}(b):MONO.mono_wasm_setenv("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT","1"),m.forEach((function(e){return S(e,function(e,t){var n=e.lastIndexOf(".");if(n<0)throw new Error("No extension to replace in '"+e+"'");return e.substr(0,n)+t}(e.name,".dll"))})),w.forEach((function(e){return S(e,e.name)})),window.Blazor._internal.dotNetCriticalError=function(e){f.printErr(BINDING.conv_string(e)||"(null)")},window.Blazor._internal.getSatelliteAssemblies=function(t){var n=BINDING.mono_array_to_js_array(t),i=e.bootConfig.resources.satelliteResources;if(i){var a=Promise.all(n.filter((function(e){return i.hasOwnProperty(e)})).map((function(t){return e.loadResources(i[t],(function(e){return"_framework/"+e}),"assembly")})).reduce((function(e,t){return e.concat(t)}),new Array).map((function(e){return r(u,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.response];case 1:return[2,t.sent().arrayBuffer()]}}))}))})));return BINDING.js_to_mono_obj(a.then((function(e){return e.length&&(window.Blazor._internal.readSatelliteAssemblies=function(){for(var t=BINDING.mono_obj_array_new(e.length),n=0;n>1];var n},readInt32Field:function(e,t){return h(e+(t||0))},readUint64Field:function(e,t){return function(e){var t=e>>2,n=Module.HEAPU32[t+1];if(n>l)throw new Error("Cannot read uint64 with high order part "+n+", because the result would exceed Number.MAX_SAFE_INTEGER.");return n*u+Module.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),Module.HEAPF32[n>>2];var n},readObjectField:function(e,t){return h(e+(t||0))},readStringField:function(e,t,n){var r,o=h(e+(t||0));if(0===o)return null;if(n){var i=BINDING.unbox_mono_obj(o);return"boolean"==typeof i?i?"":null:i}return f?void 0===(r=f.stringCache.get(o))&&(r=BINDING.conv_string(o),f.stringCache.set(o,r)):r=BINDING.conv_string(o),r},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return v(),f=new b},invokeWhenHeapUnlocked:function(e){f?f.enqueuePostReleaseAction(e):e()}};var p=document.createElement("a");function d(e){return e+12}function g(e,t,n){var r="["+e+"] "+t+":"+n;return BINDING.bind_static_method(r)}function y(e,t){return r(this,void 0,void 0,(function(){var n,r;return o(this,(function(o){switch(o.label){case 0:if("function"!=typeof WebAssembly.instantiateStreaming)return[3,4];o.label=1;case 1:return o.trys.push([1,3,,4]),[4,WebAssembly.instantiateStreaming(e.response,t)];case 2:return[2,o.sent().instance];case 3:return n=o.sent(),console.info("Streaming compilation failed. Falling back to ArrayBuffer instantiation. ",n),[3,4];case 4:return[4,e.response.then((function(e){return e.arrayBuffer()}))];case 5:return r=o.sent(),[4,WebAssembly.instantiate(r,t)];case 6:return[2,o.sent().instance]}}))}))}function v(){if(f)throw new Error("Assertion failed - heap is currently locked")}var b=function(){function e(){this.stringCache=new Map}return e.prototype.enqueuePostReleaseAction=function(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)},e.prototype.release=function(){var e;if(f!==this)throw new Error("Trying to release a lock which isn't current");for(f=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;){this.postReleaseActions.shift()(),v()}},e}()},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]this.length)&&(r=this.length),n>=this.length)return e||i.alloc(0);if(r<=0)return e||i.alloc(0);var o,a,s=!!e,c=this._offset(n),u=r-n,l=u,f=s&&t||0,h=c[1];if(0===n&&r==this.length){if(!s)return 1===this._bufs.length?this._bufs[0]:i.concat(this._bufs,this.length);for(a=0;a(o=this._bufs[a].length-h))){this._bufs[a].copy(e,f,h,h+l);break}this._bufs[a].copy(e,f,h),f+=o,l-=o,h&&(h=0)}return e},a.prototype.shallowSlice=function(e,t){e=e||0,t=t||this.length,e<0&&(e+=this.length),t<0&&(t+=this.length);var n=this._offset(e),r=this._offset(t),o=this._bufs.slice(n[0],r[0]+1);return 0==r[1]?o.pop():o[o.length-1]=o[o.length-1].slice(0,r[1]),0!=n[1]&&(o[0]=o[0].slice(n[1])),new a(o)},a.prototype.toString=function(e,t,n){return this.slice(t,n).toString(e)},a.prototype.consume=function(e){for(;this._bufs.length;){if(!(e>=this._bufs[0].length)){this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift()}return this},a.prototype.duplicate=function(){for(var e=0,t=new a;e0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,a,s)}}))}),{root:i,rootMargin:o+"px"});a.observe(t),a.observe(n);var s=u(t),c=u(n);function u(e){var t=new MutationObserver((function(){a.unobserve(e),a.observe(e)}));return t.observe(e,{attributes:!0}),t}r[e._id]={intersectionObserver:a,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){var t=r[e._id];t&&(t.intersectionObserver.disconnect(),t.mutationObserverBefore.disconnect(),t.mutationObserverAfter.disconnect(),e.dispose(),delete r[e._id])}};var r={}},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1].*)$/;function i(e,t){var n=e.currentElement;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){var r=new RegExp(o).exec(n.textContent),i=r&&r.groups&&r.groups.descriptor;if(!i)return;try{var s=function(e){var t=JSON.parse(e),n=t.type;if("server"!==n&&"webassembly"!==n)throw new Error("Invalid component type '"+n+"'.");return t}(i);switch(t){case"webassembly":return function(e,t,n){var r=e.type,o=e.assembly,i=e.typeName,s=e.parameterDefinitions,c=e.parameterValues,u=e.prerenderId;if("webassembly"!==r)return;if(!o)throw new Error("assembly must be defined when using a descriptor.");if(!i)throw new Error("typeName must be defined when using a descriptor.");if(u){var l=a(u,n);if(!l)throw new Error("Could not find an end component comment for '"+t+"'");return{type:r,assembly:o,typeName:i,parameterDefinitions:s&&atob(s),parameterValues:c&&atob(c),start:t,prerenderId:u,end:l}}return{type:r,assembly:o,typeName:i,parameterDefinitions:s&&atob(s),parameterValues:c&&atob(c),start:t}}(s,n,e);case"server":return function(e,t,n){var r=e.type,o=e.descriptor,i=e.sequence,s=e.prerenderId;if("server"!==r)return;if(!o)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===i)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(i))throw new Error("Error parsing the sequence '"+i+"' for component '"+JSON.stringify(e)+"'");if(s){var c=a(s,n);if(!c)throw new Error("Could not find an end component comment for '"+t+"'");return{type:r,sequence:i,descriptor:o,start:t,prerenderId:s,end:c}}return{type:r,sequence:i,descriptor:o,start:t}}(s,n,e)}}catch(e){throw new Error("Found malformed component comment at "+n.textContent)}}}function a(e,t){for(;t.next()&&t.currentElement;){var n=t.currentElement;if(n.nodeType===Node.COMMENT_NODE&&n.textContent){var r=new RegExp(o).exec(n.textContent),i=r&&r[1];if(i)return s(i,e),n}}}function s(e,t){var n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error("Invalid end of component comment: '"+e+"'");var r=n.prerenderId;if(!r)throw new Error("End of component comment must have a value for the prerendered property: '"+e+"'");if(r!==t)throw new Error("End of component comment prerendered property must match the start comment prerender id: '"+t+"', '"+r+"'")}var c=function(){function e(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}return e.prototype.next=function(){return this.currentIndex++,this.currentIndex=i)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),c=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),d(n)?r.showHidden=n:n&&t._extend(r,n),b(r.showHidden)&&(r.showHidden=!1),b(r.depth)&&(r.depth=2),b(r.colors)&&(r.colors=!1),b(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=c),l(r,e,r.depth)}function c(e,t){var n=s.styles[t];return n?"["+s.colors[n][0]+"m"+e+"["+s.colors[n][1]+"m":e}function u(e,t){return e}function l(e,n,r){if(e.customInspect&&n&&_(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var o=n.inspect(r,e);return v(o)||(o=l(e,o,r)),o}var i=function(e,t){if(b(t))return e.stylize("undefined","undefined");if(v(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(y(t))return e.stylize(""+t,"number");if(d(t))return e.stylize(""+t,"boolean");if(g(t))return e.stylize("null","null")}(e,n);if(i)return i;var a=Object.keys(n),s=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(n)),S(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return f(n);if(0===a.length){if(_(n)){var c=n.name?": "+n.name:"";return e.stylize("[Function"+c+"]","special")}if(m(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(E(n))return e.stylize(Date.prototype.toString.call(n),"date");if(S(n))return f(n)}var u,w="",I=!1,C=["{","}"];(p(n)&&(I=!0,C=["[","]"]),_(n))&&(w=" [Function"+(n.name?": "+n.name:"")+"]");return m(n)&&(w=" "+RegExp.prototype.toString.call(n)),E(n)&&(w=" "+Date.prototype.toUTCString.call(n)),S(n)&&(w=" "+f(n)),0!==a.length||I&&0!=n.length?r<0?m(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),u=I?function(e,t,n,r,o){for(var i=[],a=0,s=t.length;a=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(u,w,C)):C[0]+w+C[1]}function f(e){return"["+Error.prototype.toString.call(e)+"]"}function h(e,t,n,r,o,i){var a,s,c;if((c=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?s=c.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):c.set&&(s=e.stylize("[Setter]","special")),P(r,o)||(a="["+o+"]"),s||(e.seen.indexOf(c.value)<0?(s=g(n)?l(e,c.value,null):l(e,c.value,n-1)).indexOf("\n")>-1&&(s=i?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),b(a)){if(i&&o.match(/^\d+$/))return s;(a=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function p(e){return Array.isArray(e)}function d(e){return"boolean"==typeof e}function g(e){return null===e}function y(e){return"number"==typeof e}function v(e){return"string"==typeof e}function b(e){return void 0===e}function m(e){return w(e)&&"[object RegExp]"===I(e)}function w(e){return"object"==typeof e&&null!==e}function E(e){return w(e)&&"[object Date]"===I(e)}function S(e){return w(e)&&("[object Error]"===I(e)||e instanceof Error)}function _(e){return"function"==typeof e}function I(e){return Object.prototype.toString.call(e)}function C(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(n){if(b(i)&&(i=e.env.NODE_DEBUG||""),n=n.toUpperCase(),!a[n])if(new RegExp("\\b"+n+"\\b","i").test(i)){var r=e.pid;a[n]=function(){var e=t.format.apply(t,arguments);console.error("%s %d: %s",n,r,e)}}else a[n]=function(){};return a[n]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=p,t.isBoolean=d,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=y,t.isString=v,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=b,t.isRegExp=m,t.isObject=w,t.isDate=E,t.isError=S,t.isFunction=_,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(59);var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function T(){var e=new Date,t=[C(e.getHours()),C(e.getMinutes()),C(e.getSeconds())].join(":");return[e.getDate(),k[e.getMonth()],t].join(" ")}function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",T(),t.format.apply(t,arguments))},t.inherits=n(60),t._extend=function(e,t){if(!t||!w(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e};var O="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function R(e,t){if(!e){var n=new Error("Promise was rejected with a falsy value");n.reason=e,e=n}return t(e)}t.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(O&&e[O]){var t;if("function"!=typeof(t=e[O]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,O,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,n,r=new Promise((function(e,r){t=e,n=r})),o=[],i=0;i0?("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===u.prototype||(t=function(e){return u.from(e)}(t)),r?a.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):E(e,a,t,!0):a.ended?e.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(t=a.decoder.write(t),a.objectMode||0!==t.length?E(e,a,t,!1):C(e,a)):E(e,a,t,!1))):r||(a.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function _(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(p("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(I,e):I(e))}function I(e){p("emit readable"),e.emit("readable"),O(e)}function C(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(k,e,t))}function k(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;ei.length?i.length:e;if(a===i.length?o+=i:o+=i.slice(0,e),0===(e-=a)){a===i.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=i.slice(a));break}++r}return t.length-=r,o}(e,t):function(e,t){var n=u.allocUnsafe(e),r=t.head,o=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var i=r.data,a=e>i.length?i.length:e;if(i.copy(n,n.length-e,0,a),0===(e-=a)){a===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(a));break}++o}return t.length-=o,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function x(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(D,t,e))}function D(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function A(e,t){for(var n=0,r=e.length;n=t.highWaterMark||t.ended))return p("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?x(this):_(this),null;if(0===(e=S(e,t))&&t.ended)return 0===t.length&&x(this),null;var r,o=t.needReadable;return p("need readable",o),(0===t.length||t.length-e0?R(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&x(this)),null!==r&&this.emit("data",r),r},m.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},m.prototype.pipe=function(e,t){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,p("pipe count=%d opts=%j",i.pipesCount,t);var c=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?l:m;function u(t,r){p("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,p("cleanup"),e.removeListener("close",v),e.removeListener("finish",b),e.removeListener("drain",f),e.removeListener("error",y),e.removeListener("unpipe",u),n.removeListener("end",l),n.removeListener("end",m),n.removeListener("data",g),h=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||f())}function l(){p("onend"),e.end()}i.endEmitted?o.nextTick(c):n.once("end",c),e.on("unpipe",u);var f=function(e){return function(){var t=e._readableState;p("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,O(e))}}(n);e.on("drain",f);var h=!1;var d=!1;function g(t){p("ondata"),d=!1,!1!==e.write(t)||d||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==A(i.pipes,e))&&!h&&(p("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,d=!0),n.pause())}function y(t){p("onerror",t),m(),e.removeListener("error",y),0===s(e,"error")&&e.emit("error",t)}function v(){e.removeListener("finish",b),m()}function b(){p("onfinish"),e.removeListener("close",v),m()}function m(){p("unpipe"),n.unpipe(e)}return n.on("data",g),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",y),e.once("close",v),e.once("finish",b),e.emit("pipe",n),i.flowing||(p("pipe resume"),n.resume()),e},m.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i0&&a.length>o&&!a.warned){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,s=c,console&&console.warn&&console.warn(s)}return e}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},o=h.bind(r);return o.listener=n,r.wrapFn=o,o}function d(e,t,n){var r=e._events;if(void 0===r)return[];var o=r[t];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(a=t[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var c=o[e];if(void 0===c)return!1;if("function"==typeof c)i(c,this,t);else{var u=c.length,l=y(c,u);for(n=0;n=0;i--)if(n[i]===t||n[i].listener===t){a=n[i].listener,o=i;break}if(o<0)return this;0===o?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},s.prototype.listeners=function(e){return d(this,e,!0)},s.prototype.rawListeners=function(e){return d(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):g.call(e,t)},s.prototype.listenerCount=g,s.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(e,t,n){e.exports=n(40).EventEmitter},function(e,t,n){"use strict";var r=n(23);function o(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||r.nextTick(o,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?(r.nextTick(o,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,n){"use strict";var r=n(66).Buffer,o=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function i(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===o||!o(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=c,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=l,this.end=f,t=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function c(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function l(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function f(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function h(e){return e.toString(this.encoding)}function p(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return o>0&&(e.lastNeed=o-1),o;if(--r=0)return o>0&&(e.lastNeed=o-2),o;if(--r=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){"use strict";(function(t,r,o){var i=n(23);function a(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var o=r.callback;t.pendingcb--,o(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=b;var s,c=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:i.nextTick;b.WritableState=v;var u=n(19);u.inherits=n(15);var l={deprecate:n(69)},f=n(41),h=n(14).Buffer,p=o.Uint8Array||function(){};var d,g=n(42);function y(){}function v(e,t){s=s||n(9),e=e||{};var r=t instanceof s;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,u=e.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(u||0===u)?u:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===e.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,o=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,o){--t.pendingcb,n?(i.nextTick(o,r),i.nextTick(I,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),I(e,t))}(e,n,r,t,o);else{var a=S(n);a||n.corked||n.bufferProcessing||!n.bufferedRequest||E(e,n),r?c(w,e,n,a,o):w(e,n,a,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function b(e){if(s=s||n(9),!(d.call(b,this)||this instanceof s))return new b(e);this._writableState=new v(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),f.call(this)}function m(e,t,n,r,o,i,a){t.writelen=r,t.writecb=a,t.writing=!0,t.sync=!0,n?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function w(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),I(e,t)}function E(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=n;for(var s=0,c=!0;n;)o[s]=n,n.isBuf||(c=!1),n=n.next,s+=1;o.allBuffers=c,m(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;n;){var u=n.chunk,l=n.encoding,f=n.callback;if(m(e,t,!1,t.objectMode?1:u.length,u,l,f),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function S(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function _(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),I(e,t)}))}function I(e,t){var n=S(t);return n&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(_,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}u.inherits(b,f),v.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(v.prototype,"buffer",{get:l.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(d=Function.prototype[Symbol.hasInstance],Object.defineProperty(b,Symbol.hasInstance,{value:function(e){return!!d.call(this,e)||this===b&&(e&&e._writableState instanceof v)}})):d=function(e){return e instanceof this},b.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},b.prototype.write=function(e,t,n){var r,o=this._writableState,a=!1,s=!o.objectMode&&(r=e,h.isBuffer(r)||r instanceof p);return s&&!h.isBuffer(e)&&(e=function(e){return h.from(e)}(e)),"function"==typeof t&&(n=t,t=null),s?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof n&&(n=y),o.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),i.nextTick(t,n)}(this,n):(s||function(e,t,n,r){var o=!0,a=!1;return null===n?a=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),i.nextTick(r,a),o=!1),o}(this,o,e,n))&&(o.pendingcb++,a=function(e,t,n,r,o,i){if(!n){var a=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=h.from(t,n));return t}(t,r,o);r!==a&&(n=!0,o="buffer",r=a)}var s=t.objectMode?1:r.length;t.length+=s;var c=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(b.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),b.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},b.prototype._writev=null,b.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,I(e,t),n&&(t.finished?i.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(b.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),b.prototype.destroy=g.destroy,b.prototype._undestroy=g.undestroy,b.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,n(13),n(67).setImmediate,n(8))},function(e,t,n){"use strict";e.exports=a;var r=n(9),o=n(19);function i(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.lengths?a.slice(s).buffer:null}else{var c,u=t;if(-1===(c=u.indexOf(r.a.RecordSeparator)))throw new Error("Message is incomplete.");s=c+1;n=u.substring(0,s),i=u.length>s?u.substring(s):null}var l=r.a.parse(n),f=JSON.parse(l[0]);if(f.type)throw new Error("Expected a handshake response from the server.");return[i,f]},t}()}).call(this,n(10).Buffer)},,,,,,,function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},a=this&&this.__spread||function(){for(var e=[],t=0;t0?a-4:a;for(n=0;n>16&255,c[l++]=t>>8&255,c[l++]=255&t;2===s&&(t=o[e.charCodeAt(n)]<<2|o[e.charCodeAt(n+1)]>>4,c[l++]=255&t);1===s&&(t=o[e.charCodeAt(n)]<<10|o[e.charCodeAt(n+1)]<<4|o[e.charCodeAt(n+2)]>>2,c[l++]=t>>8&255,c[l++]=255&t);return c},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],a=0,s=n-o;as?s:a+16383));1===o?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,c=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function l(e,t,n){for(var o,i,a=[],s=t;s>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return a.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,o){var i,a,s=8*o-r-1,c=(1<>1,l=-7,f=n?o-1:0,h=n?-1:1,p=e[t+f];for(f+=h,i=p&(1<<-l)-1,p>>=-l,l+=s;l>0;i=256*i+e[t+f],f+=h,l-=8);for(a=i&(1<<-l)-1,i>>=-l,l+=r;l>0;a=256*a+e[t+f],f+=h,l-=8);if(0===i)i=1-u;else{if(i===c)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),i-=u}return(p?-1:1)*a*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var a,s,c,u=8*i-o-1,l=(1<>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,d=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-a))<1&&(a--,c*=2),(t+=a+f>=1?h/c:h*Math.pow(2,1-f))*c>=2&&(a++,c/=2),a+f>=l?(s=0,a=l):a+f>=1?(s=(t*c-1)*Math.pow(2,o),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,o),a=0));o>=8;e[n+p]=255&s,p+=d,s/=256,o-=8);for(a=a<0;e[n+p]=255&a,p+=d,a/=256,u-=8);e[n+p-d]|=128*g}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){"use strict";(function(t){var r=n(58); +var r=n(54),o=n(55),i=n(56);function a(){return c.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function d(e,t){if(c.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return F(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return H(e).length;default:if(r)return F(e).length;t=(""+t).toLowerCase(),r=!0}}function g(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,n);case"utf8":case"utf-8":return k(this,t,n);case"ascii":return T(this,t,n);case"latin1":case"binary":return P(this,t,n);case"base64":return C(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function y(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function v(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=c.from(t,r)),c.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,o);if("number"==typeof t)return t&=255,c.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,o){var i,a=1,s=e.length,c=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,c/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var l=-1;for(i=n;is&&(n=s-c),i=n;i>=0;i--){for(var f=!0,h=0;ho&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function C(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function k(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:u>223?3:u>191?2:1;if(o+f<=n)switch(f){case 1:u<128&&(l=u);break;case 2:128==(192&(i=e[o+1]))&&(c=(31&u)<<6|63&i)>127&&(l=c);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(c=(15&u)<<12|(63&i)<<6|63&a)>2047&&(c<55296||c>57343)&&(l=c);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(c=(15&u)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&c<1114112&&(l=c)}null===l?(l=65533,f=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),o+=f}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},c.prototype.compare=function(e,t,n,r,o){if(!c.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(i,a),u=this.slice(r,o),l=e.slice(t,n),f=0;fo)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return m(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":return E(this,e,t,n);case"latin1":case"binary":return S(this,e,t,n);case"base64":return _(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function T(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function D(e,t,n,r,o,i){if(!c.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function A(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function M(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function L(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function j(e,t,n,r,i){return i||L(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function B(e,t,n,r,i){return i||L(e,0,n,8),o.write(e,t,n,r,52,8),n+8}c.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},c.prototype.readUInt8=function(e,t){return t||x(e,1,this.length),this[e]},c.prototype.readUInt16LE=function(e,t){return t||x(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUInt16BE=function(e,t){return t||x(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUInt32LE=function(e,t){return t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUInt32BE=function(e,t){return t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||x(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},c.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||x(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},c.prototype.readInt8=function(e,t){return t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){t||x(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt16BE=function(e,t){t||x(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt32LE=function(e,t){return t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readFloatLE=function(e,t){return t||x(e,4,this.length),o.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return t||x(e,4,this.length),o.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return t||x(e,8,this.length),o.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return t||x(e,8,this.length),o.read(this,e,!1,52,8)},c.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||D(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},c.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,1,255,0),c.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},c.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},c.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},c.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):M(this,e,t,!0),t+4},c.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},c.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);D(this,e,t,n,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},c.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);D(this,e,t,n,o-1,-o)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},c.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,1,127,-128),c.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},c.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},c.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,4,2147483647,-2147483648),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):M(this,e,t,!0),t+4},c.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},c.prototype.writeFloatLE=function(e,t,n){return j(this,e,t,!0,n)},c.prototype.writeFloatBE=function(e,t,n){return j(this,e,t,!1,n)},c.prototype.writeDoubleLE=function(e,t,n){return B(this,e,t,!0,n)},c.prototype.writeDoubleBE=function(e,t,n){return B(this,e,t,!1,n)},c.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(i<1e3||!c.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function H(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(N,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function W(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}}).call(this,n(8))},function(e,t,n){"use strict";var r=n(14).Buffer,o=n(57),i=n(23),a=n(70),s=n(73),c=n(74);e.exports=function(e){var t=[],n=[];return{encode:c(t,(e=e||{forceFloat64:!1,compatibilityMode:!1,disableTimestampEncoding:!1}).forceFloat64,e.compatibilityMode,e.disableTimestampEncoding),decode:s(n),register:function(e,t,n,a){return o(t,"must have a constructor"),o(n,"must have an encode function"),o(e>=0,"must have a non-negative type"),o(a,"must have a decode function"),this.registerEncoder((function(e){return e instanceof t}),(function(t){var o=i(),a=r.allocUnsafe(1);return a.writeInt8(e,0),o.append(a),o.append(n(t)),o})),this.registerDecoder(e,a),this},registerEncoder:function(e,n){return o(e,"must have an encode function"),o(n,"must have an encode function"),t.push({check:e,encode:n}),this},registerDecoder:function(e,t){return o(e>=0,"must have a non-negative type"),o(t,"must have a decode function"),n.push({type:e,decode:t}),this},encoder:a.encoder,decoder:a.decoder,buffer:!0,type:"msgpack5",IncompleteBufferError:s.IncompleteBufferError}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(26),n(17);var r=n(27),o=n(7),i={},a=!1;function s(e,t,n){var o=i[e];o||(o=i[e]=new r.BrowserRenderer(e)),o.attachRootComponentToLogicalElement(n,t)}t.attachRootComponentToLogicalElement=s,t.attachRootComponentToElement=function(e,t,n){var r=document.querySelector(e);if(!r)throw new Error("Could not find any element matching selector '"+e+"'.");s(n||0,o.toLogicalElement(r,!0),t)},t.getRendererer=function(e){return i[e]},t.renderBatch=function(e,t){var n=i[e];if(!n)throw new Error("There is no browser renderer with ID "+e+".");for(var r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),c=r.count(o),u=t.referenceFrames(),l=r.values(u),f=t.diffReader,h=0;h1)for(var n=1;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]>2]}t.monoPlatform={start:function(e){return new Promise((function(t,n){var l,f;s.attachDebuggerHotkey(e),window.Browser={init:function(){}},l=function(){window.Module=function(e,t,n){var l=this,f=e.bootConfig.resources,h=window.Module||{},p=["DEBUGGING ENABLED"];h.print=function(e){return p.indexOf(e)<0&&console.log(e)},h.printErr=function(e){console.error(e),c.showErrorNotification()},h.preRun=h.preRun||[],h.postRun=h.postRun||[],h.preloadPlugins=[];var g,m,w=e.loadResources(f.assembly,(function(e){return"_framework/"+e}),"assembly"),E=e.loadResources(f.pdb||{},(function(e){return"_framework/"+e}),"pdb"),S=e.loadResource("dotnet.wasm","_framework/dotnet.wasm",e.bootConfig.resources.runtime["dotnet.wasm"],"dotnetwasm");if(e.bootConfig.resources.runtime.hasOwnProperty("dotnet.timezones.blat")&&(g=e.loadResource("dotnet.timezones.blat","_framework/dotnet.timezones.blat",e.bootConfig.resources.runtime["dotnet.timezones.blat"],"globalization")),e.bootConfig.icuDataMode!=u.ICUDataMode.Invariant){var _=e.startOptions.applicationCulture||navigator.languages&&navigator.languages[0],I=function(e,t){if(!t||e.icuDataMode==u.ICUDataMode.All)return"icudt.dat";var n=t.split("-")[0];return["en","fr","it","de","es"].includes(n)?"icudt_EFIGS.dat":["zh","ko","ja"].includes(n)?"icudt_CJK.dat":"icudt_no_CJK.dat"}(e.bootConfig,_);m=e.loadResource(I,"_framework/"+I,e.bootConfig.resources.runtime[I],"globalization")}return h.instantiateWasm=function(e,t){return r(l,void 0,void 0,(function(){var n,r;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,3,,4]),[4,S];case 1:return[4,v(o.sent(),e)];case 2:return n=o.sent(),[3,4];case 3:throw r=o.sent(),h.printErr(r),r;case 4:return t(n),[2]}}))})),[]},h.preRun.push((function(){i=cwrap("mono_wasm_add_assembly",null,["string","number","number"]),MONO.loaded_files=[],g&&function(e){r(this,void 0,void 0,(function(){var t,n;return o(this,(function(r){switch(r.label){case 0:return t="blazor:timezonedata",addRunDependency(t),[4,e.response];case 1:return[4,r.sent().arrayBuffer()];case 2:return n=r.sent(),Module.FS_createPath("/","usr",!0,!0),Module.FS_createPath("/usr/","share",!0,!0),Module.FS_createPath("/usr/share/","zoneinfo",!0,!0),MONO.mono_wasm_load_data_archive(new Uint8Array(n),"/usr/share/zoneinfo/"),removeRunDependency(t),[2]}}))}))}(g),m?function(e){r(this,void 0,void 0,(function(){var t,n,r,i,a;return o(this,(function(o){switch(o.label){case 0:return t="blazor:icudata",addRunDependency(t),[4,e.response];case 1:return n=o.sent(),i=Uint8Array.bind,[4,n.arrayBuffer()];case 2:if(r=new(i.apply(Uint8Array,[void 0,o.sent()])),a=MONO.mono_wasm_load_bytes_into_heap(r),!MONO.mono_wasm_load_icu_data(a))throw new Error("Error loading ICU asset.");return removeRunDependency(t),[2]}}))}))}(m):MONO.mono_wasm_setenv("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT","1"),w.forEach((function(e){return C(e,function(e,t){var n=e.lastIndexOf(".");if(n<0)throw new Error("No extension to replace in '"+e+"'");return e.substr(0,n)+t}(e.name,".dll"))})),E.forEach((function(e){return C(e,e.name)})),window.Blazor._internal.dotNetCriticalError=function(e){h.printErr(BINDING.conv_string(e)||"(null)")},window.Blazor._internal.getSatelliteAssemblies=function(t){var n=BINDING.mono_array_to_js_array(t),i=e.bootConfig.resources.satelliteResources,a=e.startOptions.applicationCulture||navigator.languages&&navigator.languages[0];if(e.bootConfig.icuDataMode==u.ICUDataMode.Sharded&&n&&n[0]!==a)throw new Error("To change culture dynamically during startup, set true in the application's project file.");if(i){var s=Promise.all(n.filter((function(e){return i.hasOwnProperty(e)})).map((function(t){return e.loadResources(i[t],(function(e){return"_framework/"+e}),"assembly")})).reduce((function(e,t){return e.concat(t)}),new Array).map((function(e){return r(l,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.response];case 1:return[2,t.sent().arrayBuffer()]}}))}))})));return BINDING.js_to_mono_obj(s.then((function(e){return e.length&&(window.Blazor._internal.readSatelliteAssemblies=function(){for(var t=BINDING.mono_obj_array_new(e.length),n=0;n>1];var n},readInt32Field:function(e,t){return p(e+(t||0))},readUint64Field:function(e,t){return function(e){var t=e>>2,n=Module.HEAPU32[t+1];if(n>f)throw new Error("Cannot read uint64 with high order part "+n+", because the result would exceed Number.MAX_SAFE_INTEGER.");return n*l+Module.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),Module.HEAPF32[n>>2];var n},readObjectField:function(e,t){return p(e+(t||0))},readStringField:function(e,t,n){var r,o=p(e+(t||0));if(0===o)return null;if(n){var i=BINDING.unbox_mono_obj(o);return"boolean"==typeof i?i?"":null:i}return h?void 0===(r=h.stringCache.get(o))&&(r=BINDING.conv_string(o),h.stringCache.set(o,r)):r=BINDING.conv_string(o),r},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return b(),h=new m},invokeWhenHeapUnlocked:function(e){h?h.enqueuePostReleaseAction(e):e()}};var d=document.createElement("a");function g(e){return e+12}function y(e,t,n){var r="["+e+"] "+t+":"+n;return BINDING.bind_static_method(r)}function v(e,t){return r(this,void 0,void 0,(function(){var n,r;return o(this,(function(o){switch(o.label){case 0:if("function"!=typeof WebAssembly.instantiateStreaming)return[3,4];o.label=1;case 1:return o.trys.push([1,3,,4]),[4,WebAssembly.instantiateStreaming(e.response,t)];case 2:return[2,o.sent().instance];case 3:return n=o.sent(),console.info("Streaming compilation failed. Falling back to ArrayBuffer instantiation. ",n),[3,4];case 4:return[4,e.response.then((function(e){return e.arrayBuffer()}))];case 5:return r=o.sent(),[4,WebAssembly.instantiate(r,t)];case 6:return[2,o.sent().instance]}}))}))}function b(){if(h)throw new Error("Assertion failed - heap is currently locked")}var m=function(){function e(){this.stringCache=new Map}return e.prototype.enqueuePostReleaseAction=function(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)},e.prototype.release=function(){var e;if(h!==this)throw new Error("Trying to release a lock which isn't current");for(h=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;){this.postReleaseActions.shift()(),b()}},e}()},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]this.length)&&(r=this.length),n>=this.length)return e||i.alloc(0);if(r<=0)return e||i.alloc(0);var o,a,s=!!e,c=this._offset(n),u=r-n,l=u,f=s&&t||0,h=c[1];if(0===n&&r==this.length){if(!s)return 1===this._bufs.length?this._bufs[0]:i.concat(this._bufs,this.length);for(a=0;a(o=this._bufs[a].length-h))){this._bufs[a].copy(e,f,h,h+l);break}this._bufs[a].copy(e,f,h),f+=o,l-=o,h&&(h=0)}return e},a.prototype.shallowSlice=function(e,t){e=e||0,t=t||this.length,e<0&&(e+=this.length),t<0&&(t+=this.length);var n=this._offset(e),r=this._offset(t),o=this._bufs.slice(n[0],r[0]+1);return 0==r[1]?o.pop():o[o.length-1]=o[o.length-1].slice(0,r[1]),0!=n[1]&&(o[0]=o[0].slice(n[1])),new a(o)},a.prototype.toString=function(e,t,n){return this.slice(t,n).toString(e)},a.prototype.consume=function(e){for(;this._bufs.length;){if(!(e>=this._bufs[0].length)){this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift()}return this},a.prototype.duplicate=function(){for(var e=0,t=new a;e0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,a,s)}}))}),{root:i,rootMargin:o+"px"});a.observe(t),a.observe(n);var s=u(t),c=u(n);function u(e){var t=new MutationObserver((function(){a.unobserve(e),a.observe(e)}));return t.observe(e,{attributes:!0}),t}r[e._id]={intersectionObserver:a,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){var t=r[e._id];t&&(t.intersectionObserver.disconnect(),t.mutationObserverBefore.disconnect(),t.mutationObserverAfter.disconnect(),e.dispose(),delete r[e._id])}};var r={}},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1].*)$/;function i(e,t){var n=e.currentElement;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){var r=new RegExp(o).exec(n.textContent),i=r&&r.groups&&r.groups.descriptor;if(!i)return;try{var s=function(e){var t=JSON.parse(e),n=t.type;if("server"!==n&&"webassembly"!==n)throw new Error("Invalid component type '"+n+"'.");return t}(i);switch(t){case"webassembly":return function(e,t,n){var r=e.type,o=e.assembly,i=e.typeName,s=e.parameterDefinitions,c=e.parameterValues,u=e.prerenderId;if("webassembly"!==r)return;if(!o)throw new Error("assembly must be defined when using a descriptor.");if(!i)throw new Error("typeName must be defined when using a descriptor.");if(u){var l=a(u,n);if(!l)throw new Error("Could not find an end component comment for '"+t+"'");return{type:r,assembly:o,typeName:i,parameterDefinitions:s&&atob(s),parameterValues:c&&atob(c),start:t,prerenderId:u,end:l}}return{type:r,assembly:o,typeName:i,parameterDefinitions:s&&atob(s),parameterValues:c&&atob(c),start:t}}(s,n,e);case"server":return function(e,t,n){var r=e.type,o=e.descriptor,i=e.sequence,s=e.prerenderId;if("server"!==r)return;if(!o)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===i)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(i))throw new Error("Error parsing the sequence '"+i+"' for component '"+JSON.stringify(e)+"'");if(s){var c=a(s,n);if(!c)throw new Error("Could not find an end component comment for '"+t+"'");return{type:r,sequence:i,descriptor:o,start:t,prerenderId:s,end:c}}return{type:r,sequence:i,descriptor:o,start:t}}(s,n,e)}}catch(e){throw new Error("Found malformed component comment at "+n.textContent)}}}function a(e,t){for(;t.next()&&t.currentElement;){var n=t.currentElement;if(n.nodeType===Node.COMMENT_NODE&&n.textContent){var r=new RegExp(o).exec(n.textContent),i=r&&r[1];if(i)return s(i,e),n}}}function s(e,t){var n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error("Invalid end of component comment: '"+e+"'");var r=n.prerenderId;if(!r)throw new Error("End of component comment must have a value for the prerendered property: '"+e+"'");if(r!==t)throw new Error("End of component comment prerendered property must match the start comment prerender id: '"+t+"', '"+r+"'")}var c=function(){function e(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}return e.prototype.next=function(){return this.currentIndex++,this.currentIndex=i)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),c=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),d(n)?r.showHidden=n:n&&t._extend(r,n),b(r.showHidden)&&(r.showHidden=!1),b(r.depth)&&(r.depth=2),b(r.colors)&&(r.colors=!1),b(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=c),l(r,e,r.depth)}function c(e,t){var n=s.styles[t];return n?"["+s.colors[n][0]+"m"+e+"["+s.colors[n][1]+"m":e}function u(e,t){return e}function l(e,n,r){if(e.customInspect&&n&&_(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var o=n.inspect(r,e);return v(o)||(o=l(e,o,r)),o}var i=function(e,t){if(b(t))return e.stylize("undefined","undefined");if(v(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(y(t))return e.stylize(""+t,"number");if(d(t))return e.stylize(""+t,"boolean");if(g(t))return e.stylize("null","null")}(e,n);if(i)return i;var a=Object.keys(n),s=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(n)),S(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return f(n);if(0===a.length){if(_(n)){var c=n.name?": "+n.name:"";return e.stylize("[Function"+c+"]","special")}if(m(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(E(n))return e.stylize(Date.prototype.toString.call(n),"date");if(S(n))return f(n)}var u,w="",I=!1,C=["{","}"];(p(n)&&(I=!0,C=["[","]"]),_(n))&&(w=" [Function"+(n.name?": "+n.name:"")+"]");return m(n)&&(w=" "+RegExp.prototype.toString.call(n)),E(n)&&(w=" "+Date.prototype.toUTCString.call(n)),S(n)&&(w=" "+f(n)),0!==a.length||I&&0!=n.length?r<0?m(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),u=I?function(e,t,n,r,o){for(var i=[],a=0,s=t.length;a=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(u,w,C)):C[0]+w+C[1]}function f(e){return"["+Error.prototype.toString.call(e)+"]"}function h(e,t,n,r,o,i){var a,s,c;if((c=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?s=c.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):c.set&&(s=e.stylize("[Setter]","special")),P(r,o)||(a="["+o+"]"),s||(e.seen.indexOf(c.value)<0?(s=g(n)?l(e,c.value,null):l(e,c.value,n-1)).indexOf("\n")>-1&&(s=i?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),b(a)){if(i&&o.match(/^\d+$/))return s;(a=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function p(e){return Array.isArray(e)}function d(e){return"boolean"==typeof e}function g(e){return null===e}function y(e){return"number"==typeof e}function v(e){return"string"==typeof e}function b(e){return void 0===e}function m(e){return w(e)&&"[object RegExp]"===I(e)}function w(e){return"object"==typeof e&&null!==e}function E(e){return w(e)&&"[object Date]"===I(e)}function S(e){return w(e)&&("[object Error]"===I(e)||e instanceof Error)}function _(e){return"function"==typeof e}function I(e){return Object.prototype.toString.call(e)}function C(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(n){if(b(i)&&(i=e.env.NODE_DEBUG||""),n=n.toUpperCase(),!a[n])if(new RegExp("\\b"+n+"\\b","i").test(i)){var r=e.pid;a[n]=function(){var e=t.format.apply(t,arguments);console.error("%s %d: %s",n,r,e)}}else a[n]=function(){};return a[n]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=p,t.isBoolean=d,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=y,t.isString=v,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=b,t.isRegExp=m,t.isObject=w,t.isDate=E,t.isError=S,t.isFunction=_,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(59);var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function T(){var e=new Date,t=[C(e.getHours()),C(e.getMinutes()),C(e.getSeconds())].join(":");return[e.getDate(),k[e.getMonth()],t].join(" ")}function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",T(),t.format.apply(t,arguments))},t.inherits=n(60),t._extend=function(e,t){if(!t||!w(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e};var O="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function R(e,t){if(!e){var n=new Error("Promise was rejected with a falsy value");n.reason=e,e=n}return t(e)}t.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(O&&e[O]){var t;if("function"!=typeof(t=e[O]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,O,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,n,r=new Promise((function(e,r){t=e,n=r})),o=[],i=0;i0?("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===u.prototype||(t=function(e){return u.from(e)}(t)),r?a.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):E(e,a,t,!0):a.ended?e.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(t=a.decoder.write(t),a.objectMode||0!==t.length?E(e,a,t,!1):C(e,a)):E(e,a,t,!1))):r||(a.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function _(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(p("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(I,e):I(e))}function I(e){p("emit readable"),e.emit("readable"),O(e)}function C(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(k,e,t))}function k(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;ei.length?i.length:e;if(a===i.length?o+=i:o+=i.slice(0,e),0===(e-=a)){a===i.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=i.slice(a));break}++r}return t.length-=r,o}(e,t):function(e,t){var n=u.allocUnsafe(e),r=t.head,o=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var i=r.data,a=e>i.length?i.length:e;if(i.copy(n,n.length-e,0,a),0===(e-=a)){a===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(a));break}++o}return t.length-=o,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function x(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(D,t,e))}function D(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function A(e,t){for(var n=0,r=e.length;n=t.highWaterMark||t.ended))return p("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?x(this):_(this),null;if(0===(e=S(e,t))&&t.ended)return 0===t.length&&x(this),null;var r,o=t.needReadable;return p("need readable",o),(0===t.length||t.length-e0?R(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&x(this)),null!==r&&this.emit("data",r),r},m.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},m.prototype.pipe=function(e,t){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,p("pipe count=%d opts=%j",i.pipesCount,t);var c=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?l:m;function u(t,r){p("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,p("cleanup"),e.removeListener("close",v),e.removeListener("finish",b),e.removeListener("drain",f),e.removeListener("error",y),e.removeListener("unpipe",u),n.removeListener("end",l),n.removeListener("end",m),n.removeListener("data",g),h=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||f())}function l(){p("onend"),e.end()}i.endEmitted?o.nextTick(c):n.once("end",c),e.on("unpipe",u);var f=function(e){return function(){var t=e._readableState;p("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,O(e))}}(n);e.on("drain",f);var h=!1;var d=!1;function g(t){p("ondata"),d=!1,!1!==e.write(t)||d||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==A(i.pipes,e))&&!h&&(p("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,d=!0),n.pause())}function y(t){p("onerror",t),m(),e.removeListener("error",y),0===s(e,"error")&&e.emit("error",t)}function v(){e.removeListener("finish",b),m()}function b(){p("onfinish"),e.removeListener("close",v),m()}function m(){p("unpipe"),n.unpipe(e)}return n.on("data",g),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",y),e.once("close",v),e.once("finish",b),e.emit("pipe",n),i.flowing||(p("pipe resume"),n.resume()),e},m.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i0&&a.length>o&&!a.warned){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,s=c,console&&console.warn&&console.warn(s)}return e}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},o=h.bind(r);return o.listener=n,r.wrapFn=o,o}function d(e,t,n){var r=e._events;if(void 0===r)return[];var o=r[t];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(a=t[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var c=o[e];if(void 0===c)return!1;if("function"==typeof c)i(c,this,t);else{var u=c.length,l=y(c,u);for(n=0;n=0;i--)if(n[i]===t||n[i].listener===t){a=n[i].listener,o=i;break}if(o<0)return this;0===o?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},s.prototype.listeners=function(e){return d(this,e,!0)},s.prototype.rawListeners=function(e){return d(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):g.call(e,t)},s.prototype.listenerCount=g,s.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(e,t,n){e.exports=n(41).EventEmitter},function(e,t,n){"use strict";var r=n(24);function o(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||r.nextTick(o,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?(r.nextTick(o,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,n){"use strict";var r=n(66).Buffer,o=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function i(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===o||!o(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=c,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=l,this.end=f,t=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function c(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function l(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function f(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function h(e){return e.toString(this.encoding)}function p(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return o>0&&(e.lastNeed=o-1),o;if(--r=0)return o>0&&(e.lastNeed=o-2),o;if(--r=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){"use strict";(function(t,r,o){var i=n(24);function a(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var o=r.callback;t.pendingcb--,o(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=b;var s,c=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:i.nextTick;b.WritableState=v;var u=n(19);u.inherits=n(15);var l={deprecate:n(69)},f=n(42),h=n(14).Buffer,p=o.Uint8Array||function(){};var d,g=n(43);function y(){}function v(e,t){s=s||n(9),e=e||{};var r=t instanceof s;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,u=e.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(u||0===u)?u:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===e.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,o=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,o){--t.pendingcb,n?(i.nextTick(o,r),i.nextTick(I,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),I(e,t))}(e,n,r,t,o);else{var a=S(n);a||n.corked||n.bufferProcessing||!n.bufferedRequest||E(e,n),r?c(w,e,n,a,o):w(e,n,a,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function b(e){if(s=s||n(9),!(d.call(b,this)||this instanceof s))return new b(e);this._writableState=new v(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),f.call(this)}function m(e,t,n,r,o,i,a){t.writelen=r,t.writecb=a,t.writing=!0,t.sync=!0,n?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function w(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),I(e,t)}function E(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=n;for(var s=0,c=!0;n;)o[s]=n,n.isBuf||(c=!1),n=n.next,s+=1;o.allBuffers=c,m(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;n;){var u=n.chunk,l=n.encoding,f=n.callback;if(m(e,t,!1,t.objectMode?1:u.length,u,l,f),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function S(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function _(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),I(e,t)}))}function I(e,t){var n=S(t);return n&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(_,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}u.inherits(b,f),v.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(v.prototype,"buffer",{get:l.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(d=Function.prototype[Symbol.hasInstance],Object.defineProperty(b,Symbol.hasInstance,{value:function(e){return!!d.call(this,e)||this===b&&(e&&e._writableState instanceof v)}})):d=function(e){return e instanceof this},b.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},b.prototype.write=function(e,t,n){var r,o=this._writableState,a=!1,s=!o.objectMode&&(r=e,h.isBuffer(r)||r instanceof p);return s&&!h.isBuffer(e)&&(e=function(e){return h.from(e)}(e)),"function"==typeof t&&(n=t,t=null),s?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof n&&(n=y),o.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),i.nextTick(t,n)}(this,n):(s||function(e,t,n,r){var o=!0,a=!1;return null===n?a=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),i.nextTick(r,a),o=!1),o}(this,o,e,n))&&(o.pendingcb++,a=function(e,t,n,r,o,i){if(!n){var a=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=h.from(t,n));return t}(t,r,o);r!==a&&(n=!0,o="buffer",r=a)}var s=t.objectMode?1:r.length;t.length+=s;var c=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(b.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),b.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},b.prototype._writev=null,b.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,I(e,t),n&&(t.finished?i.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(b.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),b.prototype.destroy=g.destroy,b.prototype._undestroy=g.undestroy,b.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,n(13),n(67).setImmediate,n(8))},function(e,t,n){"use strict";e.exports=a;var r=n(9),o=n(19);function i(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.lengths?a.slice(s).buffer:null}else{var c,u=t;if(-1===(c=u.indexOf(r.a.RecordSeparator)))throw new Error("Message is incomplete.");s=c+1;n=u.substring(0,s),i=u.length>s?u.substring(s):null}var l=r.a.parse(n),f=JSON.parse(l[0]);if(f.type)throw new Error("Expected a handshake response from the server.");return[i,f]},t}()}).call(this,n(10).Buffer)},,,,,,function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},a=this&&this.__spread||function(){for(var e=[],t=0;t0?a-4:a;for(n=0;n>16&255,c[l++]=t>>8&255,c[l++]=255&t;2===s&&(t=o[e.charCodeAt(n)]<<2|o[e.charCodeAt(n+1)]>>4,c[l++]=255&t);1===s&&(t=o[e.charCodeAt(n)]<<10|o[e.charCodeAt(n+1)]<<4|o[e.charCodeAt(n+2)]>>2,c[l++]=t>>8&255,c[l++]=255&t);return c},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],a=0,s=n-o;as?s:a+16383));1===o?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,c=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function l(e,t,n){for(var o,i,a=[],s=t;s>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return a.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,o){var i,a,s=8*o-r-1,c=(1<>1,l=-7,f=n?o-1:0,h=n?-1:1,p=e[t+f];for(f+=h,i=p&(1<<-l)-1,p>>=-l,l+=s;l>0;i=256*i+e[t+f],f+=h,l-=8);for(a=i&(1<<-l)-1,i>>=-l,l+=r;l>0;a=256*a+e[t+f],f+=h,l-=8);if(0===i)i=1-u;else{if(i===c)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),i-=u}return(p?-1:1)*a*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var a,s,c,u=8*i-o-1,l=(1<>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,d=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-a))<1&&(a--,c*=2),(t+=a+f>=1?h/c:h*Math.pow(2,1-f))*c>=2&&(a++,c/=2),a+f>=l?(s=0,a=l):a+f>=1?(s=(t*c-1)*Math.pow(2,o),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,o),a=0));o>=8;e[n+p]=255&s,p+=d,s/=256,o-=8);for(a=a<0;e[n+p]=255&a,p+=d,a/=256,u-=8);e[n+p-d]|=128*g}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){"use strict";(function(t){var r=n(58); /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT - */function o(e,t){if(e===t)return 0;for(var n=e.length,r=t.length,o=0,i=Math.min(n,r);o=0;u--)if(l[u]!==f[u])return!1;for(u=l.length-1;u>=0;u--)if(s=l[u],!m(e[s],t[s],n,r))return!1;return!0}(e,t,n,r))}return n?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function E(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function S(e,t,n,r){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!o&&v(o,n,"Missing expected exception"+r);var i="string"==typeof r,s=!e&&o&&!n;if((!e&&a.isError(o)&&i&&E(o,n)||s)&&v(o,n,"Got unwanted exception"+r),e&&o&&n&&!E(o,n)||!e&&o)throw o}h.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return g(y(e.actual),128)+" "+e.operator+" "+g(y(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||v;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,o=d(t),i=r.indexOf("\n"+o);if(i>=0){var a=r.indexOf("\n",i+1);r=r.substring(a+1)}this.stack=r}}},a.inherits(h.AssertionError,Error),h.fail=v,h.ok=b,h.equal=function(e,t,n){e!=t&&v(e,t,n,"==",h.equal)},h.notEqual=function(e,t,n){e==t&&v(e,t,n,"!=",h.notEqual)},h.deepEqual=function(e,t,n){m(e,t,!1)||v(e,t,n,"deepEqual",h.deepEqual)},h.deepStrictEqual=function(e,t,n){m(e,t,!0)||v(e,t,n,"deepStrictEqual",h.deepStrictEqual)},h.notDeepEqual=function(e,t,n){m(e,t,!1)&&v(e,t,n,"notDeepEqual",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,n,r){m(t,n,!0)&&v(t,n,r,"notDeepStrictEqual",e)},h.strictEqual=function(e,t,n){e!==t&&v(e,t,n,"===",h.strictEqual)},h.notStrictEqual=function(e,t,n){e===t&&v(e,t,n,"!==",h.notStrictEqual)},h.throws=function(e,t,n){S(!0,e,t,n)},h.doesNotThrow=function(e,t,n){S(!1,e,t,n)},h.ifError=function(e){if(e)throw e},h.strict=r((function e(t,n){t||v(t,!0,n,"==",e)}),h,{equal:h.strictEqual,deepEqual:h.deepStrictEqual,notEqual:h.notStrictEqual,notDeepEqual:h.notDeepStrictEqual}),h.strict.strict=h.strict;var _=Object.keys||function(e){var t=[];for(var n in e)s.call(e,n)&&t.push(n);return t}}).call(this,n(8))},function(e,t,n){"use strict"; + */function o(e,t){if(e===t)return 0;for(var n=e.length,r=t.length,o=0,i=Math.min(n,r);o=0;u--)if(l[u]!==f[u])return!1;for(u=l.length-1;u>=0;u--)if(s=l[u],!m(e[s],t[s],n,r))return!1;return!0}(e,t,n,r))}return n?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function E(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function S(e,t,n,r){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!o&&v(o,n,"Missing expected exception"+r);var i="string"==typeof r,s=!e&&o&&!n;if((!e&&a.isError(o)&&i&&E(o,n)||s)&&v(o,n,"Got unwanted exception"+r),e&&o&&n&&!E(o,n)||!e&&o)throw o}h.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return g(y(e.actual),128)+" "+e.operator+" "+g(y(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||v;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,o=d(t),i=r.indexOf("\n"+o);if(i>=0){var a=r.indexOf("\n",i+1);r=r.substring(a+1)}this.stack=r}}},a.inherits(h.AssertionError,Error),h.fail=v,h.ok=b,h.equal=function(e,t,n){e!=t&&v(e,t,n,"==",h.equal)},h.notEqual=function(e,t,n){e==t&&v(e,t,n,"!=",h.notEqual)},h.deepEqual=function(e,t,n){m(e,t,!1)||v(e,t,n,"deepEqual",h.deepEqual)},h.deepStrictEqual=function(e,t,n){m(e,t,!0)||v(e,t,n,"deepStrictEqual",h.deepStrictEqual)},h.notDeepEqual=function(e,t,n){m(e,t,!1)&&v(e,t,n,"notDeepEqual",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,n,r){m(t,n,!0)&&v(t,n,r,"notDeepStrictEqual",e)},h.strictEqual=function(e,t,n){e!==t&&v(e,t,n,"===",h.strictEqual)},h.notStrictEqual=function(e,t,n){e===t&&v(e,t,n,"!==",h.notStrictEqual)},h.throws=function(e,t,n){S(!0,e,t,n)},h.doesNotThrow=function(e,t,n){S(!1,e,t,n)},h.ifError=function(e){if(e)throw e},h.strict=r((function e(t,n){t||v(t,!0,n,"==",e)}),h,{equal:h.strictEqual,deepEqual:h.deepStrictEqual,notEqual:h.notStrictEqual,notDeepEqual:h.notDeepStrictEqual}),h.strict.strict=h.strict;var _=Object.keys||function(e){var t=[];for(var n in e)s.call(e,n)&&t.push(n);return t}}).call(this,n(8))},function(e,t,n){"use strict"; /* object-assign (c) Sindre Sorhus @license MIT -*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,c=a(e),u=1;u0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t,n,o,i=r.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,n=i,o=s,t.copy(n,o),s+=a.data.length,a=a.next;return i},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,n){var r=n(10),o=r.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function a(e,t,n){return o(e,t,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=a),a.prototype=Object.create(o.prototype),i(o,a),a.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return o(e,t,n)},a.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=o(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return o(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(68),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(8))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,o,i,a,s,c=1,u={},l=!1,f=e.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(e);h=h&&h.setTimeout?h:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){d(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){d(e.data)},r=function(e){i.port2.postMessage(e)}):f&&"onreadystatechange"in f.createElement("script")?(o=f.documentElement,r=function(e){var t=f.createElement("script");t.onreadystatechange=function(){d(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(d,0,e)}:(a="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&d(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(a+t,"*")}),h.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n0?this._transform(null,t,n):n()},e.exports.decoder=c,e.exports.encoder=s},function(e,t,n){(t=e.exports=n(39)).Stream=t,t.Readable=t,t.Writable=n(44),t.Duplex=n(9),t.Transform=n(45),t.PassThrough=n(72)},function(e,t,n){"use strict";e.exports=i;var r=n(45),o=n(19);function i(e){if(!(this instanceof i))return new i(e);r.call(this,e)}o.inherits=n(15),o.inherits(i,r),i.prototype._transform=function(e,t,n){n(null,e)}},function(e,t,n){var r=n(22);function o(e){Error.call(this),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.message=e||"unable to decode"}n(38).inherits(o,Error),e.exports=function(e){return function(e){e instanceof r||(e=r().append(e));var t=i(e);if(t)return e.consume(t.bytesConsumed),t.value;throw new o};function t(e,t,n){return t>=n+e}function n(e,t){return{value:e,bytesConsumed:t}}function i(e,r){r=void 0===r?0:r;var o=e.length-r;if(o<=0)return null;var i,l,f,h=e.readUInt8(r),p=0;if(!function(e,t){var n=function(e){switch(e){case 196:return 2;case 197:return 3;case 198:return 5;case 199:return 3;case 200:return 4;case 201:return 6;case 202:return 5;case 203:return 9;case 204:return 2;case 205:return 3;case 206:return 5;case 207:return 9;case 208:return 2;case 209:return 3;case 210:return 5;case 211:return 9;case 212:return 3;case 213:return 4;case 214:return 6;case 215:return 10;case 216:return 18;case 217:return 2;case 218:return 3;case 219:return 5;case 222:return 3;default:return-1}}(e);return!(-1!==n&&t=0;f--)p+=e.readUInt8(r+f+1)*Math.pow(2,8*(7-f));return n(p,9);case 208:return n(p=e.readInt8(r+1),2);case 209:return n(p=e.readInt16BE(r+1),3);case 210:return n(p=e.readInt32BE(r+1),5);case 211:return n(p=function(e,t){var n=128==(128&e[t]);if(n)for(var r=1,o=t+7;o>=t;o--){var i=(255^e[o])+r;e[o]=255&i,r=i>>8}var a=e.readUInt32BE(t+0),s=e.readUInt32BE(t+4);return(4294967296*a+s)*(n?-1:1)}(e.slice(r+1,r+9),0),9);case 202:return n(p=e.readFloatBE(r+1),5);case 203:return n(p=e.readDoubleBE(r+1),9);case 217:return t(i=e.readUInt8(r+1),o,2)?n(p=e.toString("utf8",r+2,r+2+i),2+i):null;case 218:return t(i=e.readUInt16BE(r+1),o,3)?n(p=e.toString("utf8",r+3,r+3+i),3+i):null;case 219:return t(i=e.readUInt32BE(r+1),o,5)?n(p=e.toString("utf8",r+5,r+5+i),5+i):null;case 196:return t(i=e.readUInt8(r+1),o,2)?n(p=e.slice(r+2,r+2+i),2+i):null;case 197:return t(i=e.readUInt16BE(r+1),o,3)?n(p=e.slice(r+3,r+3+i),3+i):null;case 198:return t(i=e.readUInt32BE(r+1),o,5)?n(p=e.slice(r+5,r+5+i),5+i):null;case 220:return o<3?null:(i=e.readUInt16BE(r+1),a(e,r,i,3));case 221:return o<5?null:(i=e.readUInt32BE(r+1),a(e,r,i,5));case 222:return i=e.readUInt16BE(r+1),s(e,r,i,3);case 223:throw new Error("map too big to decode in JS");case 212:return c(e,r,1);case 213:return c(e,r,2);case 214:return c(e,r,4);case 215:return c(e,r,8);case 216:return c(e,r,16);case 199:return i=e.readUInt8(r+1),l=e.readUInt8(r+2),t(i,o,3)?u(e,r,l,i,3):null;case 200:return i=e.readUInt16BE(r+1),l=e.readUInt8(r+3),t(i,o,4)?u(e,r,l,i,4):null;case 201:return i=e.readUInt32BE(r+1),l=e.readUInt8(r+5),t(i,o,6)?u(e,r,l,i,6):null}if(144==(240&h))return a(e,r,i=15&h,1);if(128==(240&h))return s(e,r,i=15&h,1);if(160==(224&h))return t(i=31&h,o,1)?n(p=e.toString("utf8",r+1,r+i+1),i+1):null;if(h>=224)return n(p=h-256,1);if(h<128)return n(h,1);throw new Error("not implemented yet")}function a(e,t,r,o){var a,s=[],c=0;for(t+=o,a=0;a.1)&&((n=r.allocUnsafe(9))[0]=203,n.writeDoubleBE(e,1)),n}e.exports=function(e,t,n,a){function s(c,u){var l,f,h;if(void 0===c)throw new Error("undefined is not encodable in msgpack!");if(null===c)(l=r.allocUnsafe(1))[0]=192;else if(!0===c)(l=r.allocUnsafe(1))[0]=195;else if(!1===c)(l=r.allocUnsafe(1))[0]=194;else if("string"==typeof c)(f=r.byteLength(c))<32?((l=r.allocUnsafe(1+f))[0]=160|f,f>0&&l.write(c,1)):f<=255&&!n?((l=r.allocUnsafe(2+f))[0]=217,l[1]=f,l.write(c,2)):f<=65535?((l=r.allocUnsafe(3+f))[0]=218,l.writeUInt16BE(f,1),l.write(c,3)):((l=r.allocUnsafe(5+f))[0]=219,l.writeUInt32BE(f,1),l.write(c,5));else if(c&&(c.readUInt32LE||c instanceof Uint8Array))c instanceof Uint8Array&&(c=r.from(c)),c.length<=255?((l=r.allocUnsafe(2))[0]=196,l[1]=c.length):c.length<=65535?((l=r.allocUnsafe(3))[0]=197,l.writeUInt16BE(c.length,1)):((l=r.allocUnsafe(5))[0]=198,l.writeUInt32BE(c.length,1)),l=o([l,c]);else if(Array.isArray(c))c.length<16?(l=r.allocUnsafe(1))[0]=144|c.length:c.length<65536?((l=r.allocUnsafe(3))[0]=220,l.writeUInt16BE(c.length,1)):((l=r.allocUnsafe(5))[0]=221,l.writeUInt32BE(c.length,1)),l=c.reduce((function(e,t){return e.append(s(t,!0)),e}),o().append(l));else{if(!a&&"function"==typeof c.getDate)return function(e){var t,n=1*e,i=Math.floor(n/1e3),a=1e6*(n-1e3*i);if(a||i>4294967295){(t=new r(10))[0]=215,t[1]=-1;var s=4*a,c=i/Math.pow(2,32),u=s+c&4294967295,l=4294967295&i;t.writeInt32BE(u,2),t.writeInt32BE(l,6)}else(t=new r(6))[0]=214,t[1]=-1,t.writeUInt32BE(Math.floor(n/1e3),2);return o().append(t)}(c);if("object"==typeof c)l=function(t){var n,i,a,s=[];for(n=0;n>8),s.push(255&a)):(s.push(201),s.push(a>>24),s.push(a>>16&255),s.push(a>>8&255),s.push(255&a));return o().append(r.from(s)).append(i)}(c)||function(e){var t,n,i=[],a=0;for(t in e)e.hasOwnProperty(t)&&void 0!==e[t]&&"function"!=typeof e[t]&&(++a,i.push(s(t,!0)),i.push(s(e[t],!0)));a<16?(n=r.allocUnsafe(1))[0]=128|a:((n=r.allocUnsafe(3))[0]=222,n.writeUInt16BE(a,1));return i.unshift(n),i.reduce((function(e,t){return e.append(t)}),o())}(c);else if("number"==typeof c){if((h=c)!==Math.floor(h))return i(c,t);if(c>=0)if(c<128)(l=r.allocUnsafe(1))[0]=c;else if(c<256)(l=r.allocUnsafe(2))[0]=204,l[1]=c;else if(c<65536)(l=r.allocUnsafe(3))[0]=205,l.writeUInt16BE(c,1);else if(c<=4294967295)(l=r.allocUnsafe(5))[0]=206,l.writeUInt32BE(c,1);else{if(!(c<=9007199254740991))return i(c,!0);(l=r.allocUnsafe(9))[0]=207,function(e,t){for(var n=7;n>=0;n--)e[n+1]=255&t,t/=256}(l,c)}else if(c>=-32)(l=r.allocUnsafe(1))[0]=256+c;else if(c>=-128)(l=r.allocUnsafe(2))[0]=208,l.writeInt8(c,1);else if(c>=-32768)(l=r.allocUnsafe(3))[0]=209,l.writeInt16BE(c,1);else if(c>-214748365)(l=r.allocUnsafe(5))[0]=210,l.writeInt32BE(c,1);else{if(!(c>=-9007199254740991))return i(c,!0);(l=r.allocUnsafe(9))[0]=211,function(e,t,n){var r=n<0;r&&(n=Math.abs(n));var o=n%4294967296,i=n/4294967296;if(e.writeUInt32BE(Math.floor(i),t+0),e.writeUInt32BE(o,t+4),r)for(var a=1,s=t+7;s>=t;s--){var c=(255^e[s])+a;e[s]=255&c,a=c>>8}}(l,1,c)}}}if(!l)throw new Error("not implemented yet");return u?l:l.slice()}return s}},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]this.nextBatchId?this.fatalError?(this.logger.log(s.LogLevel.Debug,"Received a new batch "+e+" but errored out on a previous batch "+(this.nextBatchId-1)),[4,n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())]):[3,4]:[3,5];case 3:return o.sent(),[2];case 4:return this.logger.log(s.LogLevel.Debug,"Waiting for batch "+this.nextBatchId+". Batch "+e+" not processed."),[2];case 5:return o.trys.push([5,7,,8]),this.nextBatchId++,this.logger.log(s.LogLevel.Debug,"Applying batch "+e+"."),i.renderBatch(this.browserRendererId,new a.OutOfProcessRenderBatch(t)),[4,this.completeBatch(n,e)];case 6:return o.sent(),[3,8];case 7:throw r=o.sent(),this.fatalError=r.toString(),this.logger.log(s.LogLevel.Error,"There was an error applying batch "+e+"."),n.send("OnRenderCompleted",e,r.toString()),r;case 8:return[2]}}))}))},e.prototype.getLastBatchid=function(){return this.nextBatchId-1},e.prototype.completeBatch=function(e,t){return r(this,void 0,void 0,(function(){return o(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,e.send("OnRenderCompleted",t,null)];case 1:return n.sent(),[3,3];case 2:return n.sent(),this.logger.log(s.LogLevel.Warning,"Failed to deliver completion notification for render '"+t+"'."),[3,3];case 3:return[2]}}))}))},e}();t.RenderQueue=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(77),o=n(78),i=function(){function e(e){this.batchData=e;var t=new u(e);this.arrayRangeReader=new l(e),this.arrayBuilderSegmentReader=new f(e),this.diffReader=new a(e),this.editReader=new s(e,t),this.frameReader=new c(e,t)}return e.prototype.updatedComponents=function(){return o.readInt32LE(this.batchData,this.batchData.length-20)},e.prototype.referenceFrames=function(){return o.readInt32LE(this.batchData,this.batchData.length-16)},e.prototype.disposedComponentIds=function(){return o.readInt32LE(this.batchData,this.batchData.length-12)},e.prototype.disposedEventHandlerIds=function(){return o.readInt32LE(this.batchData,this.batchData.length-8)},e.prototype.updatedComponentsEntry=function(e,t){var n=e+4*t;return o.readInt32LE(this.batchData,n)},e.prototype.referenceFramesEntry=function(e,t){return e+20*t},e.prototype.disposedComponentIdsEntry=function(e,t){var n=e+4*t;return o.readInt32LE(this.batchData,n)},e.prototype.disposedEventHandlerIdsEntry=function(e,t){var n=e+8*t;return o.readUint64LE(this.batchData,n)},e}();t.OutOfProcessRenderBatch=i;var a=function(){function e(e){this.batchDataUint8=e}return e.prototype.componentId=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.edits=function(e){return e+4},e.prototype.editsEntry=function(e,t){return e+16*t},e}(),s=function(){function e(e,t){this.batchDataUint8=e,this.stringReader=t}return e.prototype.editType=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.siblingIndex=function(e){return o.readInt32LE(this.batchDataUint8,e+4)},e.prototype.newTreeIndex=function(e){return o.readInt32LE(this.batchDataUint8,e+8)},e.prototype.moveToSiblingIndex=function(e){return o.readInt32LE(this.batchDataUint8,e+8)},e.prototype.removedAttributeName=function(e){var t=o.readInt32LE(this.batchDataUint8,e+12);return this.stringReader.readString(t)},e}(),c=function(){function e(e,t){this.batchDataUint8=e,this.stringReader=t}return e.prototype.frameType=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.subtreeLength=function(e){return o.readInt32LE(this.batchDataUint8,e+4)},e.prototype.elementReferenceCaptureId=function(e){var t=o.readInt32LE(this.batchDataUint8,e+4);return this.stringReader.readString(t)},e.prototype.componentId=function(e){return o.readInt32LE(this.batchDataUint8,e+8)},e.prototype.elementName=function(e){var t=o.readInt32LE(this.batchDataUint8,e+8);return this.stringReader.readString(t)},e.prototype.textContent=function(e){var t=o.readInt32LE(this.batchDataUint8,e+4);return this.stringReader.readString(t)},e.prototype.markupContent=function(e){var t=o.readInt32LE(this.batchDataUint8,e+4);return this.stringReader.readString(t)},e.prototype.attributeName=function(e){var t=o.readInt32LE(this.batchDataUint8,e+4);return this.stringReader.readString(t)},e.prototype.attributeValue=function(e){var t=o.readInt32LE(this.batchDataUint8,e+8);return this.stringReader.readString(t)},e.prototype.attributeEventHandlerId=function(e){return o.readUint64LE(this.batchDataUint8,e+12)},e}(),u=function(){function e(e){this.batchDataUint8=e,this.stringTableStartIndex=o.readInt32LE(e,e.length-4)}return e.prototype.readString=function(e){if(-1===e)return null;var t=o.readInt32LE(this.batchDataUint8,this.stringTableStartIndex+4*e),n=o.readLEB128(this.batchDataUint8,t),i=t+o.numLEB128Bytes(n),a=new Uint8Array(this.batchDataUint8.buffer,this.batchDataUint8.byteOffset+i,n);return r.decodeUtf8(a)},e}(),l=function(){function e(e){this.batchDataUint8=e}return e.prototype.count=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.values=function(e){return e+4},e}(),f=function(){function e(e){this.batchDataUint8=e}return e.prototype.offset=function(e){return 0},e.prototype.count=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.values=function(e){return e+4},e}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof TextDecoder?new TextDecoder("utf-8"):null;t.decodeUtf8=r?r.decode.bind(r):function(e){var t=0,n=e.length,r=[],o=[];for(;t65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Math.pow(2,32),o=Math.pow(2,21)-1;function i(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}t.readInt32LE=function(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24},t.readUint32LE=i,t.readUint64LE=function(e,t){var n=i(e,t+4);if(n>o)throw new Error("Cannot read uint64 with high order part "+n+", because the result would exceed Number.MAX_SAFE_INTEGER.");return n*r+i(e,t)},t.readLEB128=function(e,t){for(var n=0,r=0,o=0;o<4;o++){var i=e[t+o];if(n|=(127&i)<=this.minimumLogLevel)switch(e){case r.LogLevel.Critical:case r.LogLevel.Error:console.error("["+(new Date).toISOString()+"] "+r.LogLevel[e]+": "+t);break;case r.LogLevel.Warning:console.warn("["+(new Date).toISOString()+"] "+r.LogLevel[e]+": "+t);break;case r.LogLevel.Information:console.info("["+(new Date).toISOString()+"] "+r.LogLevel[e]+": "+t);break;default:console.log("["+(new Date).toISOString()+"] "+r.LogLevel[e]+": "+t)}},e}();t.ConsoleLogger=i},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]e.MaximumFirstRetryInterval?e.MaximumFirstRetryInterval:t.retryIntervalMilliseconds,[4,this.delay(r)]):[3,7];case 2:if(o.sent(),this.isDisposed)return[3,7];o.label=3;case 3:return o.trys.push([3,5,,6]),[4,this.reconnectCallback()];case 4:return o.sent()||this.reconnectDisplay.rejected(),[2];case 5:return i=o.sent(),this.logger.log(s.LogLevel.Error,i),[3,6];case 6:return n++,[3,1];case 7:return this.reconnectDisplay.failed(),[2]}}))}))},e.prototype.delay=function(e){return new Promise((function(t){return setTimeout(t,e)}))},e.MaximumFirstRetryInterval=3e3,e}()},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]reloading the page if you're unable to reconnect.",this.message.querySelector("a").addEventListener("click",(function(){return location.reload()}))},e.prototype.rejected=function(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none",this.message.innerHTML="Could not reconnect to the server. Reload the page to restore functionality.",this.message.querySelector("a").addEventListener("click",(function(){return location.reload()}))},e.prototype.getLoader=function(){var e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e},e}();t.DefaultReconnectDisplay=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(t,n,r){this.dialog=t,this.maxRetries=n,this.document=r,this.document=r;var o=this.document.getElementById(e.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}return e.prototype.show=function(){this.removeClasses(),this.dialog.classList.add(e.ShowClassName)},e.prototype.update=function(t){var n=this.document.getElementById(e.CurrentAttemptId);n&&(n.innerText=t.toString())},e.prototype.hide=function(){this.removeClasses(),this.dialog.classList.add(e.HideClassName)},e.prototype.failed=function(){this.removeClasses(),this.dialog.classList.add(e.FailedClassName)},e.prototype.rejected=function(){this.removeClasses(),this.dialog.classList.add(e.RejectedClassName)},e.prototype.removeClasses=function(){this.dialog.classList.remove(e.ShowClassName,e.HideClassName,e.FailedClassName,e.RejectedClassName)},e.ShowClassName="components-reconnect-show",e.HideClassName="components-reconnect-hide",e.FailedClassName="components-reconnect-failed",e.RejectedClassName="components-reconnect-rejected",e.MaxRetriesId="components-reconnect-max-retries",e.CurrentAttemptId="components-reconnect-current-attempt",e}();t.UserSpecifiedDisplay=r},function(e,t,n){"use strict";n.r(t),n.d(t,"VERSION",(function(){return l})),n.d(t,"MessagePackHubProtocol",(function(){return u}));var r=n(10),o=n(11),i=n(2),a=function(){function e(){}return e.write=function(e){var t=e.byteLength||e.length,n=[];do{var r=127&t;(t>>=7)>0&&(r|=128),n.push(r)}while(t>0);t=e.byteLength||e.length;var o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer},e.parse=function(e){for(var t=[],n=new Uint8Array(e),r=[0,7,14,21,28],o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t},e}();var s=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=3?e[2]:void 0,error:e[1],type:i.MessageType.Close}},e.prototype.createPingMessage=function(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:i.MessageType.Ping}},e.prototype.createInvocationMessage=function(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");var n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:i.MessageType.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:i.MessageType.Invocation}},e.prototype.createStreamItemMessage=function(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:i.MessageType.StreamItem}},e.prototype.createCompletionMessage=function(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");var n,r,o=t[3];if(o!==this.voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");switch(o){case this.errorResult:n=t[4];break;case this.nonVoidResult:r=t[4]}return{error:n,headers:e,invocationId:t[2],result:r,type:i.MessageType.Completion}},e.prototype.writeInvocation=function(e){var t,n=o(this.messagePackOptions);return t=e.streamIds?n.encode([i.MessageType.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):n.encode([i.MessageType.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),a.write(t.slice())},e.prototype.writeStreamInvocation=function(e){var t,n=o(this.messagePackOptions);return t=e.streamIds?n.encode([i.MessageType.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):n.encode([i.MessageType.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),a.write(t.slice())},e.prototype.writeStreamItem=function(e){var t=o(this.messagePackOptions).encode([i.MessageType.StreamItem,e.headers||{},e.invocationId,e.item]);return a.write(t.slice())},e.prototype.writeCompletion=function(e){var t,n=o(this.messagePackOptions),r=e.error?this.errorResult:e.result?this.nonVoidResult:this.voidResult;switch(r){case this.errorResult:t=n.encode([i.MessageType.Completion,e.headers||{},e.invocationId,r,e.error]);break;case this.voidResult:t=n.encode([i.MessageType.Completion,e.headers||{},e.invocationId,r]);break;case this.nonVoidResult:t=n.encode([i.MessageType.Completion,e.headers||{},e.invocationId,r,e.result])}return a.write(t.slice())},e.prototype.writeCancelInvocation=function(e){var t=o(this.messagePackOptions).encode([i.MessageType.CancelInvocation,e.headers||{},e.invocationId]);return a.write(t.slice())},e.prototype.readHeaders=function(e){var t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t},e}(),l="5.0.0-dev"}]); \ No newline at end of file +*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,c=a(e),u=1;u0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t,n,o,i=r.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,n=i,o=s,t.copy(n,o),s+=a.data.length,a=a.next;return i},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,n){var r=n(10),o=r.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function a(e,t,n){return o(e,t,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=a),a.prototype=Object.create(o.prototype),i(o,a),a.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return o(e,t,n)},a.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=o(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return o(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(68),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(8))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,o,i,a,s,c=1,u={},l=!1,f=e.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(e);h=h&&h.setTimeout?h:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){d(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){d(e.data)},r=function(e){i.port2.postMessage(e)}):f&&"onreadystatechange"in f.createElement("script")?(o=f.documentElement,r=function(e){var t=f.createElement("script");t.onreadystatechange=function(){d(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(d,0,e)}:(a="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&d(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(a+t,"*")}),h.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n0?this._transform(null,t,n):n()},e.exports.decoder=c,e.exports.encoder=s},function(e,t,n){(t=e.exports=n(40)).Stream=t,t.Readable=t,t.Writable=n(45),t.Duplex=n(9),t.Transform=n(46),t.PassThrough=n(72)},function(e,t,n){"use strict";e.exports=i;var r=n(46),o=n(19);function i(e){if(!(this instanceof i))return new i(e);r.call(this,e)}o.inherits=n(15),o.inherits(i,r),i.prototype._transform=function(e,t,n){n(null,e)}},function(e,t,n){var r=n(23);function o(e){Error.call(this),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.message=e||"unable to decode"}n(39).inherits(o,Error),e.exports=function(e){return function(e){e instanceof r||(e=r().append(e));var t=i(e);if(t)return e.consume(t.bytesConsumed),t.value;throw new o};function t(e,t,n){return t>=n+e}function n(e,t){return{value:e,bytesConsumed:t}}function i(e,r){r=void 0===r?0:r;var o=e.length-r;if(o<=0)return null;var i,l,f,h=e.readUInt8(r),p=0;if(!function(e,t){var n=function(e){switch(e){case 196:return 2;case 197:return 3;case 198:return 5;case 199:return 3;case 200:return 4;case 201:return 6;case 202:return 5;case 203:return 9;case 204:return 2;case 205:return 3;case 206:return 5;case 207:return 9;case 208:return 2;case 209:return 3;case 210:return 5;case 211:return 9;case 212:return 3;case 213:return 4;case 214:return 6;case 215:return 10;case 216:return 18;case 217:return 2;case 218:return 3;case 219:return 5;case 222:return 3;default:return-1}}(e);return!(-1!==n&&t=0;f--)p+=e.readUInt8(r+f+1)*Math.pow(2,8*(7-f));return n(p,9);case 208:return n(p=e.readInt8(r+1),2);case 209:return n(p=e.readInt16BE(r+1),3);case 210:return n(p=e.readInt32BE(r+1),5);case 211:return n(p=function(e,t){var n=128==(128&e[t]);if(n)for(var r=1,o=t+7;o>=t;o--){var i=(255^e[o])+r;e[o]=255&i,r=i>>8}var a=e.readUInt32BE(t+0),s=e.readUInt32BE(t+4);return(4294967296*a+s)*(n?-1:1)}(e.slice(r+1,r+9),0),9);case 202:return n(p=e.readFloatBE(r+1),5);case 203:return n(p=e.readDoubleBE(r+1),9);case 217:return t(i=e.readUInt8(r+1),o,2)?n(p=e.toString("utf8",r+2,r+2+i),2+i):null;case 218:return t(i=e.readUInt16BE(r+1),o,3)?n(p=e.toString("utf8",r+3,r+3+i),3+i):null;case 219:return t(i=e.readUInt32BE(r+1),o,5)?n(p=e.toString("utf8",r+5,r+5+i),5+i):null;case 196:return t(i=e.readUInt8(r+1),o,2)?n(p=e.slice(r+2,r+2+i),2+i):null;case 197:return t(i=e.readUInt16BE(r+1),o,3)?n(p=e.slice(r+3,r+3+i),3+i):null;case 198:return t(i=e.readUInt32BE(r+1),o,5)?n(p=e.slice(r+5,r+5+i),5+i):null;case 220:return o<3?null:(i=e.readUInt16BE(r+1),a(e,r,i,3));case 221:return o<5?null:(i=e.readUInt32BE(r+1),a(e,r,i,5));case 222:return i=e.readUInt16BE(r+1),s(e,r,i,3);case 223:throw new Error("map too big to decode in JS");case 212:return c(e,r,1);case 213:return c(e,r,2);case 214:return c(e,r,4);case 215:return c(e,r,8);case 216:return c(e,r,16);case 199:return i=e.readUInt8(r+1),l=e.readUInt8(r+2),t(i,o,3)?u(e,r,l,i,3):null;case 200:return i=e.readUInt16BE(r+1),l=e.readUInt8(r+3),t(i,o,4)?u(e,r,l,i,4):null;case 201:return i=e.readUInt32BE(r+1),l=e.readUInt8(r+5),t(i,o,6)?u(e,r,l,i,6):null}if(144==(240&h))return a(e,r,i=15&h,1);if(128==(240&h))return s(e,r,i=15&h,1);if(160==(224&h))return t(i=31&h,o,1)?n(p=e.toString("utf8",r+1,r+i+1),i+1):null;if(h>=224)return n(p=h-256,1);if(h<128)return n(h,1);throw new Error("not implemented yet")}function a(e,t,r,o){var a,s=[],c=0;for(t+=o,a=0;a.1)&&((n=r.allocUnsafe(9))[0]=203,n.writeDoubleBE(e,1)),n}e.exports=function(e,t,n,a){function s(c,u){var l,f,h;if(void 0===c)throw new Error("undefined is not encodable in msgpack!");if(null===c)(l=r.allocUnsafe(1))[0]=192;else if(!0===c)(l=r.allocUnsafe(1))[0]=195;else if(!1===c)(l=r.allocUnsafe(1))[0]=194;else if("string"==typeof c)(f=r.byteLength(c))<32?((l=r.allocUnsafe(1+f))[0]=160|f,f>0&&l.write(c,1)):f<=255&&!n?((l=r.allocUnsafe(2+f))[0]=217,l[1]=f,l.write(c,2)):f<=65535?((l=r.allocUnsafe(3+f))[0]=218,l.writeUInt16BE(f,1),l.write(c,3)):((l=r.allocUnsafe(5+f))[0]=219,l.writeUInt32BE(f,1),l.write(c,5));else if(c&&(c.readUInt32LE||c instanceof Uint8Array))c instanceof Uint8Array&&(c=r.from(c)),c.length<=255?((l=r.allocUnsafe(2))[0]=196,l[1]=c.length):c.length<=65535?((l=r.allocUnsafe(3))[0]=197,l.writeUInt16BE(c.length,1)):((l=r.allocUnsafe(5))[0]=198,l.writeUInt32BE(c.length,1)),l=o([l,c]);else if(Array.isArray(c))c.length<16?(l=r.allocUnsafe(1))[0]=144|c.length:c.length<65536?((l=r.allocUnsafe(3))[0]=220,l.writeUInt16BE(c.length,1)):((l=r.allocUnsafe(5))[0]=221,l.writeUInt32BE(c.length,1)),l=c.reduce((function(e,t){return e.append(s(t,!0)),e}),o().append(l));else{if(!a&&"function"==typeof c.getDate)return function(e){var t,n=1*e,i=Math.floor(n/1e3),a=1e6*(n-1e3*i);if(a||i>4294967295){(t=new r(10))[0]=215,t[1]=-1;var s=4*a,c=i/Math.pow(2,32),u=s+c&4294967295,l=4294967295&i;t.writeInt32BE(u,2),t.writeInt32BE(l,6)}else(t=new r(6))[0]=214,t[1]=-1,t.writeUInt32BE(Math.floor(n/1e3),2);return o().append(t)}(c);if("object"==typeof c)l=function(t){var n,i,a,s=[];for(n=0;n>8),s.push(255&a)):(s.push(201),s.push(a>>24),s.push(a>>16&255),s.push(a>>8&255),s.push(255&a));return o().append(r.from(s)).append(i)}(c)||function(e){var t,n,i=[],a=0;for(t in e)e.hasOwnProperty(t)&&void 0!==e[t]&&"function"!=typeof e[t]&&(++a,i.push(s(t,!0)),i.push(s(e[t],!0)));a<16?(n=r.allocUnsafe(1))[0]=128|a:((n=r.allocUnsafe(3))[0]=222,n.writeUInt16BE(a,1));return i.unshift(n),i.reduce((function(e,t){return e.append(t)}),o())}(c);else if("number"==typeof c){if((h=c)!==Math.floor(h))return i(c,t);if(c>=0)if(c<128)(l=r.allocUnsafe(1))[0]=c;else if(c<256)(l=r.allocUnsafe(2))[0]=204,l[1]=c;else if(c<65536)(l=r.allocUnsafe(3))[0]=205,l.writeUInt16BE(c,1);else if(c<=4294967295)(l=r.allocUnsafe(5))[0]=206,l.writeUInt32BE(c,1);else{if(!(c<=9007199254740991))return i(c,!0);(l=r.allocUnsafe(9))[0]=207,function(e,t){for(var n=7;n>=0;n--)e[n+1]=255&t,t/=256}(l,c)}else if(c>=-32)(l=r.allocUnsafe(1))[0]=256+c;else if(c>=-128)(l=r.allocUnsafe(2))[0]=208,l.writeInt8(c,1);else if(c>=-32768)(l=r.allocUnsafe(3))[0]=209,l.writeInt16BE(c,1);else if(c>-214748365)(l=r.allocUnsafe(5))[0]=210,l.writeInt32BE(c,1);else{if(!(c>=-9007199254740991))return i(c,!0);(l=r.allocUnsafe(9))[0]=211,function(e,t,n){var r=n<0;r&&(n=Math.abs(n));var o=n%4294967296,i=n/4294967296;if(e.writeUInt32BE(Math.floor(i),t+0),e.writeUInt32BE(o,t+4),r)for(var a=1,s=t+7;s>=t;s--){var c=(255^e[s])+a;e[s]=255&c,a=c>>8}}(l,1,c)}}}if(!l)throw new Error("not implemented yet");return u?l:l.slice()}return s}},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]this.nextBatchId?this.fatalError?(this.logger.log(s.LogLevel.Debug,"Received a new batch "+e+" but errored out on a previous batch "+(this.nextBatchId-1)),[4,n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())]):[3,4]:[3,5];case 3:return o.sent(),[2];case 4:return this.logger.log(s.LogLevel.Debug,"Waiting for batch "+this.nextBatchId+". Batch "+e+" not processed."),[2];case 5:return o.trys.push([5,7,,8]),this.nextBatchId++,this.logger.log(s.LogLevel.Debug,"Applying batch "+e+"."),i.renderBatch(this.browserRendererId,new a.OutOfProcessRenderBatch(t)),[4,this.completeBatch(n,e)];case 6:return o.sent(),[3,8];case 7:throw r=o.sent(),this.fatalError=r.toString(),this.logger.log(s.LogLevel.Error,"There was an error applying batch "+e+"."),n.send("OnRenderCompleted",e,r.toString()),r;case 8:return[2]}}))}))},e.prototype.getLastBatchid=function(){return this.nextBatchId-1},e.prototype.completeBatch=function(e,t){return r(this,void 0,void 0,(function(){return o(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,e.send("OnRenderCompleted",t,null)];case 1:return n.sent(),[3,3];case 2:return n.sent(),this.logger.log(s.LogLevel.Warning,"Failed to deliver completion notification for render '"+t+"'."),[3,3];case 3:return[2]}}))}))},e}();t.RenderQueue=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(77),o=n(78),i=function(){function e(e){this.batchData=e;var t=new u(e);this.arrayRangeReader=new l(e),this.arrayBuilderSegmentReader=new f(e),this.diffReader=new a(e),this.editReader=new s(e,t),this.frameReader=new c(e,t)}return e.prototype.updatedComponents=function(){return o.readInt32LE(this.batchData,this.batchData.length-20)},e.prototype.referenceFrames=function(){return o.readInt32LE(this.batchData,this.batchData.length-16)},e.prototype.disposedComponentIds=function(){return o.readInt32LE(this.batchData,this.batchData.length-12)},e.prototype.disposedEventHandlerIds=function(){return o.readInt32LE(this.batchData,this.batchData.length-8)},e.prototype.updatedComponentsEntry=function(e,t){var n=e+4*t;return o.readInt32LE(this.batchData,n)},e.prototype.referenceFramesEntry=function(e,t){return e+20*t},e.prototype.disposedComponentIdsEntry=function(e,t){var n=e+4*t;return o.readInt32LE(this.batchData,n)},e.prototype.disposedEventHandlerIdsEntry=function(e,t){var n=e+8*t;return o.readUint64LE(this.batchData,n)},e}();t.OutOfProcessRenderBatch=i;var a=function(){function e(e){this.batchDataUint8=e}return e.prototype.componentId=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.edits=function(e){return e+4},e.prototype.editsEntry=function(e,t){return e+16*t},e}(),s=function(){function e(e,t){this.batchDataUint8=e,this.stringReader=t}return e.prototype.editType=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.siblingIndex=function(e){return o.readInt32LE(this.batchDataUint8,e+4)},e.prototype.newTreeIndex=function(e){return o.readInt32LE(this.batchDataUint8,e+8)},e.prototype.moveToSiblingIndex=function(e){return o.readInt32LE(this.batchDataUint8,e+8)},e.prototype.removedAttributeName=function(e){var t=o.readInt32LE(this.batchDataUint8,e+12);return this.stringReader.readString(t)},e}(),c=function(){function e(e,t){this.batchDataUint8=e,this.stringReader=t}return e.prototype.frameType=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.subtreeLength=function(e){return o.readInt32LE(this.batchDataUint8,e+4)},e.prototype.elementReferenceCaptureId=function(e){var t=o.readInt32LE(this.batchDataUint8,e+4);return this.stringReader.readString(t)},e.prototype.componentId=function(e){return o.readInt32LE(this.batchDataUint8,e+8)},e.prototype.elementName=function(e){var t=o.readInt32LE(this.batchDataUint8,e+8);return this.stringReader.readString(t)},e.prototype.textContent=function(e){var t=o.readInt32LE(this.batchDataUint8,e+4);return this.stringReader.readString(t)},e.prototype.markupContent=function(e){var t=o.readInt32LE(this.batchDataUint8,e+4);return this.stringReader.readString(t)},e.prototype.attributeName=function(e){var t=o.readInt32LE(this.batchDataUint8,e+4);return this.stringReader.readString(t)},e.prototype.attributeValue=function(e){var t=o.readInt32LE(this.batchDataUint8,e+8);return this.stringReader.readString(t)},e.prototype.attributeEventHandlerId=function(e){return o.readUint64LE(this.batchDataUint8,e+12)},e}(),u=function(){function e(e){this.batchDataUint8=e,this.stringTableStartIndex=o.readInt32LE(e,e.length-4)}return e.prototype.readString=function(e){if(-1===e)return null;var t=o.readInt32LE(this.batchDataUint8,this.stringTableStartIndex+4*e),n=o.readLEB128(this.batchDataUint8,t),i=t+o.numLEB128Bytes(n),a=new Uint8Array(this.batchDataUint8.buffer,this.batchDataUint8.byteOffset+i,n);return r.decodeUtf8(a)},e}(),l=function(){function e(e){this.batchDataUint8=e}return e.prototype.count=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.values=function(e){return e+4},e}(),f=function(){function e(e){this.batchDataUint8=e}return e.prototype.offset=function(e){return 0},e.prototype.count=function(e){return o.readInt32LE(this.batchDataUint8,e)},e.prototype.values=function(e){return e+4},e}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof TextDecoder?new TextDecoder("utf-8"):null;t.decodeUtf8=r?r.decode.bind(r):function(e){var t=0,n=e.length,r=[],o=[];for(;t65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Math.pow(2,32),o=Math.pow(2,21)-1;function i(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}t.readInt32LE=function(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24},t.readUint32LE=i,t.readUint64LE=function(e,t){var n=i(e,t+4);if(n>o)throw new Error("Cannot read uint64 with high order part "+n+", because the result would exceed Number.MAX_SAFE_INTEGER.");return n*r+i(e,t)},t.readLEB128=function(e,t){for(var n=0,r=0,o=0;o<4;o++){var i=e[t+o];if(n|=(127&i)<=this.minimumLogLevel)switch(e){case r.LogLevel.Critical:case r.LogLevel.Error:console.error("["+(new Date).toISOString()+"] "+r.LogLevel[e]+": "+t);break;case r.LogLevel.Warning:console.warn("["+(new Date).toISOString()+"] "+r.LogLevel[e]+": "+t);break;case r.LogLevel.Information:console.info("["+(new Date).toISOString()+"] "+r.LogLevel[e]+": "+t);break;default:console.log("["+(new Date).toISOString()+"] "+r.LogLevel[e]+": "+t)}},e}();t.ConsoleLogger=i},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]e.MaximumFirstRetryInterval?e.MaximumFirstRetryInterval:t.retryIntervalMilliseconds,[4,this.delay(r)]):[3,7];case 2:if(o.sent(),this.isDisposed)return[3,7];o.label=3;case 3:return o.trys.push([3,5,,6]),[4,this.reconnectCallback()];case 4:return o.sent()||this.reconnectDisplay.rejected(),[2];case 5:return i=o.sent(),this.logger.log(s.LogLevel.Error,i),[3,6];case 6:return n++,[3,1];case 7:return this.reconnectDisplay.failed(),[2]}}))}))},e.prototype.delay=function(e){return new Promise((function(t){return setTimeout(t,e)}))},e.MaximumFirstRetryInterval=3e3,e}()},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]reloading the page if you're unable to reconnect.",this.message.querySelector("a").addEventListener("click",(function(){return location.reload()}))},e.prototype.rejected=function(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none",this.message.innerHTML="Could not reconnect to the server. Reload the page to restore functionality.",this.message.querySelector("a").addEventListener("click",(function(){return location.reload()}))},e.prototype.getLoader=function(){var e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e},e}();t.DefaultReconnectDisplay=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(t,n,r){this.dialog=t,this.maxRetries=n,this.document=r,this.document=r;var o=this.document.getElementById(e.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}return e.prototype.show=function(){this.removeClasses(),this.dialog.classList.add(e.ShowClassName)},e.prototype.update=function(t){var n=this.document.getElementById(e.CurrentAttemptId);n&&(n.innerText=t.toString())},e.prototype.hide=function(){this.removeClasses(),this.dialog.classList.add(e.HideClassName)},e.prototype.failed=function(){this.removeClasses(),this.dialog.classList.add(e.FailedClassName)},e.prototype.rejected=function(){this.removeClasses(),this.dialog.classList.add(e.RejectedClassName)},e.prototype.removeClasses=function(){this.dialog.classList.remove(e.ShowClassName,e.HideClassName,e.FailedClassName,e.RejectedClassName)},e.ShowClassName="components-reconnect-show",e.HideClassName="components-reconnect-hide",e.FailedClassName="components-reconnect-failed",e.RejectedClassName="components-reconnect-rejected",e.MaxRetriesId="components-reconnect-max-retries",e.CurrentAttemptId="components-reconnect-current-attempt",e}();t.UserSpecifiedDisplay=r},function(e,t,n){"use strict";n.r(t),n.d(t,"VERSION",(function(){return l})),n.d(t,"MessagePackHubProtocol",(function(){return u}));var r=n(10),o=n(11),i=n(2),a=function(){function e(){}return e.write=function(e){var t=e.byteLength||e.length,n=[];do{var r=127&t;(t>>=7)>0&&(r|=128),n.push(r)}while(t>0);t=e.byteLength||e.length;var o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer},e.parse=function(e){for(var t=[],n=new Uint8Array(e),r=[0,7,14,21,28],o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t},e}();var s=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=3?e[2]:void 0,error:e[1],type:i.MessageType.Close}},e.prototype.createPingMessage=function(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:i.MessageType.Ping}},e.prototype.createInvocationMessage=function(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");var n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:i.MessageType.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:i.MessageType.Invocation}},e.prototype.createStreamItemMessage=function(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:i.MessageType.StreamItem}},e.prototype.createCompletionMessage=function(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");var n,r,o=t[3];if(o!==this.voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");switch(o){case this.errorResult:n=t[4];break;case this.nonVoidResult:r=t[4]}return{error:n,headers:e,invocationId:t[2],result:r,type:i.MessageType.Completion}},e.prototype.writeInvocation=function(e){var t,n=o(this.messagePackOptions);return t=e.streamIds?n.encode([i.MessageType.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):n.encode([i.MessageType.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),a.write(t.slice())},e.prototype.writeStreamInvocation=function(e){var t,n=o(this.messagePackOptions);return t=e.streamIds?n.encode([i.MessageType.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):n.encode([i.MessageType.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),a.write(t.slice())},e.prototype.writeStreamItem=function(e){var t=o(this.messagePackOptions).encode([i.MessageType.StreamItem,e.headers||{},e.invocationId,e.item]);return a.write(t.slice())},e.prototype.writeCompletion=function(e){var t,n=o(this.messagePackOptions),r=e.error?this.errorResult:e.result?this.nonVoidResult:this.voidResult;switch(r){case this.errorResult:t=n.encode([i.MessageType.Completion,e.headers||{},e.invocationId,r,e.error]);break;case this.voidResult:t=n.encode([i.MessageType.Completion,e.headers||{},e.invocationId,r]);break;case this.nonVoidResult:t=n.encode([i.MessageType.Completion,e.headers||{},e.invocationId,r,e.result])}return a.write(t.slice())},e.prototype.writeCancelInvocation=function(e){var t=o(this.messagePackOptions).encode([i.MessageType.CancelInvocation,e.headers||{},e.invocationId]);return a.write(t.slice())},e.prototype.readHeaders=function(e){var t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t},e}(),l="5.0.0-dev"}]); \ No newline at end of file diff --git a/src/Components/Web.JS/dist/Release/blazor.webassembly.js b/src/Components/Web.JS/dist/Release/blazor.webassembly.js new file mode 100644 index 000000000000..6d11fd3c855c --- /dev/null +++ b/src/Components/Web.JS/dist/Release/blazor.webassembly.js @@ -0,0 +1 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=48)}([,,,function(e,t,n){"use strict";var r;n.r(t),n.d(t,"DotNet",(function(){return r})),function(e){var t;window.DotNet=e;var n=[],r=function(){function e(e){this._jsObject=e,this._cachedFunctions=new Map}return e.prototype.findFunction=function(e){var t=this._cachedFunctions.get(e);if(t)return t;var n,r=this._jsObject;if(e.split(".").forEach((function(t){if(!(t in r))throw new Error("Could not find '"+e+"' ('"+t+"' was undefined).");n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error("The value '"+e+"' is not a function.")},e.prototype.getWrappedObject=function(){return this._jsObject},e}(),o={},i=((t={})[0]=new r(window),t);i[0]._cachedFunctions.set("import",(function(e){return"string"==typeof e&&e.startsWith("./")&&(e=document.baseURI+e.substr(2)),import(e)}));var a,s=1,u=1,c=null;function l(e){n.push(e)}function f(e){var t;if(e&&"object"==typeof e){i[u]=new r(e);var n=((t={}).__jsObjectId=u,t);return u++,n}throw new Error("Cannot create a JSObjectReference from the value '"+e+"'.")}function d(e){return e?JSON.parse(e,(function(e,t){return n.reduce((function(t,n){return n(e,t)}),t)})):null}function p(e,t,n,r){var o=m();if(o.invokeDotNetFromJS){var i=JSON.stringify(r,_),a=o.invokeDotNetFromJS(e,t,n,i);return a?d(a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeMethodAsync instead.")}function h(e,t,n,r){if(e&&n)throw new Error("For instance method calls, assemblyName should be null. Received '"+e+"'.");var i=s++,a=new Promise((function(e,t){o[i]={resolve:e,reject:t}}));try{var u=JSON.stringify(r,_);m().beginInvokeDotNetFromJS(i,e,t,n,u)}catch(e){v(i,!1,e)}return a}function m(){if(null!==c)return c;throw new Error("No .NET call dispatcher has been set.")}function v(e,t,n){if(!o.hasOwnProperty(e))throw new Error("There is no pending async call with ID "+e+".");var r=o[e];delete o[e],t?r.resolve(n):r.reject(n)}function y(e){return e instanceof Error?e.message+"\n"+e.stack:e?e.toString():"null"}function b(e,t){var n=i[t];if(n)return n.findFunction(e);throw new Error("JS object instance with ID "+t+" does not exist (has it been disposed?).")}function g(e){delete i[e]}e.attachDispatcher=function(e){c=e},e.attachReviver=l,e.invokeMethod=function(e,t){for(var n=[],r=2;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");return r in e||(e[r]=[]),e}function s(e,t,n){var i=e;if(e instanceof Comment&&(c(i)&&c(i).length>0))throw new Error("Not implemented: inserting non-empty logical container");if(u(i))throw new Error("Not implemented: moving existing logical children");var a=c(t);if(n0;)e(r,0)}var i=r;i.parentNode.removeChild(i)},t.getLogicalParent=u,t.getLogicalSiblingEnd=function(e){return e[i]||null},t.getLogicalChild=function(e,t){return c(e)[t]},t.isSvgElement=function(e){return"http://www.w3.org/2000/svg"===l(e).namespaceURI},t.getLogicalChildrenArray=c,t.permuteLogicalChildren=function(e,t){var n=c(e);t.forEach((function(e){e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=function e(t){if(t instanceof Element)return t;var n=f(t);if(n)return n.previousSibling;var r=u(t);return r instanceof Element?r.lastChild:e(r)}(e.moveRangeStart)})),t.forEach((function(t){var r=t.moveToBeforeMarker=document.createComment("marker"),o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):d(r,e)})),t.forEach((function(e){for(var t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd,i=r;i;){var a=i.nextSibling;if(n.insertBefore(i,t),i===o)break;i=a}n.removeChild(t)})),t.forEach((function(e){n[e.toSiblingIndex]=e.moveRangeStart}))},t.getClosestDomElement=l},,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(26),n(17);var r=n(27),o=n(7),i={},a=!1;function s(e,t,n){var o=i[e];o||(o=i[e]=new r.BrowserRenderer(e)),o.attachRootComponentToLogicalElement(n,t)}t.attachRootComponentToLogicalElement=s,t.attachRootComponentToElement=function(e,t,n){var r=document.querySelector(e);if(!r)throw new Error("Could not find any element matching selector '"+e+"'.");s(n||0,o.toLogicalElement(r,!0),t)},t.getRendererer=function(e){return i[e]},t.renderBatch=function(e,t){var n=i[e];if(!n)throw new Error("There is no browser renderer with ID "+e+".");for(var r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),u=r.count(o),c=t.referenceFrames(),l=r.values(c),f=t.diffReader,d=0;d0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]>2]}t.monoPlatform={start:function(e){return new Promise((function(t,n){var l,f;s.attachDebuggerHotkey(e),window.Browser={init:function(){}},l=function(){window.Module=function(e,t,n){var l=this,f=e.bootConfig.resources,d=window.Module||{},p=["DEBUGGING ENABLED"];d.print=function(e){return p.indexOf(e)<0&&console.log(e)},d.printErr=function(e){console.error(e),u.showErrorNotification()},d.preRun=d.preRun||[],d.postRun=d.postRun||[],d.preloadPlugins=[];var m,g,w=e.loadResources(f.assembly,(function(e){return"_framework/"+e}),"assembly"),E=e.loadResources(f.pdb||{},(function(e){return"_framework/"+e}),"pdb"),_=e.loadResource("dotnet.wasm","_framework/dotnet.wasm",e.bootConfig.resources.runtime["dotnet.wasm"],"dotnetwasm");if(e.bootConfig.resources.runtime.hasOwnProperty("dotnet.timezones.blat")&&(m=e.loadResource("dotnet.timezones.blat","_framework/dotnet.timezones.blat",e.bootConfig.resources.runtime["dotnet.timezones.blat"],"globalization")),e.bootConfig.icuDataMode!=c.ICUDataMode.Invariant){var I=e.startOptions.applicationCulture||navigator.languages&&navigator.languages[0],C=function(e,t){if(!t||e.icuDataMode==c.ICUDataMode.All)return"icudt.dat";var n=t.split("-")[0];return["en","fr","it","de","es"].includes(n)?"icudt_EFIGS.dat":["zh","ko","ja"].includes(n)?"icudt_CJK.dat":"icudt_no_CJK.dat"}(e.bootConfig,I);g=e.loadResource(C,"_framework/"+C,e.bootConfig.resources.runtime[C],"globalization")}return d.instantiateWasm=function(e,t){return r(l,void 0,void 0,(function(){var n,r;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,3,,4]),[4,_];case 1:return[4,y(o.sent(),e)];case 2:return n=o.sent(),[3,4];case 3:throw r=o.sent(),d.printErr(r),r;case 4:return t(n),[2]}}))})),[]},d.preRun.push((function(){i=cwrap("mono_wasm_add_assembly",null,["string","number","number"]),MONO.loaded_files=[],m&&function(e){r(this,void 0,void 0,(function(){var t,n;return o(this,(function(r){switch(r.label){case 0:return t="blazor:timezonedata",addRunDependency(t),[4,e.response];case 1:return[4,r.sent().arrayBuffer()];case 2:return n=r.sent(),Module.FS_createPath("/","usr",!0,!0),Module.FS_createPath("/usr/","share",!0,!0),Module.FS_createPath("/usr/share/","zoneinfo",!0,!0),MONO.mono_wasm_load_data_archive(new Uint8Array(n),"/usr/share/zoneinfo/"),removeRunDependency(t),[2]}}))}))}(m),g?function(e){r(this,void 0,void 0,(function(){var t,n,r,i,a;return o(this,(function(o){switch(o.label){case 0:return t="blazor:icudata",addRunDependency(t),[4,e.response];case 1:return n=o.sent(),i=Uint8Array.bind,[4,n.arrayBuffer()];case 2:if(r=new(i.apply(Uint8Array,[void 0,o.sent()])),a=MONO.mono_wasm_load_bytes_into_heap(r),!MONO.mono_wasm_load_icu_data(a))throw new Error("Error loading ICU asset.");return removeRunDependency(t),[2]}}))}))}(g):MONO.mono_wasm_setenv("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT","1"),w.forEach((function(e){return N(e,function(e,t){var n=e.lastIndexOf(".");if(n<0)throw new Error("No extension to replace in '"+e+"'");return e.substr(0,n)+t}(e.name,".dll"))})),E.forEach((function(e){return N(e,e.name)})),window.Blazor._internal.dotNetCriticalError=function(e){d.printErr(BINDING.conv_string(e)||"(null)")},window.Blazor._internal.getSatelliteAssemblies=function(t){var n=BINDING.mono_array_to_js_array(t),i=e.bootConfig.resources.satelliteResources,a=e.startOptions.applicationCulture||navigator.languages&&navigator.languages[0];if(e.bootConfig.icuDataMode==c.ICUDataMode.Sharded&&n&&n[0]!==a)throw new Error("To change culture dynamically during startup, set true in the application's project file.");if(i){var s=Promise.all(n.filter((function(e){return i.hasOwnProperty(e)})).map((function(t){return e.loadResources(i[t],(function(e){return"_framework/"+e}),"assembly")})).reduce((function(e,t){return e.concat(t)}),new Array).map((function(e){return r(l,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.response];case 1:return[2,t.sent().arrayBuffer()]}}))}))})));return BINDING.js_to_mono_obj(s.then((function(e){return e.length&&(window.Blazor._internal.readSatelliteAssemblies=function(){for(var t=BINDING.mono_obj_array_new(e.length),n=0;n>1];var n},readInt32Field:function(e,t){return p(e+(t||0))},readUint64Field:function(e,t){return function(e){var t=e>>2,n=Module.HEAPU32[t+1];if(n>f)throw new Error("Cannot read uint64 with high order part "+n+", because the result would exceed Number.MAX_SAFE_INTEGER.");return n*l+Module.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),Module.HEAPF32[n>>2];var n},readObjectField:function(e,t){return p(e+(t||0))},readStringField:function(e,t,n){var r,o=p(e+(t||0));if(0===o)return null;if(n){var i=BINDING.unbox_mono_obj(o);return"boolean"==typeof i?i?"":null:i}return d?void 0===(r=d.stringCache.get(o))&&(r=BINDING.conv_string(o),d.stringCache.set(o,r)):r=BINDING.conv_string(o),r},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return b(),d=new g},invokeWhenHeapUnlocked:function(e){d?d.enqueuePostReleaseAction(e):e()}};var h=document.createElement("a");function m(e){return e+12}function v(e,t,n){var r="["+e+"] "+t+":"+n;return BINDING.bind_static_method(r)}function y(e,t){return r(this,void 0,void 0,(function(){var n,r;return o(this,(function(o){switch(o.label){case 0:if("function"!=typeof WebAssembly.instantiateStreaming)return[3,4];o.label=1;case 1:return o.trys.push([1,3,,4]),[4,WebAssembly.instantiateStreaming(e.response,t)];case 2:return[2,o.sent().instance];case 3:return n=o.sent(),console.info("Streaming compilation failed. Falling back to ArrayBuffer instantiation. ",n),[3,4];case 4:return[4,e.response.then((function(e){return e.arrayBuffer()}))];case 5:return r=o.sent(),[4,WebAssembly.instantiate(r,t)];case 6:return[2,o.sent().instance]}}))}))}function b(){if(d)throw new Error("Assertion failed - heap is currently locked")}var g=function(){function e(){this.stringCache=new Map}return e.prototype.enqueuePostReleaseAction=function(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)},e.prototype.release=function(){var e;if(d!==this)throw new Error("Trying to release a lock which isn't current");for(d=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;){this.postReleaseActions.shift()(),b()}},e}()},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,a,s)}}))}),{root:i,rootMargin:o+"px"});a.observe(t),a.observe(n);var s=c(t),u=c(n);function c(e){var t=new MutationObserver((function(){a.unobserve(e),a.observe(e)}));return t.observe(e,{attributes:!0}),t}r[e._id]={intersectionObserver:a,mutationObserverBefore:s,mutationObserverAfter:u}},dispose:function(e){var t=r[e._id];t&&(t.intersectionObserver.disconnect(),t.mutationObserverBefore.disconnect(),t.mutationObserverAfter.disconnect(),e.dispose(),delete r[e._id])}};var r={}},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1].*)$/;function i(e,t){var n=e.currentElement;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){var r=new RegExp(o).exec(n.textContent),i=r&&r.groups&&r.groups.descriptor;if(!i)return;try{var s=function(e){var t=JSON.parse(e),n=t.type;if("server"!==n&&"webassembly"!==n)throw new Error("Invalid component type '"+n+"'.");return t}(i);switch(t){case"webassembly":return function(e,t,n){var r=e.type,o=e.assembly,i=e.typeName,s=e.parameterDefinitions,u=e.parameterValues,c=e.prerenderId;if("webassembly"!==r)return;if(!o)throw new Error("assembly must be defined when using a descriptor.");if(!i)throw new Error("typeName must be defined when using a descriptor.");if(c){var l=a(c,n);if(!l)throw new Error("Could not find an end component comment for '"+t+"'");return{type:r,assembly:o,typeName:i,parameterDefinitions:s&&atob(s),parameterValues:u&&atob(u),start:t,prerenderId:c,end:l}}return{type:r,assembly:o,typeName:i,parameterDefinitions:s&&atob(s),parameterValues:u&&atob(u),start:t}}(s,n,e);case"server":return function(e,t,n){var r=e.type,o=e.descriptor,i=e.sequence,s=e.prerenderId;if("server"!==r)return;if(!o)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===i)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(i))throw new Error("Error parsing the sequence '"+i+"' for component '"+JSON.stringify(e)+"'");if(s){var u=a(s,n);if(!u)throw new Error("Could not find an end component comment for '"+t+"'");return{type:r,sequence:i,descriptor:o,start:t,prerenderId:s,end:u}}return{type:r,sequence:i,descriptor:o,start:t}}(s,n,e)}}catch(e){throw new Error("Found malformed component comment at "+n.textContent)}}}function a(e,t){for(;t.next()&&t.currentElement;){var n=t.currentElement;if(n.nodeType===Node.COMMENT_NODE&&n.textContent){var r=new RegExp(o).exec(n.textContent),i=r&&r[1];if(i)return s(i,e),n}}}function s(e,t){var n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error("Invalid end of component comment: '"+e+"'");var r=n.prerenderId;if(!r)throw new Error("End of component comment must have a value for the prerendered property: '"+e+"'");if(r!==t)throw new Error("End of component comment prerendered property must match the start comment prerender id: '"+t+"', '"+r+"'")}var u=function(){function e(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}return e.prototype.next=function(){return this.currentIndex++,this.currentIndex0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var a=n(3);n(25);var s=n(17),u=n(20),c=n(12),l=n(49),f=n(37),d=n(18),p=n(50),h=n(51),m=n(22),v=n(52),y=n(38),b=!1;function g(e){return r(this,void 0,void 0,(function(){var t,n,f,g,E,_,I,C,N,A,S,k=this;return o(this,(function(F){switch(F.label){case 0:if(b)throw new Error("Blazor has already started.");return b=!0,d.setEventDispatcher((function(e,t){c.getRendererer(e.browserRendererId).eventDelegator.getHandler(e.eventHandlerId)&&u.monoPlatform.invokeWhenHeapUnlocked((function(){return a.DotNet.invokeMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","DispatchEvent",e,JSON.stringify(t))}))})),window.Blazor._internal.invokeJSFromDotNet=w,t=s.setPlatform(u.monoPlatform),window.Blazor.platform=t,window.Blazor._internal.renderBatch=function(e,t){var n=u.monoPlatform.beginHeapLock();try{c.renderBatch(e,new l.SharedMemoryRenderBatch(t))}finally{n.release()}},n=window.Blazor._internal.navigationManager.getBaseURI,f=window.Blazor._internal.navigationManager.getLocationHref,window.Blazor._internal.navigationManager.getUnmarshalledBaseURI=function(){return BINDING.js_string_to_mono_string(n())},window.Blazor._internal.navigationManager.getUnmarshalledLocationHref=function(){return BINDING.js_string_to_mono_string(f())},window.Blazor._internal.navigationManager.listenForNavigationEvents((function(e,t){return r(k,void 0,void 0,(function(){return o(this,(function(n){switch(n.label){case 0:return[4,a.DotNet.invokeMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t)];case 1:return n.sent(),[2]}}))}))})),g=null==e?void 0:e.environment,E=m.BootConfigResult.initAsync(g),_=y.discoverComponents(document,"webassembly"),I=new v.WebAssemblyComponentAttacher(_),window.Blazor._internal.registeredComponents={getRegisteredComponentsCount:function(){return I.getCount()},getId:function(e){return I.getId(e)},getAssembly:function(e){return BINDING.js_string_to_mono_string(I.getAssembly(e))},getTypeName:function(e){return BINDING.js_string_to_mono_string(I.getTypeName(e))},getParameterDefinitions:function(e){return BINDING.js_string_to_mono_string(I.getParameterDefinitions(e)||"")},getParameterValues:function(e){return BINDING.js_string_to_mono_string(I.getParameterValues(e)||"")}},window.Blazor._internal.attachRootComponentToElement=function(e,t,n){var r=I.resolveRegisteredElement(e);r?c.attachRootComponentToLogicalElement(n,r,t):c.attachRootComponentToElement(e,t,n)},[4,E];case 1:return C=F.sent(),[4,Promise.all([p.WebAssemblyResourceLoader.initAsync(C.bootConfig,e||{}),h.WebAssemblyConfigLoader.initAsync(C)])];case 2:N=i.apply(void 0,[F.sent(),1]),A=N[0],F.label=3;case 3:return F.trys.push([3,5,,6]),[4,t.start(A)];case 4:return F.sent(),[3,6];case 5:throw S=F.sent(),new Error("Failed to start platform. Reason: "+S);case 6:return t.callEntryPoint(A.bootConfig.entryAssembly),[2]}}))}))}function w(e,t,n,r){var o=u.monoPlatform.readStringField(e,0),i=u.monoPlatform.readInt32Field(e,4),s=u.monoPlatform.readStringField(e,8),c=u.monoPlatform.readUint64Field(e,20);if(null!==s){var l=u.monoPlatform.readUint64Field(e,12);if(0!==l)return a.DotNet.jsCallDispatcher.beginInvokeJSFromDotNet(l,o,s,i,c),0;var f=a.DotNet.jsCallDispatcher.invokeJSFromDotNet(o,s,i,c);return null===f?0:BINDING.js_string_to_mono_string(f)}var d=a.DotNet.jsCallDispatcher.findJSFunction(o,c).call(null,t,n,r);switch(i){case a.DotNet.JSCallResultType.Default:return d;case a.DotNet.JSCallResultType.JSObjectReference:return a.DotNet.createJSObjectReference(d).__jsObjectId;default:throw new Error("Invalid JS call result type '"+i+"'.")}}window.Blazor.start=g,f.shouldAutoStart()&&g().catch((function(e){"undefined"!=typeof Module&&Module.printErr?Module.printErr(e):console.error(e)}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(17),o=function(){function e(e){this.batchAddress=e,this.arrayRangeReader=i,this.arrayBuilderSegmentReader=a,this.diffReader=s,this.editReader=u,this.frameReader=c}return e.prototype.updatedComponents=function(){return r.platform.readStructField(this.batchAddress,0)},e.prototype.referenceFrames=function(){return r.platform.readStructField(this.batchAddress,i.structLength)},e.prototype.disposedComponentIds=function(){return r.platform.readStructField(this.batchAddress,2*i.structLength)},e.prototype.disposedEventHandlerIds=function(){return r.platform.readStructField(this.batchAddress,3*i.structLength)},e.prototype.updatedComponentsEntry=function(e,t){return l(e,t,s.structLength)},e.prototype.referenceFramesEntry=function(e,t){return l(e,t,c.structLength)},e.prototype.disposedComponentIdsEntry=function(e,t){var n=l(e,t,4);return r.platform.readInt32Field(n)},e.prototype.disposedEventHandlerIdsEntry=function(e,t){var n=l(e,t,8);return r.platform.readUint64Field(n)},e}();t.SharedMemoryRenderBatch=o;var i={structLength:8,values:function(e){return r.platform.readObjectField(e,0)},count:function(e){return r.platform.readInt32Field(e,4)}},a={structLength:12,values:function(e){var t=r.platform.readObjectField(e,0),n=r.platform.getObjectFieldsBaseAddress(t);return r.platform.readObjectField(n,0)},offset:function(e){return r.platform.readInt32Field(e,4)},count:function(e){return r.platform.readInt32Field(e,8)}},s={structLength:4+a.structLength,componentId:function(e){return r.platform.readInt32Field(e,0)},edits:function(e){return r.platform.readStructField(e,4)},editsEntry:function(e,t){return l(e,t,u.structLength)}},u={structLength:20,editType:function(e){return r.platform.readInt32Field(e,0)},siblingIndex:function(e){return r.platform.readInt32Field(e,4)},newTreeIndex:function(e){return r.platform.readInt32Field(e,8)},moveToSiblingIndex:function(e){return r.platform.readInt32Field(e,8)},removedAttributeName:function(e){return r.platform.readStringField(e,16)}},c={structLength:36,frameType:function(e){return r.platform.readInt16Field(e,4)},subtreeLength:function(e){return r.platform.readInt32Field(e,8)},elementReferenceCaptureId:function(e){return r.platform.readStringField(e,16)},componentId:function(e){return r.platform.readInt32Field(e,12)},elementName:function(e){return r.platform.readStringField(e,16)},textContent:function(e){return r.platform.readStringField(e,16)},markupContent:function(e){return r.platform.readStringField(e,16)},attributeName:function(e){return r.platform.readStringField(e,16)},attributeValue:function(e){return r.platform.readStringField(e,24,!0)},attributeEventHandlerId:function(e){return r.platform.readUint64Field(e,8)}};function l(e,t,n){return r.platform.getArrayEntryPtr(e,t,n)}},function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1] void; const appBinDirName = 'appBinDir'; -const icuDataResourceName = 'icudt.dat'; const uint64HighOrderShift = Math.pow(2, 32); const maxSafeNumberHighPart = Math.pow(2, 21) - 1; // The high-order int32 from Number.MAX_SAFE_INTEGER @@ -138,13 +138,13 @@ export const monoPlatform: Platform = { return ((baseAddress as any as number) + (fieldOffset || 0)) as any as T; }, - beginHeapLock: function() { + beginHeapLock: function () { assertHeapIsNotLocked(); currentHeapLock = new MonoHeapLock(); return currentHeapLock; }, - invokeWhenHeapUnlocked: function(callback) { + invokeWhenHeapUnlocked: function (callback) { // This is somewhat like a sync context. If we're not locked, just pass through the call directly. if (!currentHeapLock) { callback(); @@ -183,7 +183,7 @@ function addScriptTagsToDocument(resourceLoader: WebAssemblyResourceLoader) { const resourceType: WebAssemblyBootResourceType = 'dotnetjs'; const customSrc = resourceLoader.startOptions.loadBootResource( resourceType, dotnetJsResourceName, scriptElem.src, dotnetJsContentHash); - if (typeof(customSrc) === 'string') { + if (typeof (customSrc) === 'string') { scriptElem.src = customSrc; } else if (customSrc) { // Since we must load this via a + + + + diff --git a/src/Components/test/testassets/TestServer/ChatHub.cs b/src/Components/test/testassets/TestServer/ChatHub.cs new file mode 100644 index 000000000000..770f2dcaa9f4 --- /dev/null +++ b/src/Components/test/testassets/TestServer/ChatHub.cs @@ -0,0 +1,16 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Microsoft.AspNetCore.SignalR; + +namespace TestServer +{ + public class ChatHub : Hub + { + public async Task SendMessage(string user, string message) + { + await Clients.All.SendAsync("ReceiveMessage", user, message); + } + } +} diff --git a/src/Components/test/testassets/TestServer/CorsStartup.cs b/src/Components/test/testassets/TestServer/CorsStartup.cs index 867403711761..7459d9fb8698 100644 --- a/src/Components/test/testassets/TestServer/CorsStartup.cs +++ b/src/Components/test/testassets/TestServer/CorsStartup.cs @@ -18,6 +18,7 @@ public CorsStartup(IConfiguration configuration) // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { + services.AddSignalR(); services.AddMvc(); services.AddCors(options => { @@ -50,10 +51,11 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) app.UseRouting(); - app.UseCors(); + app.UseCors("AllowAll"); app.UseEndpoints(endpoints => { + endpoints.MapHub("/chathub"); endpoints.MapControllers(); endpoints.MapFallbackToFile("index.html"); }); diff --git a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/AuthenticatedEncryptorFactory.cs b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/AuthenticatedEncryptorFactory.cs index f9be1e1994c3..698ab5e5242e 100644 --- a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/AuthenticatedEncryptorFactory.cs +++ b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/AuthenticatedEncryptorFactory.cs @@ -1,7 +1,9 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics; +using System.Runtime.InteropServices; using System.Security.Cryptography; using Microsoft.AspNetCore.Cryptography; using Microsoft.AspNetCore.Cryptography.Cng; @@ -52,6 +54,8 @@ internal IAuthenticatedEncryptor CreateAuthenticatedEncryptorInstance( throw new PlatformNotSupportedException(Resources.Platform_WindowsRequiredForGcm); } + Debug.Assert(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); + var configuration = new CngGcmAuthenticatedEncryptorConfiguration() { EncryptionAlgorithm = GetBCryptAlgorithmNameFromEncryptionAlgorithm(authenticatedConfiguration.EncryptionAlgorithm), @@ -64,6 +68,7 @@ internal IAuthenticatedEncryptor CreateAuthenticatedEncryptorInstance( { if (OSVersionUtil.IsWindows()) { + Debug.Assert(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); // CNG preferred over managed implementations if running on Windows var configuration = new CngCbcAuthenticatedEncryptorConfiguration() { diff --git a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/CngCbcAuthenticatedEncryptorFactory.cs b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/CngCbcAuthenticatedEncryptorFactory.cs index 1ccc76d50183..4800ec574ec6 100644 --- a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/CngCbcAuthenticatedEncryptorFactory.cs +++ b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/CngCbcAuthenticatedEncryptorFactory.cs @@ -1,7 +1,10 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Runtime.Versioning; using Microsoft.AspNetCore.Cryptography; using Microsoft.AspNetCore.Cryptography.Cng; using Microsoft.AspNetCore.Cryptography.SafeHandles; @@ -32,9 +35,11 @@ public IAuthenticatedEncryptor CreateEncryptorInstance(IKey key) return null; } + Debug.Assert(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); return CreateAuthenticatedEncryptorInstance(descriptor.MasterKey, descriptor.Configuration); } + [SupportedOSPlatform("windows")] internal CbcAuthenticatedEncryptor CreateAuthenticatedEncryptorInstance( ISecret secret, CngCbcAuthenticatedEncryptorConfiguration configuration) @@ -51,6 +56,7 @@ internal CbcAuthenticatedEncryptor CreateAuthenticatedEncryptorInstance( hmacAlgorithmHandle: GetHmacAlgorithmHandle(configuration)); } + [SupportedOSPlatform("windows")] private BCryptAlgorithmHandle GetHmacAlgorithmHandle(CngCbcAuthenticatedEncryptorConfiguration configuration) { // basic argument checking @@ -84,6 +90,7 @@ private BCryptAlgorithmHandle GetHmacAlgorithmHandle(CngCbcAuthenticatedEncrypto return algorithmHandle; } + [SupportedOSPlatform("windows")] private BCryptAlgorithmHandle GetSymmetricBlockCipherAlgorithmHandle(CngCbcAuthenticatedEncryptorConfiguration configuration) { // basic argument checking diff --git a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/CngGcmAuthenticatedEncryptorFactory.cs b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/CngGcmAuthenticatedEncryptorFactory.cs index 947ab4b56c61..e949ce9c4191 100644 --- a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/CngGcmAuthenticatedEncryptorFactory.cs +++ b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/CngGcmAuthenticatedEncryptorFactory.cs @@ -2,6 +2,9 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Runtime.Versioning; using Microsoft.AspNetCore.Cryptography; using Microsoft.AspNetCore.Cryptography.Cng; using Microsoft.AspNetCore.Cryptography.SafeHandles; @@ -32,9 +35,12 @@ public IAuthenticatedEncryptor CreateEncryptorInstance(IKey key) return null; } + Debug.Assert(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); + return CreateAuthenticatedEncryptorInstance(descriptor.MasterKey, descriptor.Configuration); } + [SupportedOSPlatform("windows")] internal GcmAuthenticatedEncryptor CreateAuthenticatedEncryptorInstance( ISecret secret, CngGcmAuthenticatedEncryptorConfiguration configuration) @@ -50,6 +56,7 @@ internal GcmAuthenticatedEncryptor CreateAuthenticatedEncryptorInstance( symmetricAlgorithmKeySizeInBytes: (uint)(configuration.EncryptionAlgorithmKeySize / 8)); } + [SupportedOSPlatform("windows")] private BCryptAlgorithmHandle GetSymmetricBlockCipherAlgorithmHandle(CngGcmAuthenticatedEncryptorConfiguration configuration) { // basic argument checking diff --git a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorConfiguration.cs b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorConfiguration.cs index 1c23957db22b..d0622a4f1a31 100644 --- a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorConfiguration.cs +++ b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorConfiguration.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System.Runtime.Versioning; using Microsoft.AspNetCore.Cryptography; using Microsoft.Extensions.Logging.Abstractions; @@ -10,6 +11,7 @@ namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.Configurat /// Represents a configured authenticated encryption mechanism which uses /// Windows CNG algorithms in CBC encryption + HMAC authentication modes. /// + [SupportedOSPlatform("windows")] public sealed class CngCbcAuthenticatedEncryptorConfiguration : AlgorithmConfiguration, IInternalAlgorithmConfiguration { /// diff --git a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorDescriptor.cs b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorDescriptor.cs index 0003f948aeac..21476883662b 100644 --- a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorDescriptor.cs +++ b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorDescriptor.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Runtime.Versioning; using System.Xml.Linq; namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel @@ -10,6 +11,7 @@ namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.Configurat /// A descriptor which can create an authenticated encryption system based upon the /// configuration provided by an object. /// + [SupportedOSPlatform("windows")] public sealed class CngCbcAuthenticatedEncryptorDescriptor : IAuthenticatedEncryptorDescriptor { public CngCbcAuthenticatedEncryptorDescriptor(CngCbcAuthenticatedEncryptorConfiguration configuration, ISecret masterKey) diff --git a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorDescriptorDeserializer.cs b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorDescriptorDeserializer.cs index 534604839aaa..ae428e0ce255 100644 --- a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorDescriptorDeserializer.cs +++ b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngCbcAuthenticatedEncryptorDescriptorDeserializer.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Runtime.Versioning; using System.Xml.Linq; namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel @@ -10,6 +11,7 @@ namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.Configurat /// A class that can deserialize an that represents the serialized version /// of an . /// + [SupportedOSPlatform("windows")] public sealed class CngCbcAuthenticatedEncryptorDescriptorDeserializer : IAuthenticatedEncryptorDescriptorDeserializer { /// diff --git a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorConfiguration.cs b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorConfiguration.cs index d9c1f8471866..fa39bcc26028 100644 --- a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorConfiguration.cs +++ b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorConfiguration.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System.Runtime.Versioning; using Microsoft.AspNetCore.Cryptography; using Microsoft.Extensions.Logging.Abstractions; @@ -10,6 +11,7 @@ namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.Configurat /// Represents a configured authenticated encryption mechanism which uses /// Windows CNG algorithms in GCM encryption + authentication modes. /// + [SupportedOSPlatform("windows")] public sealed class CngGcmAuthenticatedEncryptorConfiguration : AlgorithmConfiguration, IInternalAlgorithmConfiguration { /// diff --git a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorDescriptor.cs b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorDescriptor.cs index 28c0103a955b..a2184c0e62cb 100644 --- a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorDescriptor.cs +++ b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorDescriptor.cs @@ -2,8 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Runtime.Versioning; using System.Xml.Linq; -using Microsoft.Extensions.Logging; namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel { @@ -11,6 +11,7 @@ namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.Configurat /// A descriptor which can create an authenticated encryption system based upon the /// configuration provided by an object. /// + [SupportedOSPlatform("windows")] public sealed class CngGcmAuthenticatedEncryptorDescriptor : IAuthenticatedEncryptorDescriptor { public CngGcmAuthenticatedEncryptorDescriptor(CngGcmAuthenticatedEncryptorConfiguration configuration, ISecret masterKey) diff --git a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorDescriptorDeserializer.cs b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorDescriptorDeserializer.cs index 0981fb55afc4..b46c61e45940 100644 --- a/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorDescriptorDeserializer.cs +++ b/src/DataProtection/DataProtection/src/AuthenticatedEncryption/ConfigurationModel/CngGcmAuthenticatedEncryptorDescriptorDeserializer.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Runtime.Versioning; using System.Xml.Linq; namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel @@ -10,6 +11,7 @@ namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.Configurat /// A class that can deserialize an that represents the serialized version /// of an . /// + [SupportedOSPlatform("windows")] public sealed class CngGcmAuthenticatedEncryptorDescriptorDeserializer : IAuthenticatedEncryptorDescriptorDeserializer { diff --git a/src/DataProtection/DataProtection/src/DataProtectionBuilderExtensions.cs b/src/DataProtection/DataProtection/src/DataProtectionBuilderExtensions.cs index 7789ca074f04..bc10fc166e7e 100644 --- a/src/DataProtection/DataProtection/src/DataProtectionBuilderExtensions.cs +++ b/src/DataProtection/DataProtection/src/DataProtectionBuilderExtensions.cs @@ -4,6 +4,7 @@ using System; using System.ComponentModel; using System.IO; +using System.Runtime.Versioning; using System.Security.Cryptography.X509Certificates; using Microsoft.AspNetCore.Cryptography; using Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption; @@ -223,6 +224,7 @@ public static IDataProtectionBuilder PersistKeysToFileSystem(this IDataProtectio /// The . /// The location in the registry where keys should be stored. /// A reference to the after this operation has completed. + [SupportedOSPlatform("windows")] public static IDataProtectionBuilder PersistKeysToRegistry(this IDataProtectionBuilder builder, RegistryKey registryKey) { if (builder == null) @@ -356,6 +358,7 @@ public static IDataProtectionBuilder UnprotectKeysWithAnyCertificate(this IDataP /// /// This API is only supported on Windows platforms. /// + [SupportedOSPlatform("windows")] public static IDataProtectionBuilder ProtectKeysWithDpapi(this IDataProtectionBuilder builder) { if (builder == null) @@ -378,6 +381,7 @@ public static IDataProtectionBuilder ProtectKeysWithDpapi(this IDataProtectionBu /// /// This API is only supported on Windows platforms. /// + [SupportedOSPlatform("windows")] public static IDataProtectionBuilder ProtectKeysWithDpapi(this IDataProtectionBuilder builder, bool protectToLocalMachine) { if (builder == null) @@ -408,6 +412,7 @@ public static IDataProtectionBuilder ProtectKeysWithDpapi(this IDataProtectionBu /// See https://msdn.microsoft.com/en-us/library/windows/desktop/hh706794(v=vs.85).aspx /// for more information on DPAPI-NG. This API is only supported on Windows 8 / Windows Server 2012 and higher. /// + [SupportedOSPlatform("windows")] public static IDataProtectionBuilder ProtectKeysWithDpapiNG(this IDataProtectionBuilder builder) { if (builder == null) @@ -435,6 +440,7 @@ public static IDataProtectionBuilder ProtectKeysWithDpapiNG(this IDataProtection /// and arguments. /// This API is only supported on Windows 8 / Windows Server 2012 and higher. /// + [SupportedOSPlatform("windows")] public static IDataProtectionBuilder ProtectKeysWithDpapiNG(this IDataProtectionBuilder builder, string protectionDescriptorRule, DpapiNGProtectionDescriptorFlags flags) { if (builder == null) @@ -523,6 +529,7 @@ public static IDataProtectionBuilder UseCryptographicAlgorithms(this IDataProtec /// This API is only available on Windows. /// [EditorBrowsable(EditorBrowsableState.Advanced)] + [SupportedOSPlatform("windows")] public static IDataProtectionBuilder UseCustomCryptographicAlgorithms(this IDataProtectionBuilder builder, CngCbcAuthenticatedEncryptorConfiguration configuration) { if (builder == null) @@ -551,6 +558,7 @@ public static IDataProtectionBuilder UseCustomCryptographicAlgorithms(this IData /// This API is only available on Windows. /// [EditorBrowsable(EditorBrowsableState.Advanced)] + [SupportedOSPlatform("windows")] public static IDataProtectionBuilder UseCustomCryptographicAlgorithms(this IDataProtectionBuilder builder, CngGcmAuthenticatedEncryptorConfiguration configuration) { if (builder == null) diff --git a/src/DataProtection/DataProtection/src/EphemeralDataProtectionProvider.cs b/src/DataProtection/DataProtection/src/EphemeralDataProtectionProvider.cs index 587b0ebfd456..70860e3b065d 100644 --- a/src/DataProtection/DataProtection/src/EphemeralDataProtectionProvider.cs +++ b/src/DataProtection/DataProtection/src/EphemeralDataProtectionProvider.cs @@ -2,6 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics; +using System.Runtime.InteropServices; using Microsoft.AspNetCore.Cryptography.Cng; using Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption; using Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel; @@ -102,6 +104,8 @@ private static IAuthenticatedEncryptor GetDefaultEncryptor(ILoggerFactory logger var configuration = new T(); if (configuration is CngGcmAuthenticatedEncryptorConfiguration) { + Debug.Assert(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); + var descriptor = (CngGcmAuthenticatedEncryptorDescriptor)new T().CreateNewDescriptor(); return new CngGcmAuthenticatedEncryptorFactory(loggerFactory) .CreateAuthenticatedEncryptorInstance( diff --git a/src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs b/src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs index 736005ecf7a1..094832e43c0e 100644 --- a/src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs +++ b/src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs @@ -7,6 +7,7 @@ using System.Globalization; using System.Linq; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; using System.Threading; using System.Xml; using System.Xml.Linq; @@ -500,6 +501,8 @@ internal KeyValuePair GetFallbackKeyRepositoryEnc { if (OSVersionUtil.IsWindows()) { + Debug.Assert(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); // Hint for the platform compatibility analyzer. + // If the user profile is available, we can protect using DPAPI. // Probe to see if protecting to local user is available, and use it as the default if so. encryptor = new DpapiXmlEncryptor( @@ -523,10 +526,14 @@ internal KeyValuePair GetFallbackKeyRepositoryEnc RegistryKey regKeyStorageKey = null; if (OSVersionUtil.IsWindows()) { + Debug.Assert(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); // Hint for the platform compatibility analyzer. regKeyStorageKey = RegistryXmlRepository.DefaultRegistryKey; } if (regKeyStorageKey != null) { + Debug.Assert(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); // Hint for the platform compatibility analyzer. + regKeyStorageKey = RegistryXmlRepository.DefaultRegistryKey; + // If the user profile isn't available, we can protect using DPAPI (to machine). encryptor = new DpapiXmlEncryptor(protectToLocalMachine: true, loggerFactory: _loggerFactory); repository = new RegistryXmlRepository(regKeyStorageKey, _loggerFactory); diff --git a/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj b/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj index 8f16e3348034..ad035d5c67e4 100644 --- a/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj +++ b/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj @@ -1,4 +1,4 @@ - + ASP.NET Core logic to protect and unprotect data, similar to DPAPI. @@ -14,6 +14,8 @@ + diff --git a/src/DataProtection/DataProtection/src/RegistryPolicyResolver.cs b/src/DataProtection/DataProtection/src/RegistryPolicyResolver.cs index d3357fa34d81..b1ec26ff1298 100644 --- a/src/DataProtection/DataProtection/src/RegistryPolicyResolver.cs +++ b/src/DataProtection/DataProtection/src/RegistryPolicyResolver.cs @@ -6,6 +6,7 @@ using System.Globalization; using System.Linq; using System.Reflection; +using System.Runtime.Versioning; using Microsoft.AspNetCore.Cryptography; using Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel; using Microsoft.AspNetCore.DataProtection.Internal; @@ -17,6 +18,7 @@ namespace Microsoft.AspNetCore.DataProtection /// /// A type which allows reading policy from the system registry. /// + [SupportedOSPlatform("windows")] internal sealed class RegistryPolicyResolver: IRegistryPolicyResolver { private readonly Func _getPolicyRegKey; diff --git a/src/DataProtection/DataProtection/src/Repositories/RegistryXmlRepository.cs b/src/DataProtection/DataProtection/src/Repositories/RegistryXmlRepository.cs index 7692d1ccb54b..28a7cbec2332 100644 --- a/src/DataProtection/DataProtection/src/Repositories/RegistryXmlRepository.cs +++ b/src/DataProtection/DataProtection/src/Repositories/RegistryXmlRepository.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Runtime.Versioning; using System.Security.Principal; using System.Xml.Linq; using Microsoft.Extensions.Logging; @@ -15,6 +16,7 @@ namespace Microsoft.AspNetCore.DataProtection.Repositories /// /// An XML repository backed by the Windows registry. /// + [SupportedOSPlatform("windows")] public class RegistryXmlRepository : IXmlRepository { private static readonly Lazy _defaultRegistryKeyLazy = new Lazy(GetDefaultHklmStorageKey); diff --git a/src/DataProtection/DataProtection/src/XmlEncryption/DpapiNGXmlEncryptor.cs b/src/DataProtection/DataProtection/src/XmlEncryption/DpapiNGXmlEncryptor.cs index f5162496bb17..edd3afd49312 100644 --- a/src/DataProtection/DataProtection/src/XmlEncryption/DpapiNGXmlEncryptor.cs +++ b/src/DataProtection/DataProtection/src/XmlEncryption/DpapiNGXmlEncryptor.cs @@ -3,6 +3,7 @@ using System; using System.Globalization; +using System.Runtime.Versioning; using System.Security.Principal; using System.Xml.Linq; using Microsoft.AspNetCore.Cryptography; @@ -18,6 +19,7 @@ namespace Microsoft.AspNetCore.DataProtection.XmlEncryption /// /// This API is only supported on Windows 8 / Windows Server 2012 and higher. /// + [SupportedOSPlatform("windows")] public sealed class DpapiNGXmlEncryptor : IXmlEncryptor { private readonly ILogger _logger; diff --git a/src/DataProtection/DataProtection/src/XmlEncryption/DpapiXmlEncryptor.cs b/src/DataProtection/DataProtection/src/XmlEncryption/DpapiXmlEncryptor.cs index d7fa2d7b1bee..cd842f1acd23 100644 --- a/src/DataProtection/DataProtection/src/XmlEncryption/DpapiXmlEncryptor.cs +++ b/src/DataProtection/DataProtection/src/XmlEncryption/DpapiXmlEncryptor.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Runtime.Versioning; using System.Security.Principal; using System.Xml.Linq; using Microsoft.AspNetCore.Cryptography; @@ -16,6 +17,7 @@ namespace Microsoft.AspNetCore.DataProtection.XmlEncryption /// /// This API is only supported on Windows platforms. /// + [SupportedOSPlatform("windows")] public sealed class DpapiXmlEncryptor : IXmlEncryptor { private readonly ILogger _logger; diff --git a/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj b/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj index a3f281107f07..26b11b060369 100644 --- a/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj +++ b/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj @@ -52,6 +52,9 @@ This package is an internal implementation of the .NET Core SDK and is not meant $(PkgMicrosoft_Extensions_Internal_Transport)\ref\$(TargetFramework)\ + + $(PlatformManifestOutputPath) + $(RepoRoot)eng\PlatformManifest.txt @@ -144,7 +147,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant - + diff --git a/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj b/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj index 096f7df9da01..950bf61449ea 100644 --- a/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +++ b/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj @@ -281,21 +281,22 @@ This package is an internal implementation of the .NET Core SDK and is not meant - - + + - + - + - - %(BuiltProjectOutputGroupOutput.Identity) + + %(BuildOutputFiles.Identity) - - + + + diff --git a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj index 2d55f9cd5025..a225c92060dc 100644 --- a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj +++ b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj @@ -5,7 +5,6 @@ Microsoft.AspNetCore true true - true true @@ -52,11 +51,13 @@ - + false true - + false true @@ -70,20 +71,6 @@ - - - - - - - - - - <_Parameter1>TargetingPackDependencies @@ -119,12 +106,12 @@ <_Parameter1>RuntimePackageVersion - <_Parameter2>@(_RuntimePackageVersionInfo->'%(PackageVersion)') + <_Parameter2>$(SharedFxVersion) <_Parameter1>TargetingPackVersion - <_Parameter2>@(_TargetingPackVersionInfo->'%(PackageVersion)') + <_Parameter2>$(TargetingPackVersion) diff --git a/src/Grpc/test/InteropTests/InteropTests.cs b/src/Grpc/test/InteropTests/InteropTests.cs index 839292ab4b52..040ccc939188 100644 --- a/src/Grpc/test/InteropTests/InteropTests.cs +++ b/src/Grpc/test/InteropTests/InteropTests.cs @@ -90,7 +90,22 @@ private async Task InteropTestCase(string name) { using (var serverProcess = new WebsiteProcess(_serverPath, _output)) { - await serverProcess.WaitForReady().TimeoutAfter(DefaultTimeout); + try + { + await serverProcess.WaitForReady().TimeoutAfter(DefaultTimeout); + } + catch (Exception ex) + { + var errorMessage = $@"Error while running server process. + +Server ready: {serverProcess.IsReady} + +Server process output: +====================================== +{serverProcess.GetOutput()} +======================================"; + throw new InvalidOperationException(errorMessage, ex); + } using (var clientProcess = new ClientProcess(_output, _clientPath, serverProcess.ServerPort, name)) { diff --git a/src/Grpc/test/InteropTests/InteropTests.csproj b/src/Grpc/test/InteropTests/InteropTests.csproj index bcbd1fc4b6ab..335944a448d2 100644 --- a/src/Grpc/test/InteropTests/InteropTests.csproj +++ b/src/Grpc/test/InteropTests/InteropTests.csproj @@ -3,6 +3,8 @@ true $(DefaultNetCoreTargetFramework) + true + true diff --git a/src/Grpc/test/testassets/InteropClient/InteropClient.cs b/src/Grpc/test/testassets/InteropClient/InteropClient.cs index 6590d8ae6930..2b5cb6519623 100644 --- a/src/Grpc/test/testassets/InteropClient/InteropClient.cs +++ b/src/Grpc/test/testassets/InteropClient/InteropClient.cs @@ -168,7 +168,7 @@ private async Task HttpClientCreateChannel() httpClientHandler.ClientCertificates.Add(cert); } - var httpClient = new HttpClient(new VersionPolicyHandler(httpClientHandler)); + var httpClient = new HttpClient(httpClientHandler); var channel = GrpcChannel.ForAddress($"{scheme}://{options.ServerHost}:{options.ServerPort}", new GrpcChannelOptions { @@ -180,21 +180,6 @@ private async Task HttpClientCreateChannel() return new GrpcChannelWrapper(channel); } - // TODO(JamesNK): This type can be removed in the future when Grpc.Net.Client sets VersionPolicy automatically. - // https://github.com/grpc/grpc-dotnet/pull/987 - private class VersionPolicyHandler : DelegatingHandler - { - public VersionPolicyHandler(HttpMessageHandler innerHandler) : base(innerHandler) - { - } - - protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) - { - request.VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher; - return base.SendAsync(request, cancellationToken); - } - } - private async Task CreateCredentialsAsync(bool? useTestCaOverride = null) { var credentials = ChannelCredentials.Insecure; @@ -875,7 +860,7 @@ private static string GetEmailFromServiceAccountFile() string keyFile = Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS")!; Assert.IsNotNull(keyFile); var jobject = JObject.Parse(File.ReadAllText(keyFile)); - string email = jobject.GetValue("client_email").Value(); + string email = jobject.GetValue("client_email")!.Value()!; Assert.IsTrue(email.Length > 0); // spec requires nonempty client email. return email; } diff --git a/src/Grpc/test/testassets/InteropWebsite/Directory.Build.targets b/src/Grpc/test/testassets/InteropWebsite/Directory.Build.targets index 2f889b40eae9..9feb89c407f7 100644 --- a/src/Grpc/test/testassets/InteropWebsite/Directory.Build.targets +++ b/src/Grpc/test/testassets/InteropWebsite/Directory.Build.targets @@ -4,8 +4,6 @@ $(RestoreAdditionalProjectSources);$(ArtifactsShippingPackagesDir) - $(TargetingPackVersion) - $(AspNetCoreBaselineVersion) @@ -18,7 +16,7 @@ RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**" DefaultRuntimeFrameworkVersion="$(SharedFxVersion)" LatestRuntimeFrameworkVersion="$(SharedFxVersion)" - TargetingPackVersion="$(MicrosoftAspNetCoreAppRefPackageVersion)" + TargetingPackVersion="$(TargetingPackVersion)" RuntimePackRuntimeIdentifiers="$(SupportedRuntimeIdentifiers)" /> diff --git a/src/Grpc/test/testassets/InteropWebsite/Startup.cs b/src/Grpc/test/testassets/InteropWebsite/Startup.cs index 6f335d6c0590..b5e8822ae1b5 100644 --- a/src/Grpc/test/testassets/InteropWebsite/Startup.cs +++ b/src/Grpc/test/testassets/InteropWebsite/Startup.cs @@ -22,6 +22,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.Net.Http.Headers; namespace InteropTestsWebsite { @@ -44,6 +45,8 @@ public void Configure(IApplicationBuilder app, IHostApplicationLifetime applicat var runtimeVersion = typeof(object).GetTypeInfo().Assembly.GetCustomAttribute()?.InformationalVersion ?? "Unknown"; Console.WriteLine($"NetCoreAppVersion: {runtimeVersion}"); + var aspNetCoreVersion = typeof(HeaderNames).GetTypeInfo().Assembly.GetCustomAttribute()?.InformationalVersion ?? "Unknown"; + Console.WriteLine($"AspNetCoreAppVersion: {aspNetCoreVersion}"); }); app.UseRouting(); diff --git a/src/Hosting/WindowsServices/src/Properties/AssemblyInfo.cs b/src/Hosting/WindowsServices/src/Properties/AssemblyInfo.cs index 63d95d6dfbe7..6e6ee3ba7f2e 100644 --- a/src/Hosting/WindowsServices/src/Properties/AssemblyInfo.cs +++ b/src/Hosting/WindowsServices/src/Properties/AssemblyInfo.cs @@ -2,5 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Runtime.CompilerServices; +using System.Runtime.Versioning; [assembly: InternalsVisibleTo("Microsoft.AspNetCore.Hosting.WindowsServices.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] +[assembly: SupportedOSPlatform("windows")] \ No newline at end of file diff --git a/src/Http/Authentication.Abstractions/src/AuthenticationProperties.cs b/src/Http/Authentication.Abstractions/src/AuthenticationProperties.cs index 28afa3a7dec1..3195bfe0eccf 100644 --- a/src/Http/Authentication.Abstractions/src/AuthenticationProperties.cs +++ b/src/Http/Authentication.Abstractions/src/AuthenticationProperties.cs @@ -144,8 +144,7 @@ public void SetString(string key, string? value) /// Parameter type. /// Parameter key. /// Retrieved value or the default value if the property is not set. - [return: MaybeNull] - public T GetParameter(string key) + public T? GetParameter(string key) => Parameters.TryGetValue(key, out var obj) && obj is T value ? value : default; /// @@ -154,7 +153,7 @@ public T GetParameter(string key) /// Parameter type. /// Parameter key. /// Value to set. - public void SetParameter(string key, [MaybeNull] T value) + public void SetParameter(string key, T value) => Parameters[key] = value; /// diff --git a/src/Http/Headers/src/BaseHeaderParser.cs b/src/Http/Headers/src/BaseHeaderParser.cs index 4e8078787880..9400a13aef46 100644 --- a/src/Http/Headers/src/BaseHeaderParser.cs +++ b/src/Http/Headers/src/BaseHeaderParser.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.Primitives; namespace Microsoft.Net.Http.Headers @@ -13,9 +12,9 @@ protected BaseHeaderParser(bool supportsMultipleValues) { } - protected abstract int GetParsedValueLength(StringSegment value, int startIndex, [MaybeNull] out T parsedValue); + protected abstract int GetParsedValueLength(StringSegment value, int startIndex, out T? parsedValue); - public sealed override bool TryParseValue(StringSegment value, ref int index, [MaybeNull] out T parsedValue) + public sealed override bool TryParseValue(StringSegment value, ref int index, out T? parsedValue) { parsedValue = default; diff --git a/src/Http/Headers/src/CacheControlHeaderValue.cs b/src/Http/Headers/src/CacheControlHeaderValue.cs index 14a59b242200..e2e8b37c176a 100644 --- a/src/Http/Headers/src/CacheControlHeaderValue.cs +++ b/src/Http/Headers/src/CacheControlHeaderValue.cs @@ -32,7 +32,7 @@ public class CacheControlHeaderValue // Cache-Control headers, only one instance of CacheControlHeaderValue is created (if all headers contain valid // values, otherwise we may have multiple strings containing the invalid values). private static readonly HttpHeaderParser Parser - = new GenericHeaderParser(true, GetCacheControlLength!); + = new GenericHeaderParser(true, GetCacheControlLength); private static readonly Action CheckIsValidTokenAction = CheckIsValidToken; diff --git a/src/Http/Headers/src/ContentDispositionHeaderValue.cs b/src/Http/Headers/src/ContentDispositionHeaderValue.cs index 3e629d10cbf1..f7ea2047d79c 100644 --- a/src/Http/Headers/src/ContentDispositionHeaderValue.cs +++ b/src/Http/Headers/src/ContentDispositionHeaderValue.cs @@ -27,7 +27,7 @@ public class ContentDispositionHeaderValue private static readonly char[] SingleQuote = new char[] { '\'' }; private static readonly HttpHeaderParser Parser - = new GenericHeaderParser(false, GetDispositionTypeLength!); + = new GenericHeaderParser(false, GetDispositionTypeLength); // Use list instead of dictionary since we may have multiple parameters with the same name. private ObjectCollection? _parameters; diff --git a/src/Http/Headers/src/ContentRangeHeaderValue.cs b/src/Http/Headers/src/ContentRangeHeaderValue.cs index 1c9a7a55b755..1cbdb698ab16 100644 --- a/src/Http/Headers/src/ContentRangeHeaderValue.cs +++ b/src/Http/Headers/src/ContentRangeHeaderValue.cs @@ -13,7 +13,7 @@ namespace Microsoft.Net.Http.Headers public class ContentRangeHeaderValue { private static readonly HttpHeaderParser Parser - = new GenericHeaderParser(false, GetContentRangeLength!); + = new GenericHeaderParser(false, GetContentRangeLength); private StringSegment _unit; private long? _from; diff --git a/src/Http/Headers/src/EntityTagHeaderValue.cs b/src/Http/Headers/src/EntityTagHeaderValue.cs index a468eeb5dcff..1d07735c49c4 100644 --- a/src/Http/Headers/src/EntityTagHeaderValue.cs +++ b/src/Http/Headers/src/EntityTagHeaderValue.cs @@ -14,13 +14,13 @@ public class EntityTagHeaderValue // Note that the ETag header does not allow a * but we're not that strict: We allow both '*' and ETag values in a single value. // We can't guarantee that a single parsed value will be used directly in an ETag header. private static readonly HttpHeaderParser SingleValueParser - = new GenericHeaderParser(false, GetEntityTagLength!); + = new GenericHeaderParser(false, GetEntityTagLength); // Note that if multiple ETag values are allowed (e.g. 'If-Match', 'If-None-Match'), according to the RFC // the value must either be '*' or a list of ETag values. It's not allowed to have both '*' and a list of // ETag values. We're not that strict: We allow both '*' and ETag values in a list. If the server sends such // an invalid list, we want to be able to represent it using the corresponding header property. private static readonly HttpHeaderParser MultipleValueParser - = new GenericHeaderParser(true, GetEntityTagLength!); + = new GenericHeaderParser(true, GetEntityTagLength); private static EntityTagHeaderValue? AnyType; diff --git a/src/Http/Headers/src/GenericHeaderParser.cs b/src/Http/Headers/src/GenericHeaderParser.cs index 53a577744835..1d4499e0b6fc 100644 --- a/src/Http/Headers/src/GenericHeaderParser.cs +++ b/src/Http/Headers/src/GenericHeaderParser.cs @@ -2,14 +2,13 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.Primitives; namespace Microsoft.Net.Http.Headers { internal sealed class GenericHeaderParser : BaseHeaderParser { - internal delegate int GetParsedValueLengthDelegate(StringSegment value, int startIndex, [MaybeNull] out T parsedValue); + internal delegate int GetParsedValueLengthDelegate(StringSegment value, int startIndex, out T? parsedValue); private GetParsedValueLengthDelegate _getParsedValueLength; @@ -24,7 +23,7 @@ internal GenericHeaderParser(bool supportsMultipleValues, GetParsedValueLengthDe _getParsedValueLength = getParsedValueLength; } - protected override int GetParsedValueLength(StringSegment value, int startIndex, [MaybeNull] out T parsedValue) + protected override int GetParsedValueLength(StringSegment value, int startIndex, out T? parsedValue) { return _getParsedValueLength(value, startIndex, out parsedValue); } diff --git a/src/Http/Headers/src/HttpHeaderParser.cs b/src/Http/Headers/src/HttpHeaderParser.cs index addb5479f8f7..942b470680a2 100644 --- a/src/Http/Headers/src/HttpHeaderParser.cs +++ b/src/Http/Headers/src/HttpHeaderParser.cs @@ -28,10 +28,9 @@ public bool SupportsMultipleValues // pointing to the next non-whitespace character after a delimiter. E.g. if called with a start index of 0 // for string "value , second_value", then after the call completes, 'index' must point to 's', i.e. the first // non-whitespace after the separator ','. - public abstract bool TryParseValue(StringSegment value, ref int index, [MaybeNull] out T parsedValue); + public abstract bool TryParseValue(StringSegment value, ref int index, out T? parsedValue); - [return: MaybeNull] - public T ParseValue(StringSegment value, ref int index) + public T? ParseValue(StringSegment value, ref int index) { // Index may be value.Length (e.g. both 0). This may be allowed for some headers (e.g. Accept but not // allowed by others (e.g. Content-Length). The parser has to decide if this is valid or not. diff --git a/src/Http/Headers/src/MediaTypeHeaderValue.cs b/src/Http/Headers/src/MediaTypeHeaderValue.cs index 7b527f8a6847..2ba881539b6a 100644 --- a/src/Http/Headers/src/MediaTypeHeaderValue.cs +++ b/src/Http/Headers/src/MediaTypeHeaderValue.cs @@ -30,9 +30,9 @@ public class MediaTypeHeaderValue private static readonly char[] PeriodCharacterArray = new char[] { PeriodCharacter }; private static readonly HttpHeaderParser SingleValueParser - = new GenericHeaderParser(false, GetMediaTypeLength!); + = new GenericHeaderParser(false, GetMediaTypeLength); private static readonly HttpHeaderParser MultipleValueParser - = new GenericHeaderParser(true, GetMediaTypeLength!); + = new GenericHeaderParser(true, GetMediaTypeLength); // Use a collection instead of a dictionary since we may have multiple parameters with the same name. private ObjectCollection? _parameters; diff --git a/src/Http/Headers/src/NameValueHeaderValue.cs b/src/Http/Headers/src/NameValueHeaderValue.cs index 9ef6283cd9b0..462fbc11c756 100644 --- a/src/Http/Headers/src/NameValueHeaderValue.cs +++ b/src/Http/Headers/src/NameValueHeaderValue.cs @@ -17,9 +17,9 @@ namespace Microsoft.Net.Http.Headers public class NameValueHeaderValue { private static readonly HttpHeaderParser SingleValueParser - = new GenericHeaderParser(false, GetNameValueLength!); + = new GenericHeaderParser(false, GetNameValueLength); internal static readonly HttpHeaderParser MultipleValueParser - = new GenericHeaderParser(true, GetNameValueLength!); + = new GenericHeaderParser(true, GetNameValueLength); private StringSegment _name; private StringSegment _value; diff --git a/src/Http/Headers/src/RangeConditionHeaderValue.cs b/src/Http/Headers/src/RangeConditionHeaderValue.cs index ebe21f59b80c..55e9cefda973 100644 --- a/src/Http/Headers/src/RangeConditionHeaderValue.cs +++ b/src/Http/Headers/src/RangeConditionHeaderValue.cs @@ -11,7 +11,7 @@ namespace Microsoft.Net.Http.Headers public class RangeConditionHeaderValue { private static readonly HttpHeaderParser Parser - = new GenericHeaderParser(false, GetRangeConditionLength!); + = new GenericHeaderParser(false, GetRangeConditionLength); private DateTimeOffset? _lastModified; private EntityTagHeaderValue? _entityTag; diff --git a/src/Http/Headers/src/RangeHeaderValue.cs b/src/Http/Headers/src/RangeHeaderValue.cs index 8247c3ff60e6..a022c056ec37 100644 --- a/src/Http/Headers/src/RangeHeaderValue.cs +++ b/src/Http/Headers/src/RangeHeaderValue.cs @@ -13,7 +13,7 @@ namespace Microsoft.Net.Http.Headers public class RangeHeaderValue { private static readonly HttpHeaderParser Parser - = new GenericHeaderParser(false, GetRangeLength!); + = new GenericHeaderParser(false, GetRangeLength); private StringSegment _unit; private ICollection? _ranges; diff --git a/src/Http/Headers/src/SetCookieHeaderValue.cs b/src/Http/Headers/src/SetCookieHeaderValue.cs index 2360cf0daaa0..1afee5760fb5 100644 --- a/src/Http/Headers/src/SetCookieHeaderValue.cs +++ b/src/Http/Headers/src/SetCookieHeaderValue.cs @@ -33,9 +33,9 @@ public class SetCookieHeaderValue private const string ExpiresDateFormat = "r"; private static readonly HttpHeaderParser SingleValueParser - = new GenericHeaderParser(false, GetSetCookieLength!); + = new GenericHeaderParser(false, GetSetCookieLength); private static readonly HttpHeaderParser MultipleValueParser - = new GenericHeaderParser(true, GetSetCookieLength!); + = new GenericHeaderParser(true, GetSetCookieLength); private StringSegment _name; private StringSegment _value; diff --git a/src/Http/Headers/src/StringWithQualityHeaderValue.cs b/src/Http/Headers/src/StringWithQualityHeaderValue.cs index 18fe33975c16..1bb300300448 100644 --- a/src/Http/Headers/src/StringWithQualityHeaderValue.cs +++ b/src/Http/Headers/src/StringWithQualityHeaderValue.cs @@ -13,9 +13,9 @@ namespace Microsoft.Net.Http.Headers public class StringWithQualityHeaderValue { private static readonly HttpHeaderParser SingleValueParser - = new GenericHeaderParser(false, GetStringWithQualityLength!); + = new GenericHeaderParser(false, GetStringWithQualityLength); private static readonly HttpHeaderParser MultipleValueParser - = new GenericHeaderParser(true, GetStringWithQualityLength!); + = new GenericHeaderParser(true, GetStringWithQualityLength); private StringSegment _value; private double? _quality; diff --git a/src/Http/Http.Extensions/src/HttpResponseJsonExtensions.cs b/src/Http/Http.Extensions/src/HttpResponseJsonExtensions.cs index 802bb7f85d7c..b35c4f2b3214 100644 --- a/src/Http/Http.Extensions/src/HttpResponseJsonExtensions.cs +++ b/src/Http/Http.Extensions/src/HttpResponseJsonExtensions.cs @@ -28,7 +28,7 @@ public static partial class HttpResponseJsonExtensions [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task WriteAsJsonAsync( this HttpResponse response, - [AllowNull] TValue value, + TValue value, CancellationToken cancellationToken = default) { return response.WriteAsJsonAsync(value, options: null, contentType: null, cancellationToken); @@ -47,7 +47,7 @@ public static Task WriteAsJsonAsync( [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task WriteAsJsonAsync( this HttpResponse response, - [AllowNull] TValue value, + TValue value, JsonSerializerOptions? options, CancellationToken cancellationToken = default) { @@ -68,7 +68,7 @@ public static Task WriteAsJsonAsync( [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task WriteAsJsonAsync( this HttpResponse response, - [AllowNull] TValue value, + TValue value, JsonSerializerOptions? options, string? contentType, CancellationToken cancellationToken = default) @@ -81,7 +81,7 @@ public static Task WriteAsJsonAsync( options ??= ResolveSerializerOptions(response.HttpContext); response.ContentType = contentType ?? JsonConstants.JsonContentTypeWithCharset; - return JsonSerializer.SerializeAsync(response.Body, value!, options, cancellationToken); + return JsonSerializer.SerializeAsync(response.Body, value, options, cancellationToken); } /// diff --git a/src/Http/Http.Extensions/test/HeaderDictionaryTypeExtensionsTest.cs b/src/Http/Http.Extensions/test/HeaderDictionaryTypeExtensionsTest.cs index 06c0d967e6ab..2ca3c36e277e 100644 --- a/src/Http/Http.Extensions/test/HeaderDictionaryTypeExtensionsTest.cs +++ b/src/Http/Http.Extensions/test/HeaderDictionaryTypeExtensionsTest.cs @@ -162,7 +162,7 @@ public class TestHeaderValue { public static bool TryParse(string value, out TestHeaderValue result) { - if (string.Equals("valid", value)) + if (string.Equals("valid", value, StringComparison.Ordinal)) { result = new TestHeaderValue(); return true; @@ -176,7 +176,7 @@ public static bool TryParseList(IList values, out IList var results = new List(); foreach (var value in values) { - if (string.Equals("valid", value)) + if (string.Equals("valid", value, StringComparison.Ordinal)) { results.Add(new TestHeaderValue()); } diff --git a/src/Http/Http.Extensions/test/HttpResponseJsonExtensionsTests.cs b/src/Http/Http.Extensions/test/HttpResponseJsonExtensionsTests.cs index 44def401e8e9..d0118166b084 100644 --- a/src/Http/Http.Extensions/test/HttpResponseJsonExtensionsTests.cs +++ b/src/Http/Http.Extensions/test/HttpResponseJsonExtensionsTests.cs @@ -44,7 +44,7 @@ public async Task WriteAsJsonAsyncGeneric_NullValue_JsonResponse() context.Response.Body = body; // Act - await context.Response.WriteAsJsonAsync(value: null); + await context.Response.WriteAsJsonAsync(value: null); // Assert Assert.Equal(JsonConstants.JsonContentTypeWithCharset, context.Response.ContentType); diff --git a/src/Http/Http.Features/src/FeatureCollection.cs b/src/Http/Http.Features/src/FeatureCollection.cs index b5f70b7c4e8f..d46a1e38e5bd 100644 --- a/src/Http/Http.Features/src/FeatureCollection.cs +++ b/src/Http/Http.Features/src/FeatureCollection.cs @@ -4,7 +4,6 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; using System.Linq; namespace Microsoft.AspNetCore.Http.Features @@ -94,10 +93,9 @@ public IEnumerator> GetEnumerator() } } - [return: MaybeNull] - public TFeature Get() + public TFeature? Get() { - return (TFeature)this[typeof(TFeature)]; + return (TFeature?)this[typeof(TFeature)]; } public void Set(TFeature instance) diff --git a/src/Http/Http.Features/src/FeatureReference.cs b/src/Http/Http.Features/src/FeatureReference.cs index 516fb70e909e..f93e92885a7b 100644 --- a/src/Http/Http.Features/src/FeatureReference.cs +++ b/src/Http/Http.Features/src/FeatureReference.cs @@ -1,31 +1,28 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.Diagnostics.CodeAnalysis; - namespace Microsoft.AspNetCore.Http.Features { public struct FeatureReference { - private T _feature; + private T? _feature; private int _revision; - private FeatureReference(T feature, int revision) + private FeatureReference(T? feature, int revision) { _feature = feature; _revision = revision; } - public static readonly FeatureReference Default = new FeatureReference(default(T)!, -1); + public static readonly FeatureReference Default = new FeatureReference(default(T), -1); - [return: MaybeNull] - public T Fetch(IFeatureCollection features) + public T? Fetch(IFeatureCollection features) { if (_revision == features.Revision) { return _feature; } - _feature = (T)features[typeof(T)]!; + _feature = (T)features[typeof(T)]; _revision = features.Revision; return _feature; } diff --git a/src/Http/Http.Features/src/FeatureReferences.cs b/src/Http/Http.Features/src/FeatureReferences.cs index 84bf46974c39..b263b3d160a2 100644 --- a/src/Http/Http.Features/src/FeatureReferences.cs +++ b/src/Http/Http.Features/src/FeatureReferences.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; namespace Microsoft.AspNetCore.Http.Features @@ -37,8 +36,7 @@ public void Initalize(IFeatureCollection collection, int revision) // be able to pass ref values that "dot through" the TCache struct memory, // if it was a Property then that getter would return a copy of the memory // preventing the use of "ref" - [AllowNull, MaybeNull] - public TCache Cache; + public TCache? Cache; // Careful with modifications to the Fetch method; it is carefully constructed for inlining // See: https://github.com/aspnet/HttpAbstractions/pull/704 @@ -61,10 +59,10 @@ public void Initalize(IFeatureCollection collection, int revision) // // Generally Fetch is called at a ratio > x4 of UpdateCached so this is a large gain [MethodImpl(MethodImplOptions.AggressiveInlining)] - public TFeature Fetch( - [AllowNull, MaybeNull] ref TFeature cached, + public TFeature? Fetch( + ref TFeature? cached, TState state, - Func factory) where TFeature : class? + Func factory) where TFeature : class? { var flush = false; var revision = Collection?.Revision ?? ContextDisposed(); @@ -80,7 +78,7 @@ public TFeature Fetch( } // Update and cache clearing logic, when the fast-path in Fetch isn't applicable - private TFeature UpdateCached(ref TFeature cached, TState state, Func factory, int revision, bool flush) where TFeature : class? + private TFeature? UpdateCached(ref TFeature? cached, TState state, Func factory, int revision, bool flush) where TFeature : class? { if (flush) { @@ -108,8 +106,8 @@ private TFeature UpdateCached(ref TFeature cached, TState stat return cached; } - public TFeature Fetch([AllowNull, MaybeNull] ref TFeature cached, Func factory) - where TFeature : class? => Fetch(ref cached!, Collection, factory); + public TFeature? Fetch(ref TFeature? cached, Func factory) + where TFeature : class? => Fetch(ref cached, Collection, factory); private static int ContextDisposed() { diff --git a/src/Http/Http/src/Builder/ApplicationBuilder.cs b/src/Http/Http/src/Builder/ApplicationBuilder.cs index f7cc65897c8a..552312fcaa59 100644 --- a/src/Http/Http/src/Builder/ApplicationBuilder.cs +++ b/src/Http/Http/src/Builder/ApplicationBuilder.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; @@ -58,8 +57,7 @@ public IFeatureCollection ServerFeatures public IDictionary Properties { get; } - [return: MaybeNull] - private T GetProperty(string key) + private T? GetProperty(string key) { return Properties.TryGetValue(key, out var value) ? (T)value : default(T); } diff --git a/src/Http/Http/src/Internal/DefaultHttpResponse.cs b/src/Http/Http/src/Internal/DefaultHttpResponse.cs index 167cd10c40f7..6caa939444ee 100644 --- a/src/Http/Http/src/Internal/DefaultHttpResponse.cs +++ b/src/Http/Http/src/Internal/DefaultHttpResponse.cs @@ -70,21 +70,17 @@ public override Stream Body set { var otherFeature = _features.Collection.Get(); + if (otherFeature is StreamResponseBodyFeature streamFeature && streamFeature.PriorFeature != null && object.ReferenceEquals(value, streamFeature.PriorFeature.Stream)) { // They're reverting the stream back to the prior one. Revert the whole feature. _features.Collection.Set(streamFeature.PriorFeature); - // CompleteAsync is registered with HttpResponse.OnCompleted and there's no way to unregister it. - // Prevent it from running by marking as disposed. - streamFeature.Dispose(); return; } - var feature = new StreamResponseBodyFeature(value, otherFeature); - OnCompleted(feature.CompleteAsync); - _features.Collection.Set(feature); + _features.Collection.Set(new StreamResponseBodyFeature(value, otherFeature)); } } diff --git a/src/Http/Http/test/Internal/DefaultHttpResponseTests.cs b/src/Http/Http/test/Internal/DefaultHttpResponseTests.cs index fe9b92a908b9..ea34114879f4 100644 --- a/src/Http/Http/test/Internal/DefaultHttpResponseTests.cs +++ b/src/Http/Http/test/Internal/DefaultHttpResponseTests.cs @@ -73,6 +73,43 @@ public void BodyWriter_CanGet() Assert.NotNull(bodyPipe); } + [Fact] + public void ReplacingResponseBody_DoesNotCreateOnCompletedRegistration() + { + var features = new FeatureCollection(); + + var originalStream = new FlushAsyncCheckStream(); + var replacementStream = new FlushAsyncCheckStream(); + + var responseBodyMock = new Mock(); + responseBodyMock.Setup(o => o.Stream).Returns(originalStream); + features.Set(responseBodyMock.Object); + + var responseMock = new Mock(); + features.Set(responseMock.Object); + + var context = new DefaultHttpContext(features); + + Assert.Same(originalStream, context.Response.Body); + Assert.Same(responseBodyMock.Object, context.Features.Get()); + + context.Response.Body = replacementStream; + + Assert.Same(replacementStream, context.Response.Body); + Assert.NotSame(responseBodyMock.Object, context.Features.Get()); + + context.Response.Body = originalStream; + + Assert.Same(originalStream, context.Response.Body); + Assert.Same(responseBodyMock.Object, context.Features.Get()); + + // The real issue was not that an OnCompleted registration existed, but that it would previously flush + // the original response body in the OnCompleted callback after the response body was disposed. + // However, since now there's no longer an OnCompleted registration at all, it's easier to verify that. + // https://github.com/dotnet/aspnetcore/issues/25342 + responseMock.Verify(m => m.OnCompleted(It.IsAny>(), It.IsAny()), Times.Never); + } + [Fact] public async Task ResponseStart_CallsFeatureIfSet() { diff --git a/src/Http/Routing/src/Matching/DfaMatcherBuilder.cs b/src/Http/Routing/src/Matching/DfaMatcherBuilder.cs index c10c34d12b59..3ff366610158 100644 --- a/src/Http/Routing/src/Matching/DfaMatcherBuilder.cs +++ b/src/Http/Routing/src/Matching/DfaMatcherBuilder.cs @@ -49,7 +49,7 @@ public DfaMatcherBuilder( } else { - UseCorrectCatchAllBehavior = false; // default to bugged behavior + UseCorrectCatchAllBehavior = true; // default to correct behavior } var (nodeBuilderPolicies, endpointComparerPolicies, endpointSelectorPolicies) = ExtractPolicies(policies.OrderBy(p => p.Order)); diff --git a/src/Http/Routing/test/UnitTests/Matching/DfaMatcherBuilderTest.cs b/src/Http/Routing/test/UnitTests/Matching/DfaMatcherBuilderTest.cs index 6ac360a20713..7372e4d3b3a1 100644 --- a/src/Http/Routing/test/UnitTests/Matching/DfaMatcherBuilderTest.cs +++ b/src/Http/Routing/test/UnitTests/Matching/DfaMatcherBuilderTest.cs @@ -543,7 +543,7 @@ public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2 public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_DefaultBehavior() { var builder = CreateDfaMatcherBuilder(); - BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_LegacyBehavior_Core(builder); + BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_CorrectBehavior_Core(builder); } [Fact] @@ -636,7 +636,11 @@ public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParame // Arrange var builder = CreateDfaMatcherBuilder(); builder.UseCorrectCatchAllBehavior = true; + BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior_Core(builder); + } + private void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior_Core(DfaMatcherBuilder builder) + { var endpoint1 = CreateEndpoint("{a}/{b}", order: 0); builder.AddEndpoint(endpoint1); @@ -688,10 +692,14 @@ public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParame [Fact] public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior() { - // Arrange var builder = CreateDfaMatcherBuilder(); builder.UseCorrectCatchAllBehavior = true; + BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior_Core(builder); + } + private void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior_Core(DfaMatcherBuilder builder) + { + // Arrange var endpoint1 = CreateEndpoint("a/{*b}", order: 0); builder.AddEndpoint(endpoint1); @@ -744,7 +752,7 @@ public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParame public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_DefaultBehavior() { var builder = CreateDfaMatcherBuilder(); - BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_Legacy30Behavior_Core(builder); + BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior_Core(builder); } // Regression test for https://github.com/dotnet/aspnetcore/issues/18677 @@ -803,7 +811,7 @@ private void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParam public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_DefaultBehavior() { var builder = CreateDfaMatcherBuilder(); - BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_Legacy30Behavior_Core(builder); + BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior_Core(builder); } // Regression test for https://github.com/dotnet/aspnetcore/issues/18677 diff --git a/src/Http/Routing/test/UnitTests/Matching/DfaMatcherConformanceTest.cs b/src/Http/Routing/test/UnitTests/Matching/DfaMatcherConformanceTest.cs index 66fb02c03a94..5af5ca25fe9f 100644 --- a/src/Http/Routing/test/UnitTests/Matching/DfaMatcherConformanceTest.cs +++ b/src/Http/Routing/test/UnitTests/Matching/DfaMatcherConformanceTest.cs @@ -60,8 +60,8 @@ public async Task Match_Regression_1867_CorrectBehavior(string path, int endpoin // [Theory] [InlineData("/middleware", 1)] - [InlineData("/middleware/test", 0)] - [InlineData("/middleware/test1/test2", -1)] + [InlineData("/middleware/test", 1)] + [InlineData("/middleware/test1/test2", 1)] [InlineData("/bill/boga", 0)] public async Task Match_Regression_1867_DefaultBehavior(string path, int endpointIndex) { diff --git a/src/Http/Routing/test/UnitTests/Template/TemplateParserTests.cs b/src/Http/Routing/test/UnitTests/Template/TemplateParserTests.cs index f5f36332e60f..2ac022c2122a 100644 --- a/src/Http/Routing/test/UnitTests/Template/TemplateParserTests.cs +++ b/src/Http/Routing/test/UnitTests/Template/TemplateParserTests.cs @@ -896,7 +896,7 @@ private bool Equals(TemplatePart x, TemplatePart y) foreach (var xconstraint in x.InlineConstraints) { if (!y.InlineConstraints.Any( - c => string.Equals(c.Constraint, xconstraint.Constraint))) + c => string.Equals(c.Constraint, xconstraint.Constraint, StringComparison.Ordinal))) { return false; } diff --git a/src/Installers/Windows/SharedFramework/Product.wxs b/src/Installers/Windows/SharedFramework/Product.wxs index 2a71da323a2a..3375094918c0 100644 --- a/src/Installers/Windows/SharedFramework/Product.wxs +++ b/src/Installers/Windows/SharedFramework/Product.wxs @@ -2,7 +2,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/src/Installers/Windows/SharedFramework/SharedFramework.wixproj b/src/Installers/Windows/SharedFramework/SharedFramework.wixproj index edbb9f5bef01..6c87d7774704 100644 --- a/src/Installers/Windows/SharedFramework/SharedFramework.wixproj +++ b/src/Installers/Windows/SharedFramework/SharedFramework.wixproj @@ -61,12 +61,16 @@ + $(InstallersOutputPath) $(InstallersOutputPath) $(InstallersOutputPath) + $(SharedFrameworkArm64HarvestRootPath)aspnetcore-runtime-internal-$(PackageVersion)-win-arm64.zip $(SharedFrameworkX64HarvestRootPath)aspnetcore-runtime-internal-$(PackageVersion)-win-x64.zip $(SharedFrameworkX86HarvestRootPath)aspnetcore-runtime-internal-$(PackageVersion)-win-x86.zip + + + diff --git a/src/Installers/Windows/SharedFrameworkBundle/SharedFrameworkBundle.wixproj b/src/Installers/Windows/SharedFrameworkBundle/SharedFrameworkBundle.wixproj index 7aa16e58ec00..f9f285c87394 100644 --- a/src/Installers/Windows/SharedFrameworkBundle/SharedFrameworkBundle.wixproj +++ b/src/Installers/Windows/SharedFrameworkBundle/SharedFrameworkBundle.wixproj @@ -29,20 +29,35 @@ - - - SharedFrameworkLib - {5244BC49-2568-4701-80A6-EAB8950AB5FA} - True - True - - - SharedFrameworkLib - {5244BC49-2568-4701-80A6-EAB8950AB5FA} - True - True - - + + + + + SharedFrameworkLib + {5244BC49-2568-4701-80A6-EAB8950AB5FA} + True + True + + + + + + + SharedFrameworkLib + {5244BC49-2568-4701-80A6-EAB8950AB5FA} + True + True + + + SharedFrameworkLib + {5244BC49-2568-4701-80A6-EAB8950AB5FA} + True + True + + + + + diff --git a/src/Installers/Windows/SharedFrameworkLib/Library.wxs b/src/Installers/Windows/SharedFrameworkLib/Library.wxs index dde16acbd7ff..c30f743d0bb3 100644 --- a/src/Installers/Windows/SharedFrameworkLib/Library.wxs +++ b/src/Installers/Windows/SharedFrameworkLib/Library.wxs @@ -16,6 +16,9 @@ + + + - + @@ -21,7 +21,7 @@ - + diff --git a/src/Installers/Windows/Wix.targets b/src/Installers/Windows/Wix.targets index 47e8bc2d927e..bce1538f173f 100644 --- a/src/Installers/Windows/Wix.targets +++ b/src/Installers/Windows/Wix.targets @@ -8,6 +8,11 @@ <_FileRevisionVersion Condition=" '$(_FileRevisionVersion)' == '' ">42424 $(AspNetCoreMajorMinorVersion).$(AspNetCorePatchVersion).$(_FileRevisionVersion) + + + $(DefineConstants);InstallerVersion=500 + $(DefineConstants);InstallerVersion=200 + $(DefineConstants);MajorVersion=$(AspNetCoreMajorVersion) $(DefineConstants);MinorVersion=$(AspNetCoreMinorVersion) $(DefineConstants);Version=$(Version) diff --git a/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs b/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs index d1ccd639db99..37b8f37f3ac3 100644 --- a/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs +++ b/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs @@ -11,10 +11,10 @@ public interface IJSInProcessRuntime : IJSRuntime /// /// Invokes the specified JavaScript function synchronously. /// - /// The JSON-serializable return type. + /// The JSON-serializable return type. /// An identifier for the function to invoke. For example, the value "someScope.someFunction" will invoke the function window.someScope.someFunction. /// JSON-serializable arguments. - /// An instance of obtained by JSON-deserializing the return value. - T Invoke(string identifier, params object?[]? args); + /// An instance of obtained by JSON-deserializing the return value. + TResult Invoke(string identifier, params object?[]? args); } } diff --git a/src/JSInterop/Microsoft.JSInterop/src/Implementation/JSInProcessObjectReference.cs b/src/JSInterop/Microsoft.JSInterop/src/Implementation/JSInProcessObjectReference.cs index 6867c98c78ad..1f48b8c89688 100644 --- a/src/JSInterop/Microsoft.JSInterop/src/Implementation/JSInProcessObjectReference.cs +++ b/src/JSInterop/Microsoft.JSInterop/src/Implementation/JSInProcessObjectReference.cs @@ -23,7 +23,6 @@ protected internal JSInProcessObjectReference(JSInProcessRuntime jsRuntime, long } /// - [return: MaybeNull] public TValue Invoke(string identifier, params object?[]? args) { ThrowIfDisposed(); diff --git a/src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntime.cs b/src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntime.cs index 44b35f6d3f97..e2263333f25d 100644 --- a/src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntime.cs +++ b/src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntime.cs @@ -23,7 +23,6 @@ protected JSInProcessRuntime() id => new JSInProcessObjectReference(this, id))); } - [return: MaybeNull] internal TValue Invoke(string identifier, long targetInstanceId, params object?[]? args) { var resultJson = InvokeJS( @@ -32,12 +31,15 @@ internal TValue Invoke(string identifier, long targetInstanceId, params JSCallResultTypeHelper.FromGeneric(), targetInstanceId); + // While the result of deserialization could be null, we're making a + // quality of life decision and letting users explicitly determine if they expect + // null by specifying TValue? as the expected return type. if (resultJson is null) { - return default; + return default!; } - return JsonSerializer.Deserialize(resultJson, JsonSerializerOptions); + return JsonSerializer.Deserialize(resultJson, JsonSerializerOptions)!; } /// @@ -47,7 +49,6 @@ internal TValue Invoke(string identifier, long targetInstanceId, params /// An identifier for the function to invoke. For example, the value "someScope.someFunction" will invoke the function window.someScope.someFunction. /// JSON-serializable arguments. /// An instance of obtained by JSON-deserializing the return value. - [return: MaybeNull] public TValue Invoke(string identifier, params object?[]? args) => Invoke(identifier, 0, args); diff --git a/src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs b/src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs index 7d37460e553f..d6f95fe12641 100644 --- a/src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs +++ b/src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs @@ -102,7 +102,7 @@ internal ValueTask InvokeAsync( { var taskId = Interlocked.Increment(ref _nextPendingTaskId); var tcs = new TaskCompletionSource(); - if (cancellationToken != default) + if (cancellationToken.CanBeCanceled) { _cancellationRegistrations[taskId] = cancellationToken.Register(() => { diff --git a/src/JSInterop/Microsoft.JSInterop/src/JSRuntimeExtensions.cs b/src/JSInterop/Microsoft.JSInterop/src/JSRuntimeExtensions.cs index 354eddbbf660..68ab076a66e8 100644 --- a/src/JSInterop/Microsoft.JSInterop/src/JSRuntimeExtensions.cs +++ b/src/JSInterop/Microsoft.JSInterop/src/JSRuntimeExtensions.cs @@ -41,7 +41,7 @@ public static async ValueTask InvokeVoidAsync(this IJSRuntime jsRuntime, string /// An identifier for the function to invoke. For example, the value "someScope.someFunction" will invoke the function window.someScope.someFunction. /// JSON-serializable arguments. /// An instance of obtained by JSON-deserializing the return value. - public static ValueTask InvokeAsync(this IJSRuntime jsRuntime, string identifier, params object[] args) + public static ValueTask InvokeAsync(this IJSRuntime jsRuntime, string identifier, params object?[]? args) { if (jsRuntime is null) { @@ -63,7 +63,7 @@ public static ValueTask InvokeAsync(this IJSRuntime jsRuntime, s /// /// JSON-serializable arguments. /// An instance of obtained by JSON-deserializing the return value. - public static ValueTask InvokeAsync(this IJSRuntime jsRuntime, string identifier, CancellationToken cancellationToken, params object[] args) + public static ValueTask InvokeAsync(this IJSRuntime jsRuntime, string identifier, CancellationToken cancellationToken, params object?[]? args) { if (jsRuntime is null) { @@ -102,7 +102,7 @@ public static async ValueTask InvokeVoidAsync(this IJSRuntime jsRuntime, string /// The duration after which to cancel the async operation. Overrides default timeouts (). /// JSON-serializable arguments. /// A that represents the asynchronous invocation operation. - public static async ValueTask InvokeAsync(this IJSRuntime jsRuntime, string identifier, TimeSpan timeout, params object[] args) + public static async ValueTask InvokeAsync(this IJSRuntime jsRuntime, string identifier, TimeSpan timeout, params object?[]? args) { if (jsRuntime is null) { diff --git a/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs b/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs index 543b872ab715..86de6ca37184 100644 --- a/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs +++ b/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Text.Json; @@ -145,6 +146,7 @@ public void CanCompleteAsyncCallsWithComplexType() ref reader); Assert.True(task.IsCompleted); var poco = task.Result; + Debug.Assert(poco != null); Assert.Equal(10, poco.Id); Assert.Equal("Test", poco.Name); } @@ -167,6 +169,7 @@ public void CanCompleteAsyncCallsWithComplexTypeUsingPropertyCasing() ref reader); Assert.True(task.IsCompleted); var poco = task.Result; + Debug.Assert(poco != null); Assert.Equal(10, poco.Id); Assert.Equal("Test", poco.Name); } diff --git a/src/Middleware/Diagnostics/test/FunctionalTests/Diagnostics.FunctionalTests.csproj b/src/Middleware/Diagnostics/test/FunctionalTests/Diagnostics.FunctionalTests.csproj index b7caf9c87e39..20ca9cd1dc80 100644 --- a/src/Middleware/Diagnostics/test/FunctionalTests/Diagnostics.FunctionalTests.csproj +++ b/src/Middleware/Diagnostics/test/FunctionalTests/Diagnostics.FunctionalTests.csproj @@ -5,6 +5,7 @@ false Diagnostics.FunctionalTests true + Windows.10.Amd64.Server20H1.Open diff --git a/src/Mvc/Mvc.Core/src/Builder/ControllerEndpointRouteBuilderExtensions.cs b/src/Mvc/Mvc.Core/src/Builder/ControllerEndpointRouteBuilderExtensions.cs index 6c14cca67fc0..d2ce072066cb 100644 --- a/src/Mvc/Mvc.Core/src/Builder/ControllerEndpointRouteBuilderExtensions.cs +++ b/src/Mvc/Mvc.Core/src/Builder/ControllerEndpointRouteBuilderExtensions.cs @@ -5,10 +5,10 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc.Core; +using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.Routing.Constraints; -using Microsoft.AspNetCore.Routing.Patterns; using Microsoft.Extensions.DependencyInjection; namespace Microsoft.AspNetCore.Builder @@ -213,7 +213,9 @@ public static IEndpointConventionBuilder MapFallbackToController( EnsureControllerServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; + var dataSource = GetOrCreateDataSource(endpoints); + dataSource.CreateInertEndpoints = true; + RegisterInCache(endpoints.ServiceProvider, dataSource); // Maps a fallback endpoint with an empty delegate. This is OK because // we don't expect the delegate to run. @@ -222,6 +224,7 @@ public static IEndpointConventionBuilder MapFallbackToController( { // MVC registers a policy that looks for this metadata. b.Metadata.Add(CreateDynamicControllerMetadata(action, controller, area: null)); + b.Metadata.Add(new ControllerEndpointDataSourceIdMetadata(dataSource.DataSourceId)); }); return builder; } @@ -289,7 +292,9 @@ public static IEndpointConventionBuilder MapFallbackToController( EnsureControllerServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; + var dataSource = GetOrCreateDataSource(endpoints); + dataSource.CreateInertEndpoints = true; + RegisterInCache(endpoints.ServiceProvider, dataSource); // Maps a fallback endpoint with an empty delegate. This is OK because // we don't expect the delegate to run. @@ -298,6 +303,7 @@ public static IEndpointConventionBuilder MapFallbackToController( { // MVC registers a policy that looks for this metadata. b.Metadata.Add(CreateDynamicControllerMetadata(action, controller, area: null)); + b.Metadata.Add(new ControllerEndpointDataSourceIdMetadata(dataSource.DataSourceId)); }); return builder; } @@ -357,7 +363,9 @@ public static IEndpointConventionBuilder MapFallbackToAreaController( EnsureControllerServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; + var dataSource = GetOrCreateDataSource(endpoints); + dataSource.CreateInertEndpoints = true; + RegisterInCache(endpoints.ServiceProvider, dataSource); // Maps a fallback endpoint with an empty delegate. This is OK because // we don't expect the delegate to run. @@ -366,6 +374,7 @@ public static IEndpointConventionBuilder MapFallbackToAreaController( { // MVC registers a policy that looks for this metadata. b.Metadata.Add(CreateDynamicControllerMetadata(action, controller, area)); + b.Metadata.Add(new ControllerEndpointDataSourceIdMetadata(dataSource.DataSourceId)); }); return builder; } @@ -435,7 +444,9 @@ public static IEndpointConventionBuilder MapFallbackToAreaController( EnsureControllerServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; + var dataSource = GetOrCreateDataSource(endpoints); + dataSource.CreateInertEndpoints = true; + RegisterInCache(endpoints.ServiceProvider, dataSource); // Maps a fallback endpoint with an empty delegate. This is OK because // we don't expect the delegate to run. @@ -444,6 +455,7 @@ public static IEndpointConventionBuilder MapFallbackToAreaController( { // MVC registers a policy that looks for this metadata. b.Metadata.Add(CreateDynamicControllerMetadata(action, controller, area)); + b.Metadata.Add(new ControllerEndpointDataSourceIdMetadata(dataSource.DataSourceId)); }); return builder; } @@ -507,11 +519,50 @@ public static void MapDynamicControllerRoute(this IEndpointRouteBu // Called for side-effect to make sure that the data source is registered. var controllerDataSource = GetOrCreateDataSource(endpoints); - + RegisterInCache(endpoints.ServiceProvider, controllerDataSource); + // The data source is just used to share the common order with conventionally routed actions. controllerDataSource.AddDynamicControllerEndpoint(endpoints, pattern, typeof(TTransformer), state); } + /// + /// Adds a specialized to the that will + /// attempt to select a controller action using the route values produced by . + /// + /// The to add the route to. + /// The URL pattern of the route. + /// A state object to provide to the instance. + /// The matching order for the dynamic route. + /// The type of a . + /// + /// + /// This method allows the registration of a and + /// that combine to dynamically select a controller action using custom logic. + /// + /// + /// The instance of will be retrieved from the dependency injection container. + /// Register as transient in ConfigureServices. Using the transient lifetime + /// is required when using . + /// + /// + public static void MapDynamicControllerRoute(this IEndpointRouteBuilder endpoints, string pattern, object state, int order) + where TTransformer : DynamicRouteValueTransformer + { + if (endpoints == null) + { + throw new ArgumentNullException(nameof(endpoints)); + } + + EnsureControllerServices(endpoints); + + // Called for side-effect to make sure that the data source is registered. + var controllerDataSource = GetOrCreateDataSource(endpoints); + RegisterInCache(endpoints.ServiceProvider, controllerDataSource); + + // The data source is just used to share the common order with conventionally routed actions. + controllerDataSource.AddDynamicControllerEndpoint(endpoints, pattern, typeof(TTransformer), state, order); + } + private static DynamicControllerMetadata CreateDynamicControllerMetadata(string action, string controller, string area) { return new DynamicControllerMetadata(new RouteValueDictionary() @@ -539,11 +590,19 @@ private static ControllerActionEndpointDataSource GetOrCreateDataSource(IEndpoin var dataSource = endpoints.DataSources.OfType().FirstOrDefault(); if (dataSource == null) { - dataSource = endpoints.ServiceProvider.GetRequiredService(); + var orderProvider = endpoints.ServiceProvider.GetRequiredService(); + var factory = endpoints.ServiceProvider.GetRequiredService(); + dataSource = factory.Create(orderProvider.GetOrCreateOrderedEndpointsSequenceProvider(endpoints)); endpoints.DataSources.Add(dataSource); } return dataSource; } + + private static void RegisterInCache(IServiceProvider serviceProvider, ControllerActionEndpointDataSource dataSource) + { + var cache = serviceProvider.GetRequiredService(); + cache.AddDataSource(dataSource); + } } } diff --git a/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs b/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs index 4f5593e86acd..3c9233433f52 100644 --- a/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs +++ b/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs @@ -269,10 +269,11 @@ internal static void AddMvcCoreServices(IServiceCollection services) // // Endpoint Routing / Endpoints // - services.TryAddSingleton(); - services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); services.TryAddSingleton(); - services.TryAddSingleton(); + services.TryAddSingleton(); services.TryAddEnumerable(ServiceDescriptor.Singleton()); // diff --git a/src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProvider.cs b/src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProvider.cs new file mode 100644 index 000000000000..701a5ff2ef3f --- /dev/null +++ b/src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProvider.cs @@ -0,0 +1,23 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading; + +namespace Microsoft.AspNetCore.Mvc.Infrastructure +{ + internal class OrderedEndpointsSequenceProvider + { + // In traditional conventional routing setup, the routes defined by a user have a order + // defined by how they are added into the list. We would like to maintain the same order when building + // up the endpoints too. + // + // Start with an order of '1' for conventional routes as attribute routes have a default order of '0'. + // This is for scenarios dealing with migrating existing Router based code to Endpoint Routing world. + private int _current = 0; + + public int GetNext() + { + return Interlocked.Increment(ref _current); + } + } +} diff --git a/src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProviderCache.cs b/src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProviderCache.cs new file mode 100644 index 000000000000..e3795c4bdc8b --- /dev/null +++ b/src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProviderCache.cs @@ -0,0 +1,18 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Concurrent; +using Microsoft.AspNetCore.Routing; + +namespace Microsoft.AspNetCore.Mvc.Infrastructure +{ + internal class OrderedEndpointsSequenceProviderCache + { + private readonly ConcurrentDictionary _sequenceProviderCache = new(); + + public OrderedEndpointsSequenceProvider GetOrCreateOrderedEndpointsSequenceProvider(IEndpointRouteBuilder endpoints) + { + return _sequenceProviderCache.GetOrAdd(endpoints, new OrderedEndpointsSequenceProvider()); + } + } +} diff --git a/src/Mvc/Mvc.Core/src/JsonOptions.cs b/src/Mvc/Mvc.Core/src/JsonOptions.cs index cdc5168a0751..dfce0ea4d5a5 100644 --- a/src/Mvc/Mvc.Core/src/JsonOptions.cs +++ b/src/Mvc/Mvc.Core/src/JsonOptions.cs @@ -12,20 +12,12 @@ public class JsonOptions /// Gets the used by and /// . /// - public JsonSerializerOptions JsonSerializerOptions { get; } = new JsonSerializerOptions + public JsonSerializerOptions JsonSerializerOptions { get; } = new JsonSerializerOptions(JsonSerializerDefaults.Web) { // Limit the object graph we'll consume to a fixed depth. This prevents stackoverflow exceptions // from deserialization errors that might occur from deeply nested objects. // This value is the same for model binding and Json.Net's serialization. MaxDepth = MvcOptions.DefaultMaxModelBindingRecursionDepth, - - // We're using case-insensitive because there's a TON of code that there that does uses JSON.NET's default - // settings (preserve case) - including the WebAPIClient. This worked when we were using JSON.NET + camel casing - // because JSON.NET is case-insensitive by default. - PropertyNameCaseInsensitive = true, - - // Use camel casing for properties - PropertyNamingPolicy = JsonNamingPolicy.CamelCase, }; } } diff --git a/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSource.cs b/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSource.cs index fb9288b9cf84..93a05e245576 100644 --- a/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSource.cs +++ b/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSource.cs @@ -19,13 +19,17 @@ internal class ControllerActionEndpointDataSource : ActionEndpointDataSourceBase private readonly List _routes; public ControllerActionEndpointDataSource( + ControllerActionEndpointDataSourceIdProvider dataSourceIdProvider, IActionDescriptorCollectionProvider actions, ActionEndpointFactory endpointFactory, OrderedEndpointsSequenceProvider orderSequence) : base(actions) { _endpointFactory = endpointFactory; + + DataSourceId = dataSourceIdProvider.CreateId(); _orderSequence = orderSequence; + _routes = new List(); DefaultBuilder = new ControllerActionEndpointConventionBuilder(Lock, Conventions); @@ -35,6 +39,8 @@ public ControllerActionEndpointDataSource( Subscribe(); } + public int DataSourceId { get; } + public ControllerActionEndpointConventionBuilder DefaultBuilder { get; } // Used to control whether we create 'inert' (non-routable) endpoints for use in dynamic @@ -101,12 +107,12 @@ protected override List CreateEndpoints(IReadOnlyList { - ((RouteEndpointBuilder)b).Order = order; + ((RouteEndpointBuilder)b).Order = order.Value; b.Metadata.Add(new DynamicControllerRouteValueTransformerMetadata(transformerType, state)); + b.Metadata.Add(new ControllerEndpointDataSourceIdMetadata(DataSourceId)); }); } } diff --git a/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSourceFactory.cs b/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSourceFactory.cs new file mode 100644 index 000000000000..0bb0d591a564 --- /dev/null +++ b/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSourceFactory.cs @@ -0,0 +1,29 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Mvc.Routing; + +namespace Microsoft.AspNetCore.Mvc.Infrastructure +{ + internal class ControllerActionEndpointDataSourceFactory + { + private readonly ControllerActionEndpointDataSourceIdProvider _dataSourceIdProvider; + private readonly IActionDescriptorCollectionProvider _actions; + private readonly ActionEndpointFactory _factory; + + public ControllerActionEndpointDataSourceFactory( + ControllerActionEndpointDataSourceIdProvider dataSourceIdProvider, + IActionDescriptorCollectionProvider actions, + ActionEndpointFactory factory) + { + _dataSourceIdProvider = dataSourceIdProvider; + _actions = actions; + _factory = factory; + } + + public ControllerActionEndpointDataSource Create(OrderedEndpointsSequenceProvider orderProvider) + { + return new ControllerActionEndpointDataSource(_dataSourceIdProvider, _actions, _factory, orderProvider); + } + } +} diff --git a/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSourceIdProvider.cs b/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSourceIdProvider.cs new file mode 100644 index 000000000000..0c9ec72b0dba --- /dev/null +++ b/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSourceIdProvider.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading; + +namespace Microsoft.AspNetCore.Mvc.Routing +{ + internal class ControllerActionEndpointDataSourceIdProvider + { + private int _nextId = 1; + + internal int CreateId() + { + return Interlocked.Increment(ref _nextId); + } + } +} diff --git a/src/Mvc/Mvc.Core/src/Routing/ControllerEndpointDataSourceIdMetadata.cs b/src/Mvc/Mvc.Core/src/Routing/ControllerEndpointDataSourceIdMetadata.cs new file mode 100644 index 000000000000..ab83ea4155de --- /dev/null +++ b/src/Mvc/Mvc.Core/src/Routing/ControllerEndpointDataSourceIdMetadata.cs @@ -0,0 +1,15 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Mvc.Routing +{ + internal class ControllerEndpointDataSourceIdMetadata + { + public ControllerEndpointDataSourceIdMetadata(int id) + { + Id = id; + } + + public int Id { get; } + } +} diff --git a/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointMatcherPolicy.cs b/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointMatcherPolicy.cs index 5f30a03eb744..bd9425ae5cf4 100644 --- a/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointMatcherPolicy.cs +++ b/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointMatcherPolicy.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; @@ -15,14 +16,14 @@ namespace Microsoft.AspNetCore.Mvc.Routing { internal class DynamicControllerEndpointMatcherPolicy : MatcherPolicy, IEndpointSelectorPolicy { - private readonly DynamicControllerEndpointSelector _selector; + private readonly DynamicControllerEndpointSelectorCache _selectorCache; private readonly EndpointMetadataComparer _comparer; - public DynamicControllerEndpointMatcherPolicy(DynamicControllerEndpointSelector selector, EndpointMetadataComparer comparer) + public DynamicControllerEndpointMatcherPolicy(DynamicControllerEndpointSelectorCache selectorCache, EndpointMetadataComparer comparer) { - if (selector == null) + if (selectorCache == null) { - throw new ArgumentNullException(nameof(selector)); + throw new ArgumentNullException(nameof(selectorCache)); } if (comparer == null) @@ -30,7 +31,7 @@ public DynamicControllerEndpointMatcherPolicy(DynamicControllerEndpointSelector throw new ArgumentNullException(nameof(comparer)); } - _selector = selector; + _selectorCache = selectorCache; _comparer = comparer; } @@ -79,6 +80,9 @@ public async Task ApplyAsync(HttpContext httpContext, CandidateSet candidates) throw new ArgumentNullException(nameof(candidates)); } + // The per-route selector, must be the same for all the endpoints we are dealing with. + DynamicControllerEndpointSelector selector = null; + // There's no real benefit here from trying to avoid the async state machine. // We only execute on nodes that contain a dynamic policy, and thus always have // to await something. @@ -127,7 +131,9 @@ public async Task ApplyAsync(HttpContext httpContext, CandidateSet candidates) continue; } - var endpoints = _selector.SelectEndpoints(dynamicValues); + selector = ResolveSelector(selector, endpoint); + + var endpoints = selector.SelectEndpoints(dynamicValues); if (endpoints.Count == 0 && dynamicControllerMetadata != null) { // Naving no match for a fallback is a configuration error. We can't really check @@ -172,5 +178,14 @@ public async Task ApplyAsync(HttpContext httpContext, CandidateSet candidates) candidates.ExpandEndpoint(i, endpoints, _comparer); } } + + private DynamicControllerEndpointSelector ResolveSelector(DynamicControllerEndpointSelector currentSelector, Endpoint endpoint) + { + var selector = _selectorCache.GetEndpointSelector(endpoint); + + Debug.Assert(currentSelector == null || ReferenceEquals(currentSelector, selector)); + + return selector; + } } } diff --git a/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointSelector.cs b/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointSelector.cs index f07b22b94b58..6281fc4bc26c 100644 --- a/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointSelector.cs +++ b/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointSelector.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; @@ -11,25 +11,15 @@ namespace Microsoft.AspNetCore.Mvc.Routing { internal class DynamicControllerEndpointSelector : IDisposable { - private readonly EndpointDataSource _dataSource; private readonly DataSourceDependentCache> _cache; - public DynamicControllerEndpointSelector(ControllerActionEndpointDataSource dataSource) - : this((EndpointDataSource)dataSource) - { - } - - // Exposed for tests. We need to accept a more specific type in the constructor for DI - // to work. - protected DynamicControllerEndpointSelector(EndpointDataSource dataSource) + public DynamicControllerEndpointSelector(EndpointDataSource dataSource) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } - _dataSource = dataSource; - _cache = new DataSourceDependentCache>(dataSource, Initialize); } diff --git a/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointSelectorCache.cs b/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointSelectorCache.cs new file mode 100644 index 000000000000..9d149843126e --- /dev/null +++ b/src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointSelectorCache.cs @@ -0,0 +1,46 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Concurrent; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; + +namespace Microsoft.AspNetCore.Mvc.Routing +{ + internal class DynamicControllerEndpointSelectorCache + { + private readonly ConcurrentDictionary _dataSourceCache = new(); + private readonly ConcurrentDictionary _endpointSelectorCache = new(); + + public void AddDataSource(ControllerActionEndpointDataSource dataSource) + { + _dataSourceCache.GetOrAdd(dataSource.DataSourceId, dataSource); + } + + // For testing purposes only + internal void AddDataSource(EndpointDataSource dataSource, int key) => + _dataSourceCache.GetOrAdd(key, dataSource); + + public DynamicControllerEndpointSelector GetEndpointSelector(Endpoint endpoint) + { + if (endpoint?.Metadata == null) + { + return null; + } + + var dataSourceId = endpoint.Metadata.GetMetadata(); + return _endpointSelectorCache.GetOrAdd(dataSourceId.Id, key => EnsureDataSource(key)); + } + + private DynamicControllerEndpointSelector EnsureDataSource(int key) + { + if (!_dataSourceCache.TryGetValue(key, out var dataSource)) + { + throw new InvalidOperationException($"Data source with key '{key}' not registered."); + } + + return new DynamicControllerEndpointSelector(dataSource); + } + } +} diff --git a/src/Mvc/Mvc.Core/test/Routing/ControllerActionEndpointDataSourceTest.cs b/src/Mvc/Mvc.Core/test/Routing/ControllerActionEndpointDataSourceTest.cs index 6001dab41545..8ee740f2c13a 100644 --- a/src/Mvc/Mvc.Core/test/Routing/ControllerActionEndpointDataSourceTest.cs +++ b/src/Mvc/Mvc.Core/test/Routing/ControllerActionEndpointDataSourceTest.cs @@ -245,8 +245,7 @@ public void Endpoints_AppliesConventions_CanOverideEndpointName() var dataSource = (ControllerActionEndpointDataSource)CreateDataSource(mockDescriptorProvider.Object); dataSource.AddRoute("1", "/1/{controller}/{action}/{id?}", null, null, null); dataSource.AddRoute("2", "/2/{controller}/{action}/{id?}", null, null, null); - - + dataSource.DefaultBuilder.Add(b => { if (b.Metadata.OfType().FirstOrDefault()?.AttributeRouteInfo != null) @@ -385,7 +384,11 @@ private static bool SupportsLinkGeneration(RouteEndpoint endpoint) private protected override ActionEndpointDataSourceBase CreateDataSource(IActionDescriptorCollectionProvider actions, ActionEndpointFactory endpointFactory) { - return new ControllerActionEndpointDataSource(actions, endpointFactory, new OrderedEndpointsSequenceProvider()); + return new ControllerActionEndpointDataSource( + new ControllerActionEndpointDataSourceIdProvider(), + actions, + endpointFactory, + new OrderedEndpointsSequenceProvider()); } protected override ActionDescriptor CreateActionDescriptor( diff --git a/src/Mvc/Mvc.Core/test/Routing/DynamicControllerEndpointMatcherPolicyTest.cs b/src/Mvc/Mvc.Core/test/Routing/DynamicControllerEndpointMatcherPolicyTest.cs index 03dbeab793c2..44a8232b07db 100644 --- a/src/Mvc/Mvc.Core/test/Routing/DynamicControllerEndpointMatcherPolicyTest.cs +++ b/src/Mvc/Mvc.Core/test/Routing/DynamicControllerEndpointMatcherPolicyTest.cs @@ -19,6 +19,7 @@ public class DynamicControllerEndpointMatcherPolicyTest { public DynamicControllerEndpointMatcherPolicyTest() { + var dataSourceKey = new ControllerEndpointDataSourceIdMetadata(1); var actions = new ActionDescriptor[] { new ControllerActionDescriptor() @@ -59,12 +60,13 @@ public DynamicControllerEndpointMatcherPolicyTest() new EndpointMetadataCollection(new object[] { new DynamicControllerRouteValueTransformerMetadata(typeof(CustomTransformer), State), + dataSourceKey }), "dynamic"); DataSource = new DefaultEndpointDataSource(ControllerEndpoints); - Selector = new TestDynamicControllerEndpointSelector(DataSource); + SelectorCache = new TestDynamicControllerEndpointSelectorCache(DataSource, 1); var services = new ServiceCollection(); services.AddRouting(); @@ -88,7 +90,7 @@ public DynamicControllerEndpointMatcherPolicyTest() private Endpoint DynamicEndpoint { get; } - private DynamicControllerEndpointSelector Selector { get; } + private DynamicControllerEndpointSelectorCache SelectorCache { get; } private IServiceProvider Services { get; } @@ -102,7 +104,7 @@ public DynamicControllerEndpointMatcherPolicyTest() public async Task ApplyAsync_NoMatch() { // Arrange - var policy = new DynamicControllerEndpointMatcherPolicy(Selector, Comparer); + var policy = new DynamicControllerEndpointMatcherPolicy(SelectorCache, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { null, }; @@ -132,7 +134,7 @@ public async Task ApplyAsync_NoMatch() public async Task ApplyAsync_HasMatchNoEndpointFound() { // Arrange - var policy = new DynamicControllerEndpointMatcherPolicy(Selector, Comparer); + var policy = new DynamicControllerEndpointMatcherPolicy(SelectorCache, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { null, }; @@ -163,7 +165,7 @@ public async Task ApplyAsync_HasMatchNoEndpointFound() public async Task ApplyAsync_HasMatchFindsEndpoint_WithoutRouteValues() { // Arrange - var policy = new DynamicControllerEndpointMatcherPolicy(Selector, Comparer); + var policy = new DynamicControllerEndpointMatcherPolicy(SelectorCache, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { null, }; @@ -209,7 +211,7 @@ public async Task ApplyAsync_HasMatchFindsEndpoint_WithoutRouteValues() public async Task ApplyAsync_ThrowsForTransformerWithInvalidLifetime() { // Arrange - var policy = new DynamicControllerEndpointMatcherPolicy(Selector, Comparer); + var policy = new DynamicControllerEndpointMatcherPolicy(SelectorCache, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -240,7 +242,7 @@ public async Task ApplyAsync_ThrowsForTransformerWithInvalidLifetime() public async Task ApplyAsync_HasMatchFindsEndpoint_WithRouteValues() { // Arrange - var policy = new DynamicControllerEndpointMatcherPolicy(Selector, Comparer); + var policy = new DynamicControllerEndpointMatcherPolicy(SelectorCache, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -297,7 +299,7 @@ public async Task ApplyAsync_HasMatchFindsEndpoint_WithRouteValues() public async Task ApplyAsync_CanDiscardFoundEndpoints() { // Arrange - var policy = new DynamicControllerEndpointMatcherPolicy(Selector, Comparer); + var policy = new DynamicControllerEndpointMatcherPolicy(SelectorCache, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -336,7 +338,7 @@ public async Task ApplyAsync_CanDiscardFoundEndpoints() public async Task ApplyAsync_CanReplaceFoundEndpoints() { // Arrange - var policy = new DynamicControllerEndpointMatcherPolicy(Selector, Comparer); + var policy = new DynamicControllerEndpointMatcherPolicy(SelectorCache, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -398,7 +400,7 @@ public async Task ApplyAsync_CanReplaceFoundEndpoints() public async Task ApplyAsync_CanExpandTheListOfFoundEndpoints() { // Arrange - var policy = new DynamicControllerEndpointMatcherPolicy(Selector, Comparer); + var policy = new DynamicControllerEndpointMatcherPolicy(SelectorCache, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -437,11 +439,11 @@ public async Task ApplyAsync_CanExpandTheListOfFoundEndpoints() Assert.Same(ControllerEndpoints[2], candidates[1].Endpoint); } - private class TestDynamicControllerEndpointSelector : DynamicControllerEndpointSelector + private class TestDynamicControllerEndpointSelectorCache : DynamicControllerEndpointSelectorCache { - public TestDynamicControllerEndpointSelector(EndpointDataSource dataSource) - : base(dataSource) + public TestDynamicControllerEndpointSelectorCache(EndpointDataSource dataSource, int key) { + AddDataSource(dataSource, key); } } diff --git a/src/Mvc/Mvc.RazorPages/src/Builder/RazorPagesEndpointRouteBuilderExtensions.cs b/src/Mvc/Mvc.RazorPages/src/Builder/RazorPagesEndpointRouteBuilderExtensions.cs index bd0c27186b46..f8258196b8ab 100644 --- a/src/Mvc/Mvc.RazorPages/src/Builder/RazorPagesEndpointRouteBuilderExtensions.cs +++ b/src/Mvc/Mvc.RazorPages/src/Builder/RazorPagesEndpointRouteBuilderExtensions.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc.ApplicationModels; +using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Routing; @@ -75,7 +76,9 @@ public static IEndpointConventionBuilder MapFallbackToPage(this IEndpointRouteBu EnsureRazorPagesServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; + var pageDataSource = GetOrCreateDataSource(endpoints); + pageDataSource.CreateInertEndpoints = true; + RegisterInCache(endpoints.ServiceProvider, pageDataSource); // Maps a fallback endpoint with an empty delegate. This is OK because // we don't expect the delegate to run. @@ -84,6 +87,7 @@ public static IEndpointConventionBuilder MapFallbackToPage(this IEndpointRouteBu { // MVC registers a policy that looks for this metadata. b.Metadata.Add(CreateDynamicPageMetadata(page, area: null)); + b.Metadata.Add(new PageEndpointDataSourceIdMetadata(pageDataSource.DataSourceId)); }); return builder; } @@ -141,7 +145,9 @@ public static IEndpointConventionBuilder MapFallbackToPage( EnsureRazorPagesServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; + var pageDataSource = GetOrCreateDataSource(endpoints); + pageDataSource.CreateInertEndpoints = true; + RegisterInCache(endpoints.ServiceProvider, pageDataSource); // Maps a fallback endpoint with an empty delegate. This is OK because // we don't expect the delegate to run. @@ -150,6 +156,7 @@ public static IEndpointConventionBuilder MapFallbackToPage( { // MVC registers a policy that looks for this metadata. b.Metadata.Add(CreateDynamicPageMetadata(page, area: null)); + b.Metadata.Add(new PageEndpointDataSourceIdMetadata(pageDataSource.DataSourceId)); }); return builder; } @@ -199,7 +206,9 @@ public static IEndpointConventionBuilder MapFallbackToAreaPage( EnsureRazorPagesServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; + var pageDataSource = GetOrCreateDataSource(endpoints); + pageDataSource.CreateInertEndpoints = true; + RegisterInCache(endpoints.ServiceProvider, pageDataSource); // Maps a fallback endpoint with an empty delegate. This is OK because // we don't expect the delegate to run. @@ -208,6 +217,7 @@ public static IEndpointConventionBuilder MapFallbackToAreaPage( { // MVC registers a policy that looks for this metadata. b.Metadata.Add(CreateDynamicPageMetadata(page, area)); + b.Metadata.Add(new PageEndpointDataSourceIdMetadata(pageDataSource.DataSourceId)); }); return builder; } @@ -267,7 +277,9 @@ public static IEndpointConventionBuilder MapFallbackToAreaPage( EnsureRazorPagesServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; + var pageDataSource = GetOrCreateDataSource(endpoints); + pageDataSource.CreateInertEndpoints = true; + RegisterInCache(endpoints.ServiceProvider, pageDataSource); // Maps a fallback endpoint with an empty delegate. This is OK because // we don't expect the delegate to run. @@ -276,6 +288,7 @@ public static IEndpointConventionBuilder MapFallbackToAreaPage( { // MVC registers a policy that looks for this metadata. b.Metadata.Add(CreateDynamicPageMetadata(page, area)); + b.Metadata.Add(new PageEndpointDataSourceIdMetadata(pageDataSource.DataSourceId)); }); return builder; } @@ -337,9 +350,51 @@ public static void MapDynamicPageRoute(this IEndpointRouteBuilder EnsureRazorPagesServices(endpoints); // Called for side-effect to make sure that the data source is registered. - var dataSource = GetOrCreateDataSource(endpoints); + var pageDataSource = GetOrCreateDataSource(endpoints); + RegisterInCache(endpoints.ServiceProvider, pageDataSource); - dataSource.AddDynamicPageEndpoint(endpoints, pattern, typeof(TTransformer), state); + pageDataSource.AddDynamicPageEndpoint(endpoints, pattern, typeof(TTransformer), state); + } + + /// + /// Adds a specialized to the that will + /// attempt to select a page using the route values produced by . + /// + /// The to add the route to. + /// The URL pattern of the route. + /// A state object to provide to the instance. + /// The matching order for the dynamic route. + /// The type of a . + /// + /// + /// This method allows the registration of a and + /// that combine to dynamically select a page using custom logic. + /// + /// + /// The instance of will be retrieved from the dependency injection container. + /// Register with the desired service lifetime in ConfigureServices. + /// + /// + public static void MapDynamicPageRoute(this IEndpointRouteBuilder endpoints, string pattern, object state, int order) + where TTransformer : DynamicRouteValueTransformer + { + if (endpoints == null) + { + throw new ArgumentNullException(nameof(endpoints)); + } + + if (pattern == null) + { + throw new ArgumentNullException(nameof(pattern)); + } + + EnsureRazorPagesServices(endpoints); + + // Called for side-effect to make sure that the data source is registered. + var pageDataSource = GetOrCreateDataSource(endpoints); + RegisterInCache(endpoints.ServiceProvider, pageDataSource); + + pageDataSource.AddDynamicPageEndpoint(endpoints, pattern, typeof(TTransformer), state, order); } private static DynamicPageMetadata CreateDynamicPageMetadata(string page, string area) @@ -353,7 +408,7 @@ private static DynamicPageMetadata CreateDynamicPageMetadata(string page, string private static void EnsureRazorPagesServices(IEndpointRouteBuilder endpoints) { - var marker = endpoints.ServiceProvider.GetService(); + var marker = endpoints.ServiceProvider.GetService(); if (marker == null) { throw new InvalidOperationException(Mvc.Core.Resources.FormatUnableToFindServices( @@ -368,11 +423,19 @@ private static PageActionEndpointDataSource GetOrCreateDataSource(IEndpointRoute var dataSource = endpoints.DataSources.OfType().FirstOrDefault(); if (dataSource == null) { - dataSource = endpoints.ServiceProvider.GetRequiredService(); + var orderProviderCache = endpoints.ServiceProvider.GetRequiredService(); + var factory = endpoints.ServiceProvider.GetRequiredService(); + dataSource = factory.Create(orderProviderCache.GetOrCreateOrderedEndpointsSequenceProvider(endpoints)); endpoints.DataSources.Add(dataSource); } return dataSource; } + + private static void RegisterInCache(IServiceProvider serviceProvider, PageActionEndpointDataSource dataSource) + { + var cache = serviceProvider.GetRequiredService(); + cache.AddDataSource(dataSource); + } } } diff --git a/src/Mvc/Mvc.RazorPages/src/DependencyInjection/MvcRazorPagesMvcCoreBuilderExtensions.cs b/src/Mvc/Mvc.RazorPages/src/DependencyInjection/MvcRazorPagesMvcCoreBuilderExtensions.cs index c17c80927ab6..81e7fbbb302c 100644 --- a/src/Mvc/Mvc.RazorPages/src/DependencyInjection/MvcRazorPagesMvcCoreBuilderExtensions.cs +++ b/src/Mvc/Mvc.RazorPages/src/DependencyInjection/MvcRazorPagesMvcCoreBuilderExtensions.cs @@ -89,15 +89,15 @@ internal static void AddRazorPagesServices(IServiceCollection services) // Routing services.TryAddEnumerable(ServiceDescriptor.Singleton()); services.TryAddEnumerable(ServiceDescriptor.Singleton()); - services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); // Action description and invocation services.TryAddEnumerable( ServiceDescriptor.Singleton()); services.TryAddEnumerable( ServiceDescriptor.Singleton()); - services.TryAddSingleton(); - services.TryAddSingleton(); + services.TryAddSingleton(); services.TryAddEnumerable(ServiceDescriptor.Singleton()); services.TryAddEnumerable( diff --git a/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointMatcherPolicy.cs b/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointMatcherPolicy.cs index 337fe3e5f0ff..eb01da5205ee 100644 --- a/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointMatcherPolicy.cs +++ b/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointMatcherPolicy.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; @@ -15,15 +16,15 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure { internal class DynamicPageEndpointMatcherPolicy : MatcherPolicy, IEndpointSelectorPolicy { - private readonly DynamicPageEndpointSelector _selector; + private readonly DynamicPageEndpointSelectorCache _selectorCache; private readonly PageLoader _loader; private readonly EndpointMetadataComparer _comparer; - public DynamicPageEndpointMatcherPolicy(DynamicPageEndpointSelector selector, PageLoader loader, EndpointMetadataComparer comparer) + public DynamicPageEndpointMatcherPolicy(DynamicPageEndpointSelectorCache selectorCache, PageLoader loader, EndpointMetadataComparer comparer) { - if (selector == null) + if (selectorCache == null) { - throw new ArgumentNullException(nameof(selector)); + throw new ArgumentNullException(nameof(selectorCache)); } if (loader == null) @@ -36,7 +37,7 @@ public DynamicPageEndpointMatcherPolicy(DynamicPageEndpointSelector selector, Pa throw new ArgumentNullException(nameof(comparer)); } - _selector = selector; + _selectorCache = selectorCache; _loader = loader; _comparer = comparer; } @@ -86,6 +87,8 @@ public async Task ApplyAsync(HttpContext httpContext, CandidateSet candidates) throw new ArgumentNullException(nameof(candidates)); } + DynamicPageEndpointSelector selector = null; + // There's no real benefit here from trying to avoid the async state machine. // We only execute on nodes that contain a dynamic policy, and thus always have // to await something. @@ -132,7 +135,8 @@ public async Task ApplyAsync(HttpContext httpContext, CandidateSet candidates) continue; } - var endpoints = _selector.SelectEndpoints(dynamicValues); + selector = ResolveSelector(selector, endpoint); + var endpoints = selector.SelectEndpoints(dynamicValues); if (endpoints.Count == 0 && dynamicPageMetadata != null) { // Having no match for a fallback is a configuration error. We can't really check @@ -196,5 +200,15 @@ public async Task ApplyAsync(HttpContext httpContext, CandidateSet candidates) candidates.ExpandEndpoint(i, loadedEndpoints, _comparer); } } + + private DynamicPageEndpointSelector ResolveSelector(DynamicPageEndpointSelector currentSelector, Endpoint endpoint) + { + var selector = _selectorCache.GetEndpointSelector(endpoint); + + Debug.Assert(currentSelector == null || ReferenceEquals(currentSelector, selector)); + + return selector; + } + } } diff --git a/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointSelector.cs b/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointSelector.cs index b333f2947b1d..ac8c9af69c0f 100644 --- a/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointSelector.cs +++ b/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointSelector.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; @@ -14,14 +14,7 @@ internal class DynamicPageEndpointSelector : IDisposable private readonly EndpointDataSource _dataSource; private readonly DataSourceDependentCache> _cache; - public DynamicPageEndpointSelector(PageActionEndpointDataSource dataSource) - : this((EndpointDataSource)dataSource) - { - } - - // Exposed for tests. We need to accept a more specific type in the constructor for DI - // to work. - protected DynamicPageEndpointSelector(EndpointDataSource dataSource) + public DynamicPageEndpointSelector(EndpointDataSource dataSource) { if (dataSource == null) { diff --git a/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointSelectorCache.cs b/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointSelectorCache.cs new file mode 100644 index 000000000000..5eb8c9ab1f81 --- /dev/null +++ b/src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointSelectorCache.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; + +namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure +{ + internal class DynamicPageEndpointSelectorCache + { + private readonly ConcurrentDictionary _dataSourceCache = new(); + private readonly ConcurrentDictionary _endpointSelectorCache = new(); + + public void AddDataSource(PageActionEndpointDataSource dataSource) + { + _dataSourceCache.GetOrAdd(dataSource.DataSourceId, dataSource); + } + + // For testing purposes only + internal void AddDataSource(EndpointDataSource dataSource, int key) => + _dataSourceCache.GetOrAdd(key, dataSource); + + public DynamicPageEndpointSelector GetEndpointSelector(Endpoint endpoint) + { + if (endpoint?.Metadata == null) + { + return null; + } + + var dataSourceId = endpoint.Metadata.GetMetadata(); + return _endpointSelectorCache.GetOrAdd(dataSourceId.Id, key => EnsureDataSource(key)); + } + + private DynamicPageEndpointSelector EnsureDataSource(int key) + { + if (!_dataSourceCache.TryGetValue(key, out var dataSource)) + { + throw new InvalidOperationException($"Data source with key '{key}' not registered."); + } + + return new DynamicPageEndpointSelector(dataSource); + } + } +} diff --git a/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSource.cs b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSource.cs index cefb410c73ce..f3ae54a251e2 100644 --- a/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSource.cs +++ b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSource.cs @@ -18,11 +18,13 @@ internal class PageActionEndpointDataSource : ActionEndpointDataSourceBase private readonly OrderedEndpointsSequenceProvider _orderSequence; public PageActionEndpointDataSource( + PageActionEndpointDataSourceIdProvider dataSourceIdProvider, IActionDescriptorCollectionProvider actions, ActionEndpointFactory endpointFactory, OrderedEndpointsSequenceProvider orderedEndpoints) : base(actions) { + DataSourceId = dataSourceIdProvider.CreateId(); _endpointFactory = endpointFactory; _orderSequence = orderedEndpoints; DefaultBuilder = new PageActionEndpointConventionBuilder(Lock, Conventions); @@ -32,6 +34,8 @@ public PageActionEndpointDataSource( Subscribe(); } + public int DataSourceId { get; } + public PageActionEndpointConventionBuilder DefaultBuilder { get; } // Used to control whether we create 'inert' (non-routable) endpoints for use in dynamic @@ -53,12 +57,12 @@ protected override List CreateEndpoints(IReadOnlyList { - ((RouteEndpointBuilder)b).Order = order; + ((RouteEndpointBuilder)b).Order = order.Value; b.Metadata.Add(new DynamicPageRouteValueTransformerMetadata(transformerType, state)); + b.Metadata.Add(new PageEndpointDataSourceIdMetadata(DataSourceId)); }); } } } } - diff --git a/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSourceFactory.cs b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSourceFactory.cs new file mode 100644 index 000000000000..275961d1927b --- /dev/null +++ b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSourceFactory.cs @@ -0,0 +1,30 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Mvc.Infrastructure; +using Microsoft.AspNetCore.Mvc.Routing; + +namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure +{ + internal class PageActionEndpointDataSourceFactory + { + private readonly PageActionEndpointDataSourceIdProvider _dataSourceIdProvider; + private readonly IActionDescriptorCollectionProvider _actions; + private readonly ActionEndpointFactory _endpointFactory; + + public PageActionEndpointDataSourceFactory( + PageActionEndpointDataSourceIdProvider dataSourceIdProvider, + IActionDescriptorCollectionProvider actions, + ActionEndpointFactory endpointFactory) + { + _dataSourceIdProvider = dataSourceIdProvider; + _actions = actions; + _endpointFactory = endpointFactory; + } + + public PageActionEndpointDataSource Create(OrderedEndpointsSequenceProvider orderProvider) + { + return new PageActionEndpointDataSource(_dataSourceIdProvider, _actions, _endpointFactory, orderProvider); + } + } +} diff --git a/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSourceIdProvider.cs b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSourceIdProvider.cs new file mode 100644 index 000000000000..23aed3fae1a2 --- /dev/null +++ b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSourceIdProvider.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading; + +namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure +{ + internal class PageActionEndpointDataSourceIdProvider + { + private int _nextId = 1; + + internal int CreateId() + { + return Interlocked.Increment(ref _nextId); + } + } +} diff --git a/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageEndpointDataSourceIdMetadata.cs b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageEndpointDataSourceIdMetadata.cs new file mode 100644 index 000000000000..11353b693298 --- /dev/null +++ b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageEndpointDataSourceIdMetadata.cs @@ -0,0 +1,15 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure +{ + internal class PageEndpointDataSourceIdMetadata + { + public PageEndpointDataSourceIdMetadata(int id) + { + Id = id; + } + + public int Id { get; } + } +} diff --git a/src/Mvc/Mvc.RazorPages/test/Infrastructure/DynamicPageEndpointMatcherPolicyTest.cs b/src/Mvc/Mvc.RazorPages/test/Infrastructure/DynamicPageEndpointMatcherPolicyTest.cs index 7781158e0455..8273635588f7 100644 --- a/src/Mvc/Mvc.RazorPages/test/Infrastructure/DynamicPageEndpointMatcherPolicyTest.cs +++ b/src/Mvc/Mvc.RazorPages/test/Infrastructure/DynamicPageEndpointMatcherPolicyTest.cs @@ -51,12 +51,13 @@ public DynamicPageEndpointMatcherPolicyTest() new EndpointMetadataCollection(new object[] { new DynamicPageRouteValueTransformerMetadata(typeof(CustomTransformer), State), + new PageEndpointDataSourceIdMetadata(1), }), "dynamic"); DataSource = new DefaultEndpointDataSource(PageEndpoints); - Selector = new TestDynamicPageEndpointSelector(DataSource); + SelectorCache = new TestDynamicPageEndpointSelectorCache(DataSource); var services = new ServiceCollection(); services.AddRouting(); @@ -106,7 +107,7 @@ public DynamicPageEndpointMatcherPolicyTest() private PageLoader Loader { get; } - private DynamicPageEndpointSelector Selector { get; } + private DynamicPageEndpointSelectorCache SelectorCache { get; } private object State { get; } @@ -120,7 +121,7 @@ public DynamicPageEndpointMatcherPolicyTest() public async Task ApplyAsync_NoMatch() { // Arrange - var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); + var policy = new DynamicPageEndpointMatcherPolicy(SelectorCache, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { null, }; @@ -150,7 +151,7 @@ public async Task ApplyAsync_NoMatch() public async Task ApplyAsync_HasMatchNoEndpointFound() { // Arrange - var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); + var policy = new DynamicPageEndpointMatcherPolicy(SelectorCache, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { null, }; @@ -181,7 +182,7 @@ public async Task ApplyAsync_HasMatchNoEndpointFound() public async Task ApplyAsync_HasMatchFindsEndpoint_WithoutRouteValues() { // Arrange - var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); + var policy = new DynamicPageEndpointMatcherPolicy(SelectorCache, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { null, }; @@ -221,7 +222,7 @@ public async Task ApplyAsync_HasMatchFindsEndpoint_WithoutRouteValues() public async Task ApplyAsync_HasMatchFindsEndpoint_WithRouteValues() { // Arrange - var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); + var policy = new DynamicPageEndpointMatcherPolicy(SelectorCache, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -272,7 +273,7 @@ public async Task ApplyAsync_HasMatchFindsEndpoint_WithRouteValues() public async Task ApplyAsync_Throws_ForTransformersWithInvalidLifetime() { // Arrange - var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); + var policy = new DynamicPageEndpointMatcherPolicy(SelectorCache, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -302,7 +303,7 @@ public async Task ApplyAsync_Throws_ForTransformersWithInvalidLifetime() public async Task ApplyAsync_CanDiscardFoundEndpoints() { // Arrange - var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); + var policy = new DynamicPageEndpointMatcherPolicy(SelectorCache, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -340,7 +341,7 @@ public async Task ApplyAsync_CanDiscardFoundEndpoints() public async Task ApplyAsync_CanReplaceFoundEndpoints() { // Arrange - var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); + var policy = new DynamicPageEndpointMatcherPolicy(SelectorCache, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -400,7 +401,7 @@ public async Task ApplyAsync_CanReplaceFoundEndpoints() public async Task ApplyAsync_CanExpandTheListOfFoundEndpoints() { // Arrange - var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); + var policy = new DynamicPageEndpointMatcherPolicy(SelectorCache, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; @@ -438,11 +439,11 @@ public async Task ApplyAsync_CanExpandTheListOfFoundEndpoints() Assert.Same(LoadedEndpoints[1], candidates[1].Endpoint); } - private class TestDynamicPageEndpointSelector : DynamicPageEndpointSelector + private class TestDynamicPageEndpointSelectorCache : DynamicPageEndpointSelectorCache { - public TestDynamicPageEndpointSelector(EndpointDataSource dataSource) - : base(dataSource) + public TestDynamicPageEndpointSelectorCache(EndpointDataSource dataSource) { + AddDataSource(dataSource, 1); } } diff --git a/src/Mvc/Mvc.RazorPages/test/Infrastructure/PageActionEndpointDataSourceTest.cs b/src/Mvc/Mvc.RazorPages/test/Infrastructure/PageActionEndpointDataSourceTest.cs index 291b3a801e00..2e3ef71e052a 100644 --- a/src/Mvc/Mvc.RazorPages/test/Infrastructure/PageActionEndpointDataSourceTest.cs +++ b/src/Mvc/Mvc.RazorPages/test/Infrastructure/PageActionEndpointDataSourceTest.cs @@ -92,7 +92,7 @@ public void Endpoints_AppliesConventions() private protected override ActionEndpointDataSourceBase CreateDataSource(IActionDescriptorCollectionProvider actions, ActionEndpointFactory endpointFactory) { - return new PageActionEndpointDataSource(actions, endpointFactory, new OrderedEndpointsSequenceProvider()); + return new PageActionEndpointDataSource(new PageActionEndpointDataSourceIdProvider(), actions, endpointFactory, new OrderedEndpointsSequenceProvider()); } protected override ActionDescriptor CreateActionDescriptor( diff --git a/src/Mvc/benchmarks/Microsoft.AspNetCore.Mvc.Performance/ControllerActionEndpointDatasourceBenchmark.cs b/src/Mvc/benchmarks/Microsoft.AspNetCore.Mvc.Performance/ControllerActionEndpointDatasourceBenchmark.cs index 8b965022950b..fc06826cccac 100644 --- a/src/Mvc/benchmarks/Microsoft.AspNetCore.Mvc.Performance/ControllerActionEndpointDatasourceBenchmark.cs +++ b/src/Mvc/benchmarks/Microsoft.AspNetCore.Mvc.Performance/ControllerActionEndpointDatasourceBenchmark.cs @@ -109,6 +109,7 @@ private ActionDescriptor CreateConventionalRoutedAction(int id) private ControllerActionEndpointDataSource CreateDataSource(IActionDescriptorCollectionProvider actionDescriptorCollectionProvider) { var dataSource = new ControllerActionEndpointDataSource( + new ControllerActionEndpointDataSourceIdProvider(), actionDescriptorCollectionProvider, new ActionEndpointFactory(new MockRoutePatternTransformer()), new OrderedEndpointsSequenceProvider()); diff --git a/src/Mvc/test/Mvc.FunctionalTests/RoutingAcrossPipelineBranchesTest.cs b/src/Mvc/test/Mvc.FunctionalTests/RoutingAcrossPipelineBranchesTest.cs new file mode 100644 index 000000000000..431622df9fba --- /dev/null +++ b/src/Mvc/test/Mvc.FunctionalTests/RoutingAcrossPipelineBranchesTest.cs @@ -0,0 +1,172 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Json; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc.Testing; +using RoutingWebSite; +using Xunit; + +namespace Microsoft.AspNetCore.Mvc.FunctionalTests +{ + public class RoutingAcrossPipelineBranchesTests : IClassFixture> + { + public RoutingAcrossPipelineBranchesTests(MvcTestFixture fixture) + { + Factory = fixture.Factories.FirstOrDefault() ?? fixture.WithWebHostBuilder(ConfigureWebHostBuilder); + } + + private static void ConfigureWebHostBuilder(IWebHostBuilder builder) => builder.UseStartup(); + + public WebApplicationFactory Factory { get; } + + [Fact] + public async Task MatchesConventionalRoutesInTheirBranches() + { + var client = Factory.CreateClient(); + + // Arrange + var subdirRequest = new HttpRequestMessage(HttpMethod.Get, "subdir/literal/Branches/Index/s"); + var commonRequest = new HttpRequestMessage(HttpMethod.Get, "common/Branches/Index/c/literal"); + var defaultRequest = new HttpRequestMessage(HttpMethod.Get, "Branches/literal/Index/d"); + + // Act + var subdirResponse = await client.SendAsync(subdirRequest); + var subdirContent = await subdirResponse.Content.ReadFromJsonAsync(); + + var commonResponse = await client.SendAsync(commonRequest); + var commonContent = await commonResponse.Content.ReadFromJsonAsync(); + + var defaultResponse = await client.SendAsync(defaultRequest); + var defaultContent = await defaultResponse.Content.ReadFromJsonAsync(); + + // Assert + Assert.Equal(HttpStatusCode.OK, subdirResponse.StatusCode); + Assert.True(subdirContent.RouteValues.TryGetValue("subdir", out var subdir)); + Assert.Equal("s", subdir); + + Assert.Equal(HttpStatusCode.OK, commonResponse.StatusCode); + Assert.True(commonContent.RouteValues.TryGetValue("common", out var common)); + Assert.Equal("c", common); + + Assert.Equal(HttpStatusCode.OK, defaultResponse.StatusCode); + Assert.True(defaultContent.RouteValues.TryGetValue("default", out var @default)); + Assert.Equal("d", @default); + } + + [Fact] + public async Task LinkGenerationWorksOnEachBranch() + { + var client = Factory.CreateClient(); + var linkQuery = "?link"; + + // Arrange + var subdirRequest = new HttpRequestMessage(HttpMethod.Get, "subdir/literal/Branches/Index/s" + linkQuery); + var commonRequest = new HttpRequestMessage(HttpMethod.Get, "common/Branches/Index/c/literal" + linkQuery); + var defaultRequest = new HttpRequestMessage(HttpMethod.Get, "Branches/literal/Index/d" + linkQuery); + + // Act + var subdirResponse = await client.SendAsync(subdirRequest); + var subdirContent = await subdirResponse.Content.ReadFromJsonAsync(); + + var commonResponse = await client.SendAsync(commonRequest); + var commonContent = await commonResponse.Content.ReadFromJsonAsync(); + + var defaultResponse = await client.SendAsync(defaultRequest); + var defaultContent = await defaultResponse.Content.ReadFromJsonAsync(); + + // Assert + Assert.Equal(HttpStatusCode.OK, subdirResponse.StatusCode); + Assert.Equal("/subdir/literal/Branches/Index/s", subdirContent.Link); + + Assert.Equal(HttpStatusCode.OK, commonResponse.StatusCode); + Assert.Equal("/common/Branches/Index/c/literal", commonContent.Link); + + Assert.Equal(HttpStatusCode.OK, defaultResponse.StatusCode); + Assert.Equal("/Branches/literal/Index/d", defaultContent.Link); + } + + // This still works because even though each middleware now gets its own data source, + // those data sources still get added to a global collection in IOptions>.DataSources + [Fact] + public async Task LinkGenerationStillWorksAcrossBranches() + { + var client = Factory.CreateClient(); + var linkQuery = "?link"; + + // Arrange + var subdirRequest = new HttpRequestMessage(HttpMethod.Get, "subdir/literal/Branches/Index/s" + linkQuery + "&link_common=c&link_subdir"); + var defaultRequest = new HttpRequestMessage(HttpMethod.Get, "Branches/literal/Index/d" + linkQuery + "&link_subdir=s"); + + // Act + var subdirResponse = await client.SendAsync(subdirRequest); + var subdirContent = await subdirResponse.Content.ReadFromJsonAsync(); + + var defaultResponse = await client.SendAsync(defaultRequest); + var defaultContent = await defaultResponse.Content.ReadFromJsonAsync(); + + // Assert + Assert.Equal(HttpStatusCode.OK, subdirResponse.StatusCode); + // Note that this link and the one below don't account for the path base being in a different branch. + // The recommendation for customers doing link generation across branches will be to always generate absolute + // URIs by explicitly passing the path base to the link generator. + // In the future there are improvements we might be able to do in most common cases to lift this limitation if we receive + // feedback about it. + Assert.Equal("/subdir/Branches/Index/c/literal", subdirContent.Link); + + Assert.Equal(HttpStatusCode.OK, defaultResponse.StatusCode); + Assert.Equal("/literal/Branches/Index/s", defaultContent.Link); + } + + [Fact] + public async Task DoesNotMatchConventionalRoutesDefinedInOtherBranches() + { + var client = Factory.CreateClient(); + + // Arrange + var commonRequest = new HttpRequestMessage(HttpMethod.Get, "common/literal/Branches/Index/s"); + var subdirRequest = new HttpRequestMessage(HttpMethod.Get, "subdir/Branches/Index/c/literal"); + var defaultRequest = new HttpRequestMessage(HttpMethod.Get, "common/Branches/literal/Index/d"); + + // Act + var commonResponse = await client.SendAsync(commonRequest); + + var subdirResponse = await client.SendAsync(subdirRequest); + + var defaultResponse = await client.SendAsync(defaultRequest); + + // Assert + Assert.Equal(HttpStatusCode.NotFound, commonResponse.StatusCode); + Assert.Equal(HttpStatusCode.NotFound, subdirResponse.StatusCode); + Assert.Equal(HttpStatusCode.NotFound, defaultResponse.StatusCode); + } + + [Fact] + public async Task ConventionalAndDynamicRouteOrdersAreScopedPerBranch() + { + var client = Factory.CreateClient(); + + // Arrange + var request = new HttpRequestMessage(HttpMethod.Get, "dynamicattributeorder/dynamic/route/rest"); + + // Act + var response = await client.SendAsync(request); + var content = await response.Content.ReadFromJsonAsync(); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.True(content.RouteValues.TryGetValue("action", out var action)); + + // The dynamic route wins because it has Order 1 (scope to that router) and + // has higher precedence. + Assert.Equal("Index", action); + } + + private record RouteInfo(string RouteName, IDictionary RouteValues, string Link); + } +} diff --git a/src/Mvc/test/WebSites/Common/TestResponseGenerator.cs b/src/Mvc/test/WebSites/Common/TestResponseGenerator.cs index e2492fbfec66..21d97865c5b4 100644 --- a/src/Mvc/test/WebSites/Common/TestResponseGenerator.cs +++ b/src/Mvc/test/WebSites/Common/TestResponseGenerator.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; diff --git a/src/Mvc/test/WebSites/RoutingWebSite/Controllers/BranchesController.cs b/src/Mvc/test/WebSites/RoutingWebSite/Controllers/BranchesController.cs new file mode 100644 index 000000000000..847d30dad0e7 --- /dev/null +++ b/src/Mvc/test/WebSites/RoutingWebSite/Controllers/BranchesController.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace Mvc.RoutingWebSite.Controllers +{ + public class BranchesController : Controller + { + private readonly TestResponseGenerator _generator; + + public BranchesController(TestResponseGenerator generator) + { + _generator = generator; + } + + public IActionResult Index() + { + return _generator.Generate(); + } + + [HttpGet("dynamicattributeorder/{some}/{value}/{**slug}", Order = 1)] + public IActionResult Attribute() + { + return _generator.Generate(); + } + } +} diff --git a/src/Mvc/test/WebSites/RoutingWebSite/Program.cs b/src/Mvc/test/WebSites/RoutingWebSite/Program.cs index 83b2991269c0..a5d1a83121ee 100644 --- a/src/Mvc/test/WebSites/RoutingWebSite/Program.cs +++ b/src/Mvc/test/WebSites/RoutingWebSite/Program.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.IO; diff --git a/src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamic.cs b/src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamic.cs index 7b22a48dce0a..92d552205161 100644 --- a/src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamic.cs +++ b/src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamic.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; @@ -24,6 +25,8 @@ public void ConfigureServices(IServiceCollection services) .SetCompatibilityVersion(CompatibilityVersion.Latest); services.AddTransient(); + services.AddScoped(); + services.AddSingleton(); // Used by some controllers defined in this project. services.Configure(options => options.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer)); diff --git a/src/Mvc/test/WebSites/RoutingWebSite/StartupRoutingDifferentBranches.cs b/src/Mvc/test/WebSites/RoutingWebSite/StartupRoutingDifferentBranches.cs new file mode 100644 index 000000000000..d118d7d12a0b --- /dev/null +++ b/src/Mvc/test/WebSites/RoutingWebSite/StartupRoutingDifferentBranches.cs @@ -0,0 +1,104 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.ApplicationModels; +using Microsoft.AspNetCore.Mvc.Infrastructure; +using Microsoft.AspNetCore.Mvc.Routing; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.DependencyInjection; + +namespace RoutingWebSite +{ + public class StartupRoutingDifferentBranches + { + // Set up application services + public void ConfigureServices(IServiceCollection services) + { + var pageRouteTransformerConvention = new PageRouteTransformerConvention(new SlugifyParameterTransformer()); + + services + .AddMvc(ConfigureMvcOptions) + .AddNewtonsoftJson() + .AddRazorPagesOptions(options => + { + options.Conventions.AddPageRoute("/PageRouteTransformer/PageWithConfiguredRoute", "/PageRouteTransformer/NewConventionRoute/{id?}"); + options.Conventions.AddFolderRouteModelConvention("/PageRouteTransformer", model => + { + pageRouteTransformerConvention.Apply(model); + }); + }) + .SetCompatibilityVersion(CompatibilityVersion.Latest); + + ConfigureRoutingServices(services); + + services.AddScoped(); + // This is used by test response generator + services.AddSingleton(); + services.AddSingleton(); + } + + public virtual void Configure(IApplicationBuilder app) + { + app.Map("/subdir", branch => + { + branch.UseRouting(); + + branch.UseEndpoints(endpoints => + { + endpoints.MapRazorPages(); + endpoints.MapControllerRoute(null, "literal/{controller}/{action}/{subdir}"); + endpoints.MapDynamicControllerRoute("literal/dynamic/controller/{**slug}"); + }); + }); + + app.Map("/common", branch => + { + branch.UseRouting(); + + branch.UseEndpoints(endpoints => + { + endpoints.MapControllerRoute(null, "{controller}/{action}/{common}/literal"); + endpoints.MapDynamicControllerRoute("dynamic/controller/literal/{**slug}"); + }); + }); + + app.UseRouting(); + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + endpoints.MapDynamicControllerRoute("dynamicattributeorder/dynamic/route/{**slug}"); + endpoints.MapControllerRoute(null, "{controller}/literal/{action}/{default}"); + }); + + app.Run(c => + { + return c.Response.WriteAsync("Hello from middleware after routing"); + }); + } + + protected virtual void ConfigureMvcOptions(MvcOptions options) + { + // Add route token transformer to one controller + options.Conventions.Add(new ControllerRouteTokenTransformerConvention( + typeof(ParameterTransformerController), + new SlugifyParameterTransformer())); + } + + protected virtual void ConfigureRoutingServices(IServiceCollection services) + { + services.AddRouting(options => options.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer)); + } + } + + public class BranchesTransformer : DynamicRouteValueTransformer + { + public override ValueTask TransformAsync(HttpContext httpContext, RouteValueDictionary values) + { + return new ValueTask(new RouteValueDictionary(new { controller = "Branches", action = "Index" })); + } + } +} diff --git a/src/ObjectPool/src/PublicAPI.Shipped.txt b/src/ObjectPool/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/ObjectPool/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/ObjectPool/src/PublicAPI.Unshipped.txt b/src/ObjectPool/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..ad0bc4997bf5 --- /dev/null +++ b/src/ObjectPool/src/PublicAPI.Unshipped.txt @@ -0,0 +1,50 @@ +#nullable enable +Microsoft.Extensions.ObjectPool.DefaultObjectPool +Microsoft.Extensions.ObjectPool.DefaultObjectPool.DefaultObjectPool(Microsoft.Extensions.ObjectPool.IPooledObjectPolicy! policy) -> void +Microsoft.Extensions.ObjectPool.DefaultObjectPool.DefaultObjectPool(Microsoft.Extensions.ObjectPool.IPooledObjectPolicy! policy, int maximumRetained) -> void +Microsoft.Extensions.ObjectPool.DefaultObjectPoolProvider +Microsoft.Extensions.ObjectPool.DefaultObjectPoolProvider.DefaultObjectPoolProvider() -> void +Microsoft.Extensions.ObjectPool.DefaultObjectPoolProvider.MaximumRetained.get -> int +Microsoft.Extensions.ObjectPool.DefaultObjectPoolProvider.MaximumRetained.set -> void +Microsoft.Extensions.ObjectPool.DefaultPooledObjectPolicy +Microsoft.Extensions.ObjectPool.DefaultPooledObjectPolicy.DefaultPooledObjectPolicy() -> void +Microsoft.Extensions.ObjectPool.IPooledObjectPolicy +Microsoft.Extensions.ObjectPool.IPooledObjectPolicy.Create() -> T +Microsoft.Extensions.ObjectPool.IPooledObjectPolicy.Return(T obj) -> bool +Microsoft.Extensions.ObjectPool.LeakTrackingObjectPool +Microsoft.Extensions.ObjectPool.LeakTrackingObjectPool.LeakTrackingObjectPool(Microsoft.Extensions.ObjectPool.ObjectPool! inner) -> void +Microsoft.Extensions.ObjectPool.LeakTrackingObjectPoolProvider +Microsoft.Extensions.ObjectPool.LeakTrackingObjectPoolProvider.LeakTrackingObjectPoolProvider(Microsoft.Extensions.ObjectPool.ObjectPoolProvider! inner) -> void +Microsoft.Extensions.ObjectPool.ObjectPool +Microsoft.Extensions.ObjectPool.ObjectPool +Microsoft.Extensions.ObjectPool.ObjectPool.ObjectPool() -> void +Microsoft.Extensions.ObjectPool.ObjectPoolProvider +Microsoft.Extensions.ObjectPool.ObjectPoolProvider.Create() -> Microsoft.Extensions.ObjectPool.ObjectPool! +Microsoft.Extensions.ObjectPool.ObjectPoolProvider.ObjectPoolProvider() -> void +Microsoft.Extensions.ObjectPool.ObjectPoolProviderExtensions +Microsoft.Extensions.ObjectPool.PooledObjectPolicy +Microsoft.Extensions.ObjectPool.PooledObjectPolicy.PooledObjectPolicy() -> void +Microsoft.Extensions.ObjectPool.StringBuilderPooledObjectPolicy +Microsoft.Extensions.ObjectPool.StringBuilderPooledObjectPolicy.InitialCapacity.get -> int +Microsoft.Extensions.ObjectPool.StringBuilderPooledObjectPolicy.InitialCapacity.set -> void +Microsoft.Extensions.ObjectPool.StringBuilderPooledObjectPolicy.MaximumRetainedCapacity.get -> int +Microsoft.Extensions.ObjectPool.StringBuilderPooledObjectPolicy.MaximumRetainedCapacity.set -> void +Microsoft.Extensions.ObjectPool.StringBuilderPooledObjectPolicy.StringBuilderPooledObjectPolicy() -> void +abstract Microsoft.Extensions.ObjectPool.ObjectPool.Get() -> T! +abstract Microsoft.Extensions.ObjectPool.ObjectPool.Return(T! obj) -> void +abstract Microsoft.Extensions.ObjectPool.ObjectPoolProvider.Create(Microsoft.Extensions.ObjectPool.IPooledObjectPolicy! policy) -> Microsoft.Extensions.ObjectPool.ObjectPool! +abstract Microsoft.Extensions.ObjectPool.PooledObjectPolicy.Create() -> T +abstract Microsoft.Extensions.ObjectPool.PooledObjectPolicy.Return(T obj) -> bool +override Microsoft.Extensions.ObjectPool.DefaultObjectPool.Get() -> T! +override Microsoft.Extensions.ObjectPool.DefaultObjectPool.Return(T! obj) -> void +override Microsoft.Extensions.ObjectPool.DefaultObjectPoolProvider.Create(Microsoft.Extensions.ObjectPool.IPooledObjectPolicy! policy) -> Microsoft.Extensions.ObjectPool.ObjectPool! +override Microsoft.Extensions.ObjectPool.DefaultPooledObjectPolicy.Create() -> T! +override Microsoft.Extensions.ObjectPool.DefaultPooledObjectPolicy.Return(T! obj) -> bool +override Microsoft.Extensions.ObjectPool.LeakTrackingObjectPool.Get() -> T! +override Microsoft.Extensions.ObjectPool.LeakTrackingObjectPool.Return(T! obj) -> void +override Microsoft.Extensions.ObjectPool.LeakTrackingObjectPoolProvider.Create(Microsoft.Extensions.ObjectPool.IPooledObjectPolicy! policy) -> Microsoft.Extensions.ObjectPool.ObjectPool! +override Microsoft.Extensions.ObjectPool.StringBuilderPooledObjectPolicy.Create() -> System.Text.StringBuilder! +override Microsoft.Extensions.ObjectPool.StringBuilderPooledObjectPolicy.Return(System.Text.StringBuilder! obj) -> bool +static Microsoft.Extensions.ObjectPool.ObjectPool.Create(Microsoft.Extensions.ObjectPool.IPooledObjectPolicy? policy = null) -> Microsoft.Extensions.ObjectPool.ObjectPool! +static Microsoft.Extensions.ObjectPool.ObjectPoolProviderExtensions.CreateStringBuilderPool(this Microsoft.Extensions.ObjectPool.ObjectPoolProvider! provider) -> Microsoft.Extensions.ObjectPool.ObjectPool! +static Microsoft.Extensions.ObjectPool.ObjectPoolProviderExtensions.CreateStringBuilderPool(this Microsoft.Extensions.ObjectPool.ObjectPoolProvider! provider, int initialCapacity, int maximumRetainedCapacity) -> Microsoft.Extensions.ObjectPool.ObjectPool! diff --git a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorWasmTemplateTest.cs b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorWasmTemplateTest.cs index 3ee874e8dac6..fa4c091d5400 100644 --- a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorWasmTemplateTest.cs +++ b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorWasmTemplateTest.cs @@ -178,7 +178,7 @@ public async Task BlazorWasmStandalonePwaTemplate_Works() } } - [Fact] + [Fact(Skip = "Certificate issue: https://github.com/dotnet/aspnetcore/issues/25826")] public async Task BlazorWasmHostedPwaTemplate_Works() { // Additional arguments are needed. See: https://github.com/dotnet/aspnetcore/issues/24278 diff --git a/src/ProjectTemplates/BlazorTemplates.Tests/Infrastructure/GenerateTestProps.targets b/src/ProjectTemplates/BlazorTemplates.Tests/Infrastructure/GenerateTestProps.targets index 10ce80aec393..ed8f3b941b17 100644 --- a/src/ProjectTemplates/BlazorTemplates.Tests/Infrastructure/GenerateTestProps.targets +++ b/src/ProjectTemplates/BlazorTemplates.Tests/Infrastructure/GenerateTestProps.targets @@ -3,28 +3,6 @@ BeforeTargets="CoreCompile" DependsOnTargets="PrepareForTest" Condition="$(DesignTimeBuild) != true"> - - - - - - - - - %(_TargetingPackVersionInfo.PackageVersion) - $(TargetingPackVersionPrefix) - - - - - - - RestoreAdditionalProjectSources=$([MSBuild]::Escape("$(RestoreAdditionalProjectSources);$(ArtifactsShippingPackagesDir);$(ArtifactsNonShippingPackagesDir)")); @@ -33,8 +11,8 @@ MicrosoftNETCoreAppRefPackageVersion=$(MicrosoftNETCoreAppRefPackageVersion); MicrosoftNETCorePlatformsPackageVersion=$(MicrosoftNETCorePlatformsPackageVersion); MicrosoftNETSdkRazorPackageVersion=$(MicrosoftNETSdkRazorPackageVersion); - MicrosoftAspNetCoreAppRefPackageVersion=$(MicrosoftAspNetCoreAppRefPackageVersion); - MicrosoftAspNetCoreAppRuntimePackageVersion=@(_RuntimePackageVersionInfo->'%(PackageVersion)'); + MicrosoftAspNetCoreAppRefPackageVersion=$(TargetingPackVersion); + MicrosoftAspNetCoreAppRuntimePackageVersion=$(SharedFxVersion); SupportedRuntimeIdentifiers=$(SupportedRuntimeIdentifiers.Trim()); DefaultNetCoreTargetFramework=$(DefaultNetCoreTargetFramework); RepoRoot=$(RepoRoot); diff --git a/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Client/ComponentsWebAssembly-CSharp.Client.csproj b/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Client/ComponentsWebAssembly-CSharp.Client.csproj new file mode 100644 index 000000000000..54cd8e9afc62 --- /dev/null +++ b/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Client/ComponentsWebAssembly-CSharp.Client.csproj @@ -0,0 +1,36 @@ + + + + netstandard2.1 + 3.0 + + service-worker-assets.js + + + $(AssemblyName.Replace(' ', '_')) + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/ComponentsWebAssembly-CSharp.Server.csproj b/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/ComponentsWebAssembly-CSharp.Server.csproj new file mode 100644 index 000000000000..818f15df4311 --- /dev/null +++ b/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/ComponentsWebAssembly-CSharp.Server.csproj @@ -0,0 +1,46 @@ + + + + netcoreapp3.1 + ComponentsWebAssembly-CSharp.Server-53bc9b9d-9d6a-45d4-8429-2a2761773502 + 0 + 1 + True + ComponentsWebAssembly-CSharp.Server + $(AssemblyName.Replace(' ', '_')) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Shared/ComponentsWebAssembly-CSharp.Shared.csproj b/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Shared/ComponentsWebAssembly-CSharp.Shared.csproj new file mode 100644 index 000000000000..d4c395e8cb78 --- /dev/null +++ b/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Shared/ComponentsWebAssembly-CSharp.Shared.csproj @@ -0,0 +1,7 @@ + + + + netstandard2.1 + + + diff --git a/src/ProjectTemplates/Web.ProjectTemplates/BlazorServerWeb-CSharp.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/BlazorServerWeb-CSharp.csproj.in index bfebf3e0f20e..bcb72c3a348e 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/BlazorServerWeb-CSharp.csproj.in +++ b/src/ProjectTemplates/Web.ProjectTemplates/BlazorServerWeb-CSharp.csproj.in @@ -24,6 +24,7 @@ + diff --git a/src/ProjectTemplates/Web.ProjectTemplates/ComponentsWebAssembly-CSharp.Server.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/ComponentsWebAssembly-CSharp.Server.csproj.in index c424c7f61450..92621f0536c5 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/ComponentsWebAssembly-CSharp.Server.csproj.in +++ b/src/ProjectTemplates/Web.ProjectTemplates/ComponentsWebAssembly-CSharp.Server.csproj.in @@ -39,6 +39,7 @@ + diff --git a/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj b/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj index f7a25baba975..641dc3b9682b 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj +++ b/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj @@ -19,6 +19,7 @@ MicrosoftExtensionsHostingPackageVersion=$(MicrosoftExtensionsHostingPackageVersion); MicrosoftExtensionsHttpPackageVersion=$(MicrosoftExtensionsHttpPackageVersion); MicrosoftIdentityWebPackageVersion=$(MicrosoftIdentityWebPackageVersion); + MicrosoftIdentityWebMicrosoftGraphPackageVersion=$(MicrosoftIdentityWebMicrosoftGraphPackageVersion); MicrosoftIdentityWebUIPackageVersion=$(MicrosoftIdentityWebUIPackageVersion); MicrosoftNETCoreAppRuntimeVersion=$(MicrosoftNETCoreAppRuntimeVersion); SystemNetHttpJsonPackageVersion=$(SystemNetHttpJsonPackageVersion); diff --git a/src/ProjectTemplates/Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in index d7d8786b54d2..58fbc56dd54c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in +++ b/src/ProjectTemplates/Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in @@ -24,6 +24,7 @@ + diff --git a/src/ProjectTemplates/Web.ProjectTemplates/StarterWeb-CSharp.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/StarterWeb-CSharp.csproj.in index 2f77d16ec447..bca0f9a08f62 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/StarterWeb-CSharp.csproj.in +++ b/src/ProjectTemplates/Web.ProjectTemplates/StarterWeb-CSharp.csproj.in @@ -24,6 +24,7 @@ + diff --git a/src/ProjectTemplates/Web.ProjectTemplates/WebApi-CSharp.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/WebApi-CSharp.csproj.in index 064078a06d2f..70dea709afb6 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/WebApi-CSharp.csproj.in +++ b/src/ProjectTemplates/Web.ProjectTemplates/WebApi-CSharp.csproj.in @@ -10,6 +10,7 @@ + diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/Error.cshtml b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/Error.cshtml index 643643715462..6b3b6a193041 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/Error.cshtml +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/Error.cshtml @@ -1,16 +1,42 @@ @page +@model BlazorServerWeb_CSharp.Pages.ErrorModel + + -

Error.

-

An error occurred while processing your request.

+ + + + Error + + + -

Development Mode

-

- Swapping to Development environment will display more detailed information about the error that occurred. -

-

- The Development environment shouldn't be enabled for deployed applications. - It can result in displaying sensitive information from exceptions to end users. - For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development - and restarting the app. -

+ +
+
+

Error.

+

An error occurred while processing your request.

+ + @if (Model.ShowRequestId) + { +

+ Request ID: @Model.RequestId +

+ } + +

Development Mode

+

+ Swapping to the Development environment displays detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

+
+
+ + + diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/Error.cshtml.cs b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/Error.cshtml.cs new file mode 100644 index 000000000000..4c944dc5d82c --- /dev/null +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/Error.cshtml.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Logging; + +namespace BlazorServerWeb_CSharp.Pages +{ + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + [IgnoreAntiforgeryToken] + public class ErrorModel : PageModel + { + public string RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + private readonly ILogger _logger; + + public ErrorModel(ILogger logger) + { + _logger = logger; + } + + public void OnGet() + { + RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + } + } +} diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/Controllers/WeatherForecastController.cs b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/Controllers/WeatherForecastController.cs index b2e43394472c..3067df19f1f8 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/Controllers/WeatherForecastController.cs +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/Controllers/WeatherForecastController.cs @@ -36,9 +36,11 @@ public class WeatherForecastController : ControllerBase }; private readonly ILogger _logger; +#if (OrganizationalAuth || IndividualB2CAuth) // The Web API will only accept tokens 1) for users, and 2) having the "api-scope" scope for this API static readonly string[] scopeRequiredByApi = new string[] { "api-scope" }; +#endif #if (GenerateApi) private readonly IDownstreamWebApi _downstreamWebApi; diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/Pages/Error.cshtml b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/Pages/Error.cshtml index acc46468b652..b1ff51af394a 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/Pages/Error.cshtml +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/Pages/Error.cshtml @@ -1,27 +1,42 @@ @page @model ComponentsWebAssembly_CSharp.Server.Pages.ErrorModel -@{ - Layout = "_Layout"; - ViewData["Title"] = "Error"; -} -

Error.

-

An error occurred while processing your request.

+ + -@if (Model.ShowRequestId) -{ -

- Request ID: @Model.RequestId -

-} + + + + Error + + + -

Development Mode

-

- Swapping to the Development environment displays detailed information about the error that occurred. -

-

- The Development environment shouldn't be enabled for deployed applications. - It can result in displaying sensitive information from exceptions to end users. - For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development - and restarting the app. -

+ +
+
+

Error.

+

An error occurred while processing your request.

+ + @if (Model.ShowRequestId) + { +

+ Request ID: @Model.RequestId +

+ } + +

Development Mode

+

+ Swapping to the Development environment displays detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

+
+
+ + + diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/en/strings.json index a4f99a9bc2cd..7bdf8df924ff 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "Empty", + "name": "ASP.NET Core Empty", "description": "An empty project template for creating an ASP.NET Core application. This template does not have any content in it." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/vs-2017.3.host.json index a4dca6b104d5..6718a8c95e20 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "Empty", + "text": "ASP.NET Core Empty", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1011" }, diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/en/strings.json index a4f99a9bc2cd..7bdf8df924ff 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "Empty", + "name": "ASP.NET Core Empty", "description": "An empty project template for creating an ASP.NET Core application. This template does not have any content in it." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/vs-2017.3.host.json index 8c47ac37b979..7f20f69ad8db 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "Empty", + "text": "ASP.NET Core Empty", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1011" }, diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/en/strings.json index b732b471d47b..05dbb20aa47c 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "gRPC Service", + "name": "ASP.NET Core gRPC Service", "description": "A project template for creating a gRPC ASP.NET Core service." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/vs-2017.3.host.json index 4ae9d5d72221..86de494c1677 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/GrpcService-CSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "gRPC Service", + "text": "ASP.NET Core gRPC Service", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1027" }, diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/template.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/template.json index 5a6a957a2ca7..f65801a554ef 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/template.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/.template.config/template.json @@ -33,6 +33,7 @@ "exclude": [ "_Imports.razor", "Component1.razor", + "Component1.razor.css", "ExampleJsInterop.cs", "wwwroot/**" ] diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/Component1.razor.css b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/Component1.razor.css new file mode 100644 index 000000000000..c6afca404296 --- /dev/null +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/Component1.razor.css @@ -0,0 +1,6 @@ +.my-component { + border: 2px dashed red; + padding: 1em; + margin: 1em 0; + background-image: url('background.png'); +} diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/wwwroot/styles.css b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/wwwroot/styles.css deleted file mode 100644 index ebd14018bd01..000000000000 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/wwwroot/styles.css +++ /dev/null @@ -1,11 +0,0 @@ -/* - This file is to show how CSS and other static resources (such as images) can be - used from a library project/package. -*/ - -.my-component { - border: 2px dashed red; - padding: 1em; - margin: 1em 0; - background-image: url('background.png'); -} diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/en/strings.json index 7372441def04..57428cdb80a7 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "Web Application", + "name": "ASP.NET Core Web App", "description": "A project template for creating an ASP.NET Core application with example ASP.NET Razor Pages content." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/vs-2017.3.host.json index 8ee1e7b87744..779df6d197af 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "Web Application", + "text": "ASP.NET Core Web App", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1017" }, diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/en/strings.json index 73131cff4c9e..8ac3d0d78320 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "Web Application (Model-View-Controller)", + "name": "ASP.NET Core Web App (Model-View-Controller)", "description": "A project template for creating an ASP.NET Core application with example ASP.NET Core MVC Views and Controllers. This template can also be used for RESTful HTTP services." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/vs-2017.3.host.json index 98149ec9bae1..098b1e5e62ca 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "Web Application (Model-View-Controller)", + "text": "ASP.NET Core Web App (Model-View-Controller)", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1015" }, diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/en/strings.json index 9d10e71706da..a81d06e5c8a3 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "API", + "name": "ASP.NET Core Web API", "description": "A project template for creating an ASP.NET Core application with an example Controller for a RESTful HTTP service. This template can also be used for ASP.NET Core MVC Views and Controllers." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/template.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/template.json index 78260944d261..50ec85357d63 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/template.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/template.json @@ -104,7 +104,7 @@ "replaces": "api-scope", "defaultValue": "access_as_user", "description": "The API scope the client needs to request to provision an access token. (use with IndividualB2C, SingleOrg)." - }, + }, "TenantId": { "type": "parameter", "datatype": "string", diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/vs-2017.3.host.json index e2241ce31a45..b740c174dac2 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "API", + "text": "ASP.NET Core Web API", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1013" }, diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/Controllers/WeatherForecastController.cs b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/Controllers/WeatherForecastController.cs index 0cf62870ff7c..2c725ae0a954 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/Controllers/WeatherForecastController.cs +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/Controllers/WeatherForecastController.cs @@ -35,9 +35,11 @@ public class WeatherForecastController : ControllerBase }; private readonly ILogger _logger; +#if (OrganizationalAuth || IndividualB2CAuth) // The Web API will only accept tokens 1) for users, and 2) having the "api-scope" scope for this API static readonly string[] scopeRequiredByApi = new string[] { "api-scope" }; +#endif #if (GenerateApi) private readonly IDownstreamWebApi _downstreamWebApi; diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/en/strings.json index 9d10e71706da..a81d06e5c8a3 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "API", + "name": "ASP.NET Core Web API", "description": "A project template for creating an ASP.NET Core application with an example Controller for a RESTful HTTP service. This template can also be used for ASP.NET Core MVC Views and Controllers." } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/vs-2017.3.host.json index c8ed19b9a0a2..d4a9b9058bf6 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-FSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "API", + "text": "ASP.NET Core Web API", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1013" }, diff --git a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/.template.config/en/strings.json index a993f86deb19..3fc350ed59e0 100644 --- a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "Angular", + "name": "ASP.NET Core with Angular", "description": "A project template for creating an ASP.NET Core application with Angular" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/.template.config/vs-2017.3.host.json index 8e5e4ccc0cbc..de9473c36707 100644 --- a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "Angular", + "text": "ASP.NET Core with Angular", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1100" }, diff --git a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/en/strings.json index fd5d6d4e58ce..8dbaae11f6d1 100644 --- a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "React.js", + "name": "ASP.NET Core with React.js", "description": "A project template for creating an ASP.NET Core application with React.js" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/vs-2017.3.host.json index fddabc6a2525..ded765abe567 100644 --- a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "React.js", + "text": "ASP.NET Core with React.js", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1500" }, diff --git a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/.template.config/en/strings.json b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/.template.config/en/strings.json index 1642995d41ba..10ecb9afea8e 100644 --- a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/.template.config/en/strings.json +++ b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/.template.config/en/strings.json @@ -1,7 +1,7 @@ { "version": "1.0.0.0", "strings": { - "name": "React.js and Redux", + "name": "ASP.NET Core with React.js and Redux", "description": "A project template for creating an ASP.NET Core application with React.js and Redux" } } \ No newline at end of file diff --git a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/.template.config/vs-2017.3.host.json b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/.template.config/vs-2017.3.host.json index dbe1caf16659..b628bc947ec5 100644 --- a/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/.template.config/vs-2017.3.host.json +++ b/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/.template.config/vs-2017.3.host.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/vs-2017.3.host", "name": { - "text": "React.js and Redux", + "text": "ASP.NET Core with React.js and Redux", "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", "id": "1400" }, diff --git a/src/ProjectTemplates/test/Infrastructure/GenerateTestProps.targets b/src/ProjectTemplates/test/Infrastructure/GenerateTestProps.targets index 10ce80aec393..ed8f3b941b17 100644 --- a/src/ProjectTemplates/test/Infrastructure/GenerateTestProps.targets +++ b/src/ProjectTemplates/test/Infrastructure/GenerateTestProps.targets @@ -3,28 +3,6 @@ BeforeTargets="CoreCompile" DependsOnTargets="PrepareForTest" Condition="$(DesignTimeBuild) != true"> - - - - - - - - - %(_TargetingPackVersionInfo.PackageVersion) - $(TargetingPackVersionPrefix) - - - - - - - RestoreAdditionalProjectSources=$([MSBuild]::Escape("$(RestoreAdditionalProjectSources);$(ArtifactsShippingPackagesDir);$(ArtifactsNonShippingPackagesDir)")); @@ -33,8 +11,8 @@ MicrosoftNETCoreAppRefPackageVersion=$(MicrosoftNETCoreAppRefPackageVersion); MicrosoftNETCorePlatformsPackageVersion=$(MicrosoftNETCorePlatformsPackageVersion); MicrosoftNETSdkRazorPackageVersion=$(MicrosoftNETSdkRazorPackageVersion); - MicrosoftAspNetCoreAppRefPackageVersion=$(MicrosoftAspNetCoreAppRefPackageVersion); - MicrosoftAspNetCoreAppRuntimePackageVersion=@(_RuntimePackageVersionInfo->'%(PackageVersion)'); + MicrosoftAspNetCoreAppRefPackageVersion=$(TargetingPackVersion); + MicrosoftAspNetCoreAppRuntimePackageVersion=$(SharedFxVersion); SupportedRuntimeIdentifiers=$(SupportedRuntimeIdentifiers.Trim()); DefaultNetCoreTargetFramework=$(DefaultNetCoreTargetFramework); RepoRoot=$(RepoRoot); diff --git a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/PublicAPI.Shipped.txt b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/PublicAPI.Unshipped.txt b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..163cddf34207 --- /dev/null +++ b/src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/PublicAPI.Unshipped.txt @@ -0,0 +1,81 @@ +#nullable enable +Microsoft.AspNetCore.Mvc.Razor.Extensions.IInjectTargetExtension +Microsoft.AspNetCore.Mvc.Razor.Extensions.IViewComponentTagHelperTargetExtension +Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectDirective +Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode +Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode.InjectIntermediateNode() -> void +Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectTargetExtension +Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectTargetExtension.InjectTargetExtension() -> void +Microsoft.AspNetCore.Mvc.Razor.Extensions.ModelDirective +Microsoft.AspNetCore.Mvc.Razor.Extensions.ModelExpressionPass +Microsoft.AspNetCore.Mvc.Razor.Extensions.ModelExpressionPass.ModelExpressionPass() -> void +Microsoft.AspNetCore.Mvc.Razor.Extensions.MvcViewDocumentClassifierPass +Microsoft.AspNetCore.Mvc.Razor.Extensions.MvcViewDocumentClassifierPass.MvcViewDocumentClassifierPass() -> void +Microsoft.AspNetCore.Mvc.Razor.Extensions.PageDirective +Microsoft.AspNetCore.Mvc.Razor.Extensions.PagesPropertyInjectionPass +Microsoft.AspNetCore.Mvc.Razor.Extensions.PagesPropertyInjectionPass.PagesPropertyInjectionPass() -> void +Microsoft.AspNetCore.Mvc.Razor.Extensions.RazorExtensions +Microsoft.AspNetCore.Mvc.Razor.Extensions.RazorPageDocumentClassifierPass +Microsoft.AspNetCore.Mvc.Razor.Extensions.RazorPageDocumentClassifierPass.RazorPageDocumentClassifierPass() -> void +Microsoft.AspNetCore.Mvc.Razor.Extensions.TagHelperDescriptorExtensions +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperConventions +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperDescriptorProvider +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperDescriptorProvider.Order.get -> int +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperDescriptorProvider.Order.set -> void +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperDescriptorProvider.ViewComponentTagHelperDescriptorProvider() -> void +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode.ViewComponentTagHelperIntermediateNode() -> void +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperMetadata +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperPass +Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperPass.ViewComponentTagHelperPass() -> void +override Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperPass.Order.get -> int +~Microsoft.AspNetCore.Mvc.Razor.Extensions.IInjectTargetExtension.WriteInjectProperty(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode node) -> void +~Microsoft.AspNetCore.Mvc.Razor.Extensions.IViewComponentTagHelperTargetExtension.WriteViewComponentTagHelper(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode node) -> void +~Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode.MemberName.get -> string +~Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode.MemberName.set -> void +~Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode.TypeName.get -> string +~Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode.TypeName.set -> void +~Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectTargetExtension.WriteInjectProperty(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode node) -> void +~Microsoft.AspNetCore.Mvc.Razor.Extensions.PageDirective.DirectiveNode.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode +~Microsoft.AspNetCore.Mvc.Razor.Extensions.PageDirective.RouteTemplate.get -> string +~Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperDescriptorProvider.Execute(Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext context) -> void +~Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode.ClassName.get -> string +~Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode.ClassName.set -> void +~Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode.TagHelper.get -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode.TagHelper.set -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.ModelExpressionPass.ExecuteCore(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.MvcViewDocumentClassifierPass.DocumentKind.get -> string +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.MvcViewDocumentClassifierPass.IsMatch(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> bool +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.MvcViewDocumentClassifierPass.OnDocumentStructureCreated(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode namespace, Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode class, Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode method) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.PagesPropertyInjectionPass.ExecuteCore(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.RazorPageDocumentClassifierPass.DocumentKind.get -> string +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.RazorPageDocumentClassifierPass.IsMatch(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> bool +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.RazorPageDocumentClassifierPass.OnDocumentStructureCreated(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode namespace, Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode class, Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode method) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperPass.ExecuteCore(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectDirective.Register(Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectDirective.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.ModelDirective.GetModelType(Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode document) -> string +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.ModelDirective.Register(Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.ModelDirective.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.PageDirective.Register(Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.PageDirective.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.PageDirective.TryGetPageDirective(Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode, out Microsoft.AspNetCore.Mvc.Razor.Extensions.PageDirective pageDirective) -> bool +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.RazorExtensions.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> void +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.TagHelperDescriptorExtensions.GetViewComponentName(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor tagHelper) -> string +~static Microsoft.AspNetCore.Mvc.Razor.Extensions.TagHelperDescriptorExtensions.IsViewComponentKind(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor tagHelper) -> bool +~static readonly Microsoft.AspNetCore.Mvc.Razor.Extensions.InjectDirective.Directive -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static readonly Microsoft.AspNetCore.Mvc.Razor.Extensions.ModelDirective.Directive -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static readonly Microsoft.AspNetCore.Mvc.Razor.Extensions.MvcViewDocumentClassifierPass.MvcViewDocumentKind -> string +~static readonly Microsoft.AspNetCore.Mvc.Razor.Extensions.PageDirective.Directive -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static readonly Microsoft.AspNetCore.Mvc.Razor.Extensions.RazorPageDocumentClassifierPass.RazorPageDocumentKind -> string +~static readonly Microsoft.AspNetCore.Mvc.Razor.Extensions.RazorPageDocumentClassifierPass.RouteTemplateKey -> string +~static readonly Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperConventions.Kind -> string +~static readonly Microsoft.AspNetCore.Mvc.Razor.Extensions.ViewComponentTagHelperMetadata.Name -> string diff --git a/src/Razor/Microsoft.AspNetCore.Razor.Language/src/PublicAPI.Shipped.txt b/src/Razor/Microsoft.AspNetCore.Razor.Language/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Razor/Microsoft.AspNetCore.Razor.Language/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Razor/Microsoft.AspNetCore.Razor.Language/src/PublicAPI.Unshipped.txt b/src/Razor/Microsoft.AspNetCore.Razor.Language/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..585d72ed4f25 --- /dev/null +++ b/src/Razor/Microsoft.AspNetCore.Razor.Language/src/PublicAPI.Unshipped.txt @@ -0,0 +1,1621 @@ +#nullable enable +Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor +Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.AllowedChildTagDescriptor() -> void +Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.HasErrors.get -> bool +Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptorBuilder +Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptorBuilder.AllowedChildTagDescriptorBuilder() -> void +Microsoft.AspNetCore.Razor.Language.AssemblyExtension +Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.AttributeStructure.DoubleQuotes = 0 -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.AttributeStructure.Minimized = 3 -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.AttributeStructure.NoQuotes = 2 -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.AttributeStructure.SingleQuotes = 1 -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.CaseSensitive.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.CaseSensitive.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.HasErrors.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.HasIndexer.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.HasIndexer.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsBooleanProperty.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsBooleanProperty.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsEnum.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsEnum.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsIndexerBooleanProperty.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsIndexerBooleanProperty.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsIndexerStringProperty.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsIndexerStringProperty.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsStringProperty.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IsStringProperty.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.BoundAttributeDescriptorBuilder() -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilderExtensions +Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorExtensions +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.CaseSensitive.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.CaseSensitive.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.HasErrors.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.IsBooleanProperty.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.IsBooleanProperty.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.IsEnum.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.IsEnum.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.IsStringProperty.get -> bool +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.IsStringProperty.set -> void +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder +Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.BoundAttributeParameterDescriptorBuilder() -> void +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.CodeRenderingContext() -> void +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget.CodeTarget() -> void +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTargetBuilder +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTargetBuilder.CodeTargetBuilder() -> void +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.CodeWriter() -> void +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.CurrentIndent.get -> int +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.CurrentIndent.set -> void +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.Length.get -> int +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.Location.get -> Microsoft.AspNetCore.Razor.Language.SourceLocation +Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.this[int index].get -> char +Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter +Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.DesignTimeNodeWriter() -> void +Microsoft.AspNetCore.Razor.Language.CodeGeneration.DocumentWriter +Microsoft.AspNetCore.Razor.Language.CodeGeneration.DocumentWriter.DocumentWriter() -> void +Microsoft.AspNetCore.Razor.Language.CodeGeneration.ICodeTargetExtension +Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter +Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.IntermediateNodeWriter() -> void +Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma +Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma.EndLineIndex.get -> int +Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma.Equals(Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma other) -> bool +Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma.LineCount.get -> int +Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma.StartLineIndex.get -> int +Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter +Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.RuntimeNodeWriter() -> void +Microsoft.AspNetCore.Razor.Language.Components.ComponentCodeDirective +Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.DirectiveDescriptor() -> void +Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions +Microsoft.AspNetCore.Razor.Language.DirectiveKind +Microsoft.AspNetCore.Razor.Language.DirectiveKind.CodeBlock = 2 -> Microsoft.AspNetCore.Razor.Language.DirectiveKind +Microsoft.AspNetCore.Razor.Language.DirectiveKind.RazorBlock = 1 -> Microsoft.AspNetCore.Razor.Language.DirectiveKind +Microsoft.AspNetCore.Razor.Language.DirectiveKind.SingleLine = 0 -> Microsoft.AspNetCore.Razor.Language.DirectiveKind +Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor +Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor.DirectiveTokenDescriptor() -> void +Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind +Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind.Attribute = 4 -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind +Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind.Boolean = 5 -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind +Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind.Member = 2 -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind +Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind.Namespace = 1 -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind +Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind.String = 3 -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind +Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind.Type = 0 -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind +Microsoft.AspNetCore.Razor.Language.DirectiveUsage +Microsoft.AspNetCore.Razor.Language.DirectiveUsage.FileScopedMultipleOccurring = 2 -> Microsoft.AspNetCore.Razor.Language.DirectiveUsage +Microsoft.AspNetCore.Razor.Language.DirectiveUsage.FileScopedSinglyOccurring = 1 -> Microsoft.AspNetCore.Razor.Language.DirectiveUsage +Microsoft.AspNetCore.Razor.Language.DirectiveUsage.Unrestricted = 0 -> Microsoft.AspNetCore.Razor.Language.DirectiveUsage +Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase +Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase.DocumentClassifierPassBase() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode.DefaultTagHelperBodyIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode.TagMode.get -> Microsoft.AspNetCore.Razor.Language.TagMode +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode.TagMode.set -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.DefaultTagHelperCreateIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperExecuteIntermediateNode +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperExecuteIntermediateNode.DefaultTagHelperExecuteIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.AttributeStructure.get -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.AttributeStructure.set -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.DefaultTagHelperHtmlAttributeIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.AttributeStructure.get -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.AttributeStructure.set -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.DefaultTagHelperPropertyIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.IsIndexerNameMatch.get -> bool +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.IsIndexerNameMatch.set -> void +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperRuntimeIntermediateNode +Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperRuntimeIntermediateNode.DefaultTagHelperRuntimeIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.FunctionsDirective +Microsoft.AspNetCore.Razor.Language.Extensions.FunctionsDirectivePass +Microsoft.AspNetCore.Razor.Language.Extensions.FunctionsDirectivePass.FunctionsDirectivePass() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.IDefaultTagHelperTargetExtension +Microsoft.AspNetCore.Razor.Language.Extensions.ISectionTargetExtension +Microsoft.AspNetCore.Razor.Language.Extensions.ITemplateTargetExtension +Microsoft.AspNetCore.Razor.Language.Extensions.InheritsDirective +Microsoft.AspNetCore.Razor.Language.Extensions.InheritsDirectivePass +Microsoft.AspNetCore.Razor.Language.Extensions.InheritsDirectivePass.InheritsDirectivePass() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.NamespaceDirective +Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode +Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode.RazorCompiledItemMetadataAttributeIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.SectionDirective +Microsoft.AspNetCore.Razor.Language.Extensions.SectionDirectivePass +Microsoft.AspNetCore.Razor.Language.Extensions.SectionDirectivePass.SectionDirectivePass() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode +Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode.SectionIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.SectionTargetExtension +Microsoft.AspNetCore.Razor.Language.Extensions.SectionTargetExtension.SectionTargetExtension() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.TemplateIntermediateNode +Microsoft.AspNetCore.Razor.Language.Extensions.TemplateIntermediateNode.TemplateIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Extensions.TemplateTargetExtension +Microsoft.AspNetCore.Razor.Language.Extensions.TemplateTargetExtension.TemplateTargetExtension() -> void +Microsoft.AspNetCore.Razor.Language.FileKinds +Microsoft.AspNetCore.Razor.Language.HtmlConventions +Microsoft.AspNetCore.Razor.Language.IConfigureRazorCodeGenerationOptionsFeature +Microsoft.AspNetCore.Razor.Language.IConfigureRazorCodeGenerationOptionsFeature.Order.get -> int +Microsoft.AspNetCore.Razor.Language.IConfigureRazorParserOptionsFeature +Microsoft.AspNetCore.Razor.Language.IConfigureRazorParserOptionsFeature.Order.get -> int +Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.Kind.get -> Microsoft.AspNetCore.Razor.Language.DirectiveKind +Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.Usage.get -> Microsoft.AspNetCore.Razor.Language.DirectiveUsage +Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.Usage.set -> void +Microsoft.AspNetCore.Razor.Language.IImportProjectFeature +Microsoft.AspNetCore.Razor.Language.IRazorCSharpLoweringPhase +Microsoft.AspNetCore.Razor.Language.IRazorCodeGenerationOptionsFeature +Microsoft.AspNetCore.Razor.Language.IRazorDirectiveClassifierPass +Microsoft.AspNetCore.Razor.Language.IRazorDirectiveClassifierPass.Order.get -> int +Microsoft.AspNetCore.Razor.Language.IRazorDirectiveClassifierPhase +Microsoft.AspNetCore.Razor.Language.IRazorDirectiveFeature +Microsoft.AspNetCore.Razor.Language.IRazorDocumentClassifierPass +Microsoft.AspNetCore.Razor.Language.IRazorDocumentClassifierPass.Order.get -> int +Microsoft.AspNetCore.Razor.Language.IRazorDocumentClassifierPhase +Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder +Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder.DesignTime.get -> bool +Microsoft.AspNetCore.Razor.Language.IRazorEngineFeature +Microsoft.AspNetCore.Razor.Language.IRazorEnginePhase +Microsoft.AspNetCore.Razor.Language.IRazorFeature +Microsoft.AspNetCore.Razor.Language.IRazorIntermediateNodeLoweringPhase +Microsoft.AspNetCore.Razor.Language.IRazorOptimizationPass +Microsoft.AspNetCore.Razor.Language.IRazorOptimizationPass.Order.get -> int +Microsoft.AspNetCore.Razor.Language.IRazorOptimizationPhase +Microsoft.AspNetCore.Razor.Language.IRazorParserOptionsFeature +Microsoft.AspNetCore.Razor.Language.IRazorParsingPhase +Microsoft.AspNetCore.Razor.Language.IRazorProjectEngineFeature +Microsoft.AspNetCore.Razor.Language.IRazorTagHelperBinderPhase +Microsoft.AspNetCore.Razor.Language.IRazorTargetExtensionFeature +Microsoft.AspNetCore.Razor.Language.ITagHelperDescriptorProvider +Microsoft.AspNetCore.Razor.Language.ITagHelperDescriptorProvider.Order.get -> int +Microsoft.AspNetCore.Razor.Language.ITagHelperFeature +Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode.CSharpCodeAttributeValueIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeIntermediateNode.CSharpCodeIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode.CSharpExpressionAttributeValueIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode.CSharpExpressionIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.ClassDeclarationIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.CommonAnnotations +Microsoft.AspNetCore.Razor.Language.Intermediate.CommonAnnotations.DefaultTagHelperExtension +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.AttributeStructure.get -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.AttributeStructure.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.ComponentAttributeIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.ComponentChildContentIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.IsParameterized.get -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.ComponentIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode.ComponentTypeInferenceMethodIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode.DirectiveIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode.DirectiveTokenIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.DocumentIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNodeExtensions +Microsoft.AspNetCore.Razor.Language.Intermediate.ExtensionIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.ExtensionIntermediateNode.ExtensionIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.FieldDeclarationIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.HtmlAttributeIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode.HtmlAttributeValueIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlContentIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlContentIntermediateNode.HtmlContentIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode.HasDiagnostics.get -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode.IntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode.Source.get -> Microsoft.AspNetCore.Razor.Language.SourceSpan? +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode.Source.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Clear() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Count.get -> int +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Enumerator +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Enumerator.Dispose() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Enumerator.MoveNext() -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Enumerator.Reset() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.GetEnumerator() -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Enumerator +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.IntermediateNodeCollection() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.IsReadOnly.get -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.RemoveAt(int index) -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeExtensions +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter.IntermediateNodeFormatter() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.Remove() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.IntermediateNodeVisitor() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeWalker +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeWalker.IntermediateNodeWalker() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.IntermediateToken() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.IsCSharp.get -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.IsHtml.get -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.Kind.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.TokenKind +Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.Kind.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode.MalformedDirectiveIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupBlockIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupBlockIntermediateNode.MarkupBlockIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.MarkupElementIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.MemberDeclarationIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.MemberDeclarationIntermediateNode.MemberDeclarationIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.MethodDeclarationIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.MethodParameter +Microsoft.AspNetCore.Razor.Language.Intermediate.MethodParameter.MethodParameter() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode.NamespaceDeclarationIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode.PropertyDeclarationIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.IsComponentCapture.get -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.SetKeyIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.SplatIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.SplatIntermediateNode.SplatIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperBodyIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperBodyIntermediateNode.TagHelperBodyIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.AttributeStructure.get -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.AttributeStructure.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.IsIndexerNameMatch.get -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.IsIndexerNameMatch.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.TagHelperDirectiveAttributeIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.AttributeStructure.get -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.AttributeStructure.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.IsIndexerNameMatch.get -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.IsIndexerNameMatch.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.TagHelperDirectiveAttributeParameterIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode.AttributeStructure.get -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode.AttributeStructure.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode.TagHelperHtmlAttributeIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.TagHelperIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.TagMode.get -> Microsoft.AspNetCore.Razor.Language.TagMode +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.TagMode.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.AttributeStructure.get -> Microsoft.AspNetCore.Razor.Language.AttributeStructure +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.AttributeStructure.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.IsIndexerNameMatch.get -> bool +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.IsIndexerNameMatch.set -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.TagHelperPropertyIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.TokenKind +Microsoft.AspNetCore.Razor.Language.Intermediate.TokenKind.CSharp = 1 -> Microsoft.AspNetCore.Razor.Language.Intermediate.TokenKind +Microsoft.AspNetCore.Razor.Language.Intermediate.TokenKind.Html = 2 -> Microsoft.AspNetCore.Razor.Language.Intermediate.TokenKind +Microsoft.AspNetCore.Razor.Language.Intermediate.TokenKind.Unknown = 0 -> Microsoft.AspNetCore.Razor.Language.Intermediate.TokenKind +Microsoft.AspNetCore.Razor.Language.Intermediate.TypeParameter +Microsoft.AspNetCore.Razor.Language.Intermediate.TypeParameter.TypeParameter() -> void +Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode +Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode.UsingDirectiveIntermediateNode() -> void +Microsoft.AspNetCore.Razor.Language.IntermediateNodePassBase +Microsoft.AspNetCore.Razor.Language.IntermediateNodePassBase.IntermediateNodePassBase() -> void +Microsoft.AspNetCore.Razor.Language.ItemCollection +Microsoft.AspNetCore.Razor.Language.ItemCollection.Clear() -> void +Microsoft.AspNetCore.Razor.Language.ItemCollection.Count.get -> int +Microsoft.AspNetCore.Razor.Language.ItemCollection.IsReadOnly.get -> bool +Microsoft.AspNetCore.Razor.Language.ItemCollection.ItemCollection() -> void +Microsoft.AspNetCore.Razor.Language.ProvideRazorExtensionInitializerAttribute +Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument +Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument.RazorCSharpDocument() -> void +Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +Microsoft.AspNetCore.Razor.Language.RazorCodeDocument.RazorCodeDocument() -> void +Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions +Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.RazorCodeGenerationOptions() -> void +Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder +Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.RazorCodeGenerationOptionsBuilder() -> void +Microsoft.AspNetCore.Razor.Language.RazorConfiguration +Microsoft.AspNetCore.Razor.Language.RazorConfiguration.RazorConfiguration() -> void +Microsoft.AspNetCore.Razor.Language.RazorDiagnostic +Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.RazorDiagnostic() -> void +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Clear() -> void +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Count.get -> int +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Enumerator +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Enumerator.Dispose() -> void +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Enumerator.MoveNext() -> bool +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Enumerator.Reset() -> void +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.GetEnumerator() -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Enumerator +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.IsReadOnly.get -> bool +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.RazorDiagnosticCollection() -> void +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.RemoveAt(int index) -> void +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor.Severity.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticSeverity +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticSeverity +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticSeverity.Error = 3 -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticSeverity +Microsoft.AspNetCore.Razor.Language.RazorDiagnosticSeverity.Warning = 2 -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticSeverity +Microsoft.AspNetCore.Razor.Language.RazorEngine +Microsoft.AspNetCore.Razor.Language.RazorEngine.RazorEngine() -> void +Microsoft.AspNetCore.Razor.Language.RazorEngineBuilderExtensions +Microsoft.AspNetCore.Razor.Language.RazorEngineFeatureBase +Microsoft.AspNetCore.Razor.Language.RazorEngineFeatureBase.RazorEngineFeatureBase() -> void +Microsoft.AspNetCore.Razor.Language.RazorEngineFeatureBase.ThrowForMissingDocumentDependency(TDocumentDependency value) -> void +Microsoft.AspNetCore.Razor.Language.RazorEngineFeatureBase.ThrowForMissingFeatureDependency(TEngineDependency value) -> void +Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase +Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.GetRequiredFeature() -> T +Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.RazorEnginePhaseBase() -> void +Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.ThrowForMissingDocumentDependency(TDocumentDependency value) -> void +Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.ThrowForMissingFeatureDependency(TEngineDependency value) -> void +Microsoft.AspNetCore.Razor.Language.RazorExtension +Microsoft.AspNetCore.Razor.Language.RazorExtension.RazorExtension() -> void +Microsoft.AspNetCore.Razor.Language.RazorExtensionInitializer +Microsoft.AspNetCore.Razor.Language.RazorExtensionInitializer.RazorExtensionInitializer() -> void +Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Major.get -> int +Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Minor.get -> int +Microsoft.AspNetCore.Razor.Language.RazorParserOptions +Microsoft.AspNetCore.Razor.Language.RazorParserOptions.RazorParserOptions() -> void +Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder +Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.RazorParserOptionsBuilder() -> void +Microsoft.AspNetCore.Razor.Language.RazorProject +Microsoft.AspNetCore.Razor.Language.RazorProject.RazorProject() -> void +Microsoft.AspNetCore.Razor.Language.RazorProjectEngine +Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.RazorProjectEngine() -> void +Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder.RazorProjectEngineBuilder() -> void +Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions +Microsoft.AspNetCore.Razor.Language.RazorProjectEngineFeatureBase +Microsoft.AspNetCore.Razor.Language.RazorProjectEngineFeatureBase.RazorProjectEngineFeatureBase() -> void +Microsoft.AspNetCore.Razor.Language.RazorProjectFileSystem +Microsoft.AspNetCore.Razor.Language.RazorProjectFileSystem.RazorProjectFileSystem() -> void +Microsoft.AspNetCore.Razor.Language.RazorProjectItem +Microsoft.AspNetCore.Razor.Language.RazorProjectItem.RazorProjectItem() -> void +Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.RazorSourceDocument() -> void +Microsoft.AspNetCore.Razor.Language.RazorSourceDocumentProperties +Microsoft.AspNetCore.Razor.Language.RazorSourceDocumentProperties.RazorSourceDocumentProperties() -> void +Microsoft.AspNetCore.Razor.Language.RazorSourceLineCollection +Microsoft.AspNetCore.Razor.Language.RazorSourceLineCollection.RazorSourceLineCollection() -> void +Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree +Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree.RazorSyntaxTree() -> void +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.CaseSensitive.get -> bool +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.CaseSensitive.set -> void +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.HasErrors.get -> bool +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.NameComparison.get -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.NameComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.NameComparison.set -> void +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.NameComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.NameComparisonMode.FullMatch = 0 -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.NameComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch = 1 -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.NameComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.RequiredAttributeDescriptor() -> void +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparison.get -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparison.set -> void +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode.FullMatch = 1 -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode.None = 0 -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode.PrefixMatch = 2 -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode.SuffixMatch = 3 -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.RequiredAttributeDescriptorBuilder() -> void +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilderExtensions +Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorExtensions +Microsoft.AspNetCore.Razor.Language.SourceChange +Microsoft.AspNetCore.Razor.Language.SourceChange.IsDelete.get -> bool +Microsoft.AspNetCore.Razor.Language.SourceChange.IsInsert.get -> bool +Microsoft.AspNetCore.Razor.Language.SourceChange.IsReplace.get -> bool +Microsoft.AspNetCore.Razor.Language.SourceChange.Span.get -> Microsoft.AspNetCore.Razor.Language.SourceSpan +Microsoft.AspNetCore.Razor.Language.SourceLocation +Microsoft.AspNetCore.Razor.Language.SourceLocation.AbsoluteIndex.get -> int +Microsoft.AspNetCore.Razor.Language.SourceLocation.AbsoluteIndex.set -> void +Microsoft.AspNetCore.Razor.Language.SourceLocation.CharacterIndex.get -> int +Microsoft.AspNetCore.Razor.Language.SourceLocation.CharacterIndex.set -> void +Microsoft.AspNetCore.Razor.Language.SourceLocation.Equals(Microsoft.AspNetCore.Razor.Language.SourceLocation other) -> bool +Microsoft.AspNetCore.Razor.Language.SourceLocation.LineIndex.get -> int +Microsoft.AspNetCore.Razor.Language.SourceLocation.LineIndex.set -> void +Microsoft.AspNetCore.Razor.Language.SourceLocation.SourceLocation(int absoluteIndex, int lineIndex, int characterIndex) -> void +Microsoft.AspNetCore.Razor.Language.SourceMapping +Microsoft.AspNetCore.Razor.Language.SourceMapping.GeneratedSpan.get -> Microsoft.AspNetCore.Razor.Language.SourceSpan +Microsoft.AspNetCore.Razor.Language.SourceMapping.OriginalSpan.get -> Microsoft.AspNetCore.Razor.Language.SourceSpan +Microsoft.AspNetCore.Razor.Language.SourceMapping.SourceMapping(Microsoft.AspNetCore.Razor.Language.SourceSpan originalSpan, Microsoft.AspNetCore.Razor.Language.SourceSpan generatedSpan) -> void +Microsoft.AspNetCore.Razor.Language.SourceSpan +Microsoft.AspNetCore.Razor.Language.SourceSpan.AbsoluteIndex.get -> int +Microsoft.AspNetCore.Razor.Language.SourceSpan.CharacterIndex.get -> int +Microsoft.AspNetCore.Razor.Language.SourceSpan.Equals(Microsoft.AspNetCore.Razor.Language.SourceSpan other) -> bool +Microsoft.AspNetCore.Razor.Language.SourceSpan.Length.get -> int +Microsoft.AspNetCore.Razor.Language.SourceSpan.LineIndex.get -> int +Microsoft.AspNetCore.Razor.Language.SourceSpan.SourceSpan(Microsoft.AspNetCore.Razor.Language.SourceLocation location, int contentLength) -> void +Microsoft.AspNetCore.Razor.Language.SourceSpan.SourceSpan(int absoluteIndex, int length) -> void +Microsoft.AspNetCore.Razor.Language.SourceSpan.SourceSpan(int absoluteIndex, int lineIndex, int characterIndex, int length) -> void +Microsoft.AspNetCore.Razor.Language.TagHelperBinding +Microsoft.AspNetCore.Razor.Language.TagHelperBinding.IsAttributeMatch.get -> bool +Microsoft.AspNetCore.Razor.Language.TagHelperConventions +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.CaseSensitive.get -> bool +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.CaseSensitive.set -> void +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.HasErrors.get -> bool +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.TagHelperDescriptorBuilder() -> void +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilderExtensions +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorExtensions +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext +Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext.TagHelperDescriptorProviderContext() -> void +Microsoft.AspNetCore.Razor.Language.TagHelperDocumentContext +Microsoft.AspNetCore.Razor.Language.TagHelperDocumentContext.TagHelperDocumentContext() -> void +Microsoft.AspNetCore.Razor.Language.TagHelperMetadata +Microsoft.AspNetCore.Razor.Language.TagHelperMetadata.Common +Microsoft.AspNetCore.Razor.Language.TagHelperMetadata.Runtime +Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor +Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.CaseSensitive.get -> bool +Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.CaseSensitive.set -> void +Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.HasErrors.get -> bool +Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.TagMatchingRuleDescriptor() -> void +Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.TagStructure.get -> Microsoft.AspNetCore.Razor.Language.TagStructure +Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.TagStructure.set -> void +Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder +Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.TagMatchingRuleDescriptorBuilder() -> void +Microsoft.AspNetCore.Razor.Language.TagMode +Microsoft.AspNetCore.Razor.Language.TagMode.SelfClosing = 1 -> Microsoft.AspNetCore.Razor.Language.TagMode +Microsoft.AspNetCore.Razor.Language.TagMode.StartTagAndEndTag = 0 -> Microsoft.AspNetCore.Razor.Language.TagMode +Microsoft.AspNetCore.Razor.Language.TagMode.StartTagOnly = 2 -> Microsoft.AspNetCore.Razor.Language.TagMode +Microsoft.AspNetCore.Razor.Language.TagStructure +Microsoft.AspNetCore.Razor.Language.TagStructure.NormalOrSelfClosing = 1 -> Microsoft.AspNetCore.Razor.Language.TagStructure +Microsoft.AspNetCore.Razor.Language.TagStructure.Unspecified = 0 -> Microsoft.AspNetCore.Razor.Language.TagStructure +Microsoft.AspNetCore.Razor.Language.TagStructure.WithoutEndTag = 2 -> Microsoft.AspNetCore.Razor.Language.TagStructure +abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.IsDictionary.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.IsDictionary.set -> void +abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.IsEnum.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.IsEnum.set -> void +abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.IsEnum.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.IsEnum.set -> void +abstract Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.Kind.get -> Microsoft.AspNetCore.Razor.Language.DirectiveKind +abstract Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.Usage.get -> Microsoft.AspNetCore.Razor.Language.DirectiveUsage +abstract Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor.Kind.get -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind +abstract Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor.Optional.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.DesignTime.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.IndentSize.get -> int +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.IndentWithTabs.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.SuppressChecksum.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.DesignTime.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.IndentSize.get -> int +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.IndentSize.set -> void +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.IndentWithTabs.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.IndentWithTabs.set -> void +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.SuppressChecksum.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.SuppressChecksum.set -> void +abstract Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.Severity.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticSeverity +abstract Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.Span.get -> Microsoft.AspNetCore.Razor.Language.SourceSpan +abstract Microsoft.AspNetCore.Razor.Language.RazorParserOptions.DesignTime.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorParserOptions.ParseLeadingDirectives.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.DesignTime.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.ParseLeadingDirectives.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.ParseLeadingDirectives.set -> void +abstract Microsoft.AspNetCore.Razor.Language.RazorProjectItem.Exists.get -> bool +abstract Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.Length.get -> int +abstract Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.this[int position].get -> char +abstract Microsoft.AspNetCore.Razor.Language.RazorSourceLineCollection.Count.get -> int +abstract Microsoft.AspNetCore.Razor.Language.RazorSourceLineCollection.GetLineLength(int index) -> int +abstract Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.NameComparisonMode.get -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.NameComparisonMode +abstract Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.NameComparisonMode.set -> void +abstract Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.ValueComparisonMode.get -> Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ValueComparisonMode +abstract Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.ValueComparisonMode.set -> void +abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Reset() -> void +abstract Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.TagStructure.get -> Microsoft.AspNetCore.Razor.Language.TagStructure +abstract Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.TagStructure.set -> void +override Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase.OnInitialized() -> void +override Microsoft.AspNetCore.Razor.Language.RazorConfiguration.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.SourceChange.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.SourceLocation.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.SourceMapping.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.SourceSpan.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.GetHashCode() -> int +override Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.GetHashCode() -> int +override abstract Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.GetHashCode() -> int +static Microsoft.AspNetCore.Razor.Language.SourceLocation.FromSpan(Microsoft.AspNetCore.Razor.Language.SourceSpan? span) -> Microsoft.AspNetCore.Razor.Language.SourceLocation +static Microsoft.AspNetCore.Razor.Language.SourceLocation.operator !=(Microsoft.AspNetCore.Razor.Language.SourceLocation left, Microsoft.AspNetCore.Razor.Language.SourceLocation right) -> bool +static Microsoft.AspNetCore.Razor.Language.SourceLocation.operator ==(Microsoft.AspNetCore.Razor.Language.SourceLocation left, Microsoft.AspNetCore.Razor.Language.SourceLocation right) -> bool +static Microsoft.AspNetCore.Razor.Language.SourceSpan.operator !=(Microsoft.AspNetCore.Razor.Language.SourceSpan left, Microsoft.AspNetCore.Razor.Language.SourceSpan right) -> bool +static Microsoft.AspNetCore.Razor.Language.SourceSpan.operator ==(Microsoft.AspNetCore.Razor.Language.SourceSpan left, Microsoft.AspNetCore.Razor.Language.SourceSpan right) -> bool +static readonly Microsoft.AspNetCore.Razor.Language.IntermediateNodePassBase.DefaultFeatureOrder -> int +static readonly Microsoft.AspNetCore.Razor.Language.SourceLocation.Undefined -> Microsoft.AspNetCore.Razor.Language.SourceLocation +static readonly Microsoft.AspNetCore.Razor.Language.SourceLocation.Zero -> Microsoft.AspNetCore.Razor.Language.SourceLocation +static readonly Microsoft.AspNetCore.Razor.Language.SourceSpan.Undefined -> Microsoft.AspNetCore.Razor.Language.SourceSpan +virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.AddLinePragma(Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma linePragma) -> void +virtual Microsoft.AspNetCore.Razor.Language.IntermediateNodePassBase.Order.get -> int +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.OmitMinimizedComponentAttributeValues.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.SuppressMetadataAttributes.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.SuppressMetadataAttributes.set -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.SuppressNullabilityEnforcement.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.SuppressPrimaryMethodBody.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.SuppressPrimaryMethodBody.set -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.OmitMinimizedComponentAttributeValues.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.OmitMinimizedComponentAttributeValues.set -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.SetDesignTime(bool designTime) -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.SuppressMetadataAttributes.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.SuppressMetadataAttributes.set -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.SuppressNullabilityEnforcement.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.SuppressNullabilityEnforcement.set -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.SuppressPrimaryMethodBody.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.SuppressPrimaryMethodBody.set -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorEngineFeatureBase.OnInitialized() -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.OnIntialized() -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.SetDesignTime(bool designTime) -> void +virtual Microsoft.AspNetCore.Razor.Language.RazorProjectEngineFeatureBase.OnInitialized() -> void +virtual Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.CaseSensitive.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.CaseSensitive.set -> void +virtual Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext.ExcludeHidden.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext.ExcludeHidden.set -> void +virtual Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext.IncludeDocumentation.get -> bool +virtual Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext.IncludeDocumentation.set -> void +~Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.Diagnostics.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.Diagnostics.set -> void +~Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.DisplayName.get -> string +~Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.DisplayName.set -> void +~Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.Equals(Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor other) -> bool +~Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.Name.get -> string +~Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.Name.set -> void +~Microsoft.AspNetCore.Razor.Language.AssemblyExtension.Assembly.get -> System.Reflection.Assembly +~Microsoft.AspNetCore.Razor.Language.AssemblyExtension.AssemblyExtension(string extensionName, System.Reflection.Assembly assembly) -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.BoundAttributeDescriptor(string kind) -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Diagnostics.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Diagnostics.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.DisplayName.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.DisplayName.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Documentation.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Documentation.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Equals(Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor other) -> bool +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IndexerNamePrefix.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IndexerNamePrefix.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IndexerTypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.IndexerTypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Kind.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Metadata.get -> System.Collections.Generic.IReadOnlyDictionary +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Metadata.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Name.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Name.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.TypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.TypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.BoundAttributeParameterDescriptor(string kind) -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Diagnostics.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Diagnostics.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.DisplayName.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.DisplayName.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Documentation.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Documentation.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Equals(Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor other) -> bool +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Kind.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Metadata.get -> System.Collections.Generic.IReadOnlyDictionary +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Metadata.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Name.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Name.set -> void +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.TypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.TypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.GenerateCode() -> string +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.NewLine.get -> string +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.NewLine.set -> void +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.Write(string value) -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.Write(string value, int startIndex, int count) -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.WriteLine() -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter.WriteLine(string value) -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma.FilePath.get -> string +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma.LinePragma(int startLineIndex, int lineCount, string filePath) -> void +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.TemplateTypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.TemplateTypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase.TargetExtensions.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode.DefaultTagHelperBodyIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperBodyIntermediateNode bodyNode) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode.TagName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode.TagName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.FieldName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.FieldName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.TagHelper.get -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.TagHelper.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.TypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.TypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.AttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.AttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.DefaultTagHelperHtmlAttributeIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode htmlAttributeNode) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.AttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.AttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.BoundAttribute.get -> Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.BoundAttribute.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.DefaultTagHelperPropertyIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode propertyNode) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.FieldName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.FieldName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.PropertyName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.PropertyName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.TagHelper.get -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.TagHelper.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.IDefaultTagHelperTargetExtension.WriteTagHelperBody(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.IDefaultTagHelperTargetExtension.WriteTagHelperCreate(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.IDefaultTagHelperTargetExtension.WriteTagHelperExecute(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperExecuteIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.IDefaultTagHelperTargetExtension.WriteTagHelperHtmlAttribute(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.IDefaultTagHelperTargetExtension.WriteTagHelperProperty(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.IDefaultTagHelperTargetExtension.WriteTagHelperRuntime(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperRuntimeIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.ISectionTargetExtension.WriteSection(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.ITemplateTargetExtension.WriteTemplate(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.TemplateIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode.Key.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode.Key.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode.Value.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode.Value.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode.SectionName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode.SectionName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.SectionTargetExtension.SectionMethodName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.SectionTargetExtension.SectionMethodName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.SectionTargetExtension.WriteSection(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.TemplateTargetExtension.TemplateTypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Extensions.TemplateTargetExtension.TemplateTypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Extensions.TemplateTargetExtension.WriteTemplate(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Extensions.TemplateIntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.IConfigureRazorCodeGenerationOptionsFeature.Configure(Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder options) -> void +~Microsoft.AspNetCore.Razor.Language.IConfigureRazorParserOptionsFeature.Configure(Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder options) -> void +~Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.Build() -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.Description.get -> string +~Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.Description.set -> void +~Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.Directive.get -> string +~Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.DisplayName.get -> string +~Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.DisplayName.set -> void +~Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder.Tokens.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.IImportProjectFeature.GetImports(Microsoft.AspNetCore.Razor.Language.RazorProjectItem projectItem) -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.IRazorCodeGenerationOptionsFeature.GetOptions() -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~Microsoft.AspNetCore.Razor.Language.IRazorDirectiveClassifierPass.Execute(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~Microsoft.AspNetCore.Razor.Language.IRazorDirectiveFeature.Directives.get -> System.Collections.Generic.ICollection +~Microsoft.AspNetCore.Razor.Language.IRazorDocumentClassifierPass.Execute(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder.Build() -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder.Features.get -> System.Collections.Generic.ICollection +~Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder.Phases.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.IRazorEngineFeature.Engine.get -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~Microsoft.AspNetCore.Razor.Language.IRazorEngineFeature.Engine.set -> void +~Microsoft.AspNetCore.Razor.Language.IRazorEnginePhase.Engine.get -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~Microsoft.AspNetCore.Razor.Language.IRazorEnginePhase.Engine.set -> void +~Microsoft.AspNetCore.Razor.Language.IRazorEnginePhase.Execute(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument) -> void +~Microsoft.AspNetCore.Razor.Language.IRazorOptimizationPass.Execute(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~Microsoft.AspNetCore.Razor.Language.IRazorParserOptionsFeature.GetOptions() -> Microsoft.AspNetCore.Razor.Language.RazorParserOptions +~Microsoft.AspNetCore.Razor.Language.IRazorProjectEngineFeature.ProjectEngine.get -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngine +~Microsoft.AspNetCore.Razor.Language.IRazorProjectEngineFeature.ProjectEngine.set -> void +~Microsoft.AspNetCore.Razor.Language.IRazorTargetExtensionFeature.TargetExtensions.get -> System.Collections.Generic.ICollection +~Microsoft.AspNetCore.Razor.Language.ITagHelperDescriptorProvider.Execute(Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext context) -> void +~Microsoft.AspNetCore.Razor.Language.ITagHelperFeature.GetDescriptors() -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode.Prefix.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode.Prefix.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode.Prefix.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode.Prefix.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.BaseType.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.BaseType.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.ClassName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.ClassName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.Interfaces.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.Interfaces.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.Modifiers.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.TypeParameters.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.TypeParameters.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.AttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.AttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.BoundAttribute.get -> Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.BoundAttribute.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.ComponentAttributeIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode directiveAttributeNode) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.ComponentAttributeIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode directiveAttributeParameterNode) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.ComponentAttributeIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode attributeNode) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.ComponentAttributeIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode propertyNode) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.GloballyQualifiedTypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.GloballyQualifiedTypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.PropertyName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.PropertyName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.TagHelper.get -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.TagHelper.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.TryParseEventCallbackTypeArgument(out string argument) -> bool +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.TypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.TypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.AttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.BoundAttribute.get -> Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.BoundAttribute.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.ParameterName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.ParameterName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.TypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.TypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.Attributes.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.Captures.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.ChildContentParameterName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.ChildContentParameterName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.ChildContents.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.Component.get -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.Component.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.SetKeys.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.Splats.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.TagName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.TagName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.TypeArguments.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.TypeInferenceNode.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.TypeInferenceNode.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.TypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.TypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode.BoundAttribute.get -> Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode.BoundAttribute.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode.ComponentTypeArgumentIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode propertyNode) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode.TagHelper.get -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode.TagHelper.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode.TypeParameterName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode.Component.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode.Component.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode.FullTypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode.MethodName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode.MethodName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode.Directive.get -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode.Directive.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode.DirectiveName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode.DirectiveName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode.Tokens.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode.Content.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode.Content.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode.DirectiveToken.get -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode.DirectiveToken.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.DocumentKind.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.DocumentKind.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.Options.get -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.Options.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.Target.get -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget +~Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.Target.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ExtensionIntermediateNode.ReportMissingCodeTargetExtension(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.FieldName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.FieldName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.FieldType.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.FieldType.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.Modifiers.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.SuppressWarnings.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.AttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.AttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.AttributeNameExpression.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.AttributeNameExpression.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.EventUpdatesAttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.EventUpdatesAttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.Prefix.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.Prefix.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.Suffix.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.Suffix.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode.Prefix.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode.Prefix.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IExtensionIntermediateNodeVisitor +~Microsoft.AspNetCore.Razor.Language.Intermediate.IExtensionIntermediateNodeVisitor.VisitExtension(TNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode.Annotations.get -> Microsoft.AspNetCore.Razor.Language.ItemCollection +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode.Diagnostics.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Add(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode item) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.AddRange(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection items) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.AddRange(System.Collections.Generic.IEnumerable items) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Contains(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode item) -> bool +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.CopyTo(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode[] array, int arrayIndex) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Enumerator.Current.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Enumerator.Enumerator(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection collection) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.IndexOf(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode item) -> int +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Insert(int index, Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode item) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.Remove(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode item) -> bool +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.this[int index].get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.this[int index].set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.Deconstruct(out Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode parent, out Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.InsertAfter(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.InsertAfter(System.Collections.Generic.IEnumerable nodes) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.InsertBefore(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.InsertBefore(System.Collections.Generic.IEnumerable nodes) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.IntermediateNodeReference(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode parent, Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.Node.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.Parent.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference.Replace(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeReference +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeWalker.Ancestors.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeWalker.Parent.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode +~Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode.Directive.get -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode.Directive.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode.DirectiveName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode.DirectiveName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode.Tokens.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupBlockIntermediateNode.Content.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupBlockIntermediateNode.Content.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.Attributes.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.Body.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.Captures.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.SetKeys.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.TagName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.TagName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.MethodName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.MethodName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.Modifiers.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.Parameters.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.ReturnType.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.ReturnType.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodParameter.Modifiers.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodParameter.ParameterName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodParameter.ParameterName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodParameter.TypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.MethodParameter.TypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode.Content.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode.Content.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode.Modifiers.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode.PropertyName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode.PropertyName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode.PropertyType.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode.PropertyType.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.ComponentCaptureTypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.ComponentCaptureTypeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.FieldTypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.IdentifierToken.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken +~Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.ReferenceCaptureIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken identifierToken) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.ReferenceCaptureIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken identifierToken, string componentCaptureTypeName) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.TypeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.SetKeyIntermediateNode.KeyValueToken.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken +~Microsoft.AspNetCore.Razor.Language.Intermediate.SetKeyIntermediateNode.SetKeyIntermediateNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken keyValueToken) -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.AttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.AttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.BoundAttribute.get -> Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.BoundAttribute.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.OriginalAttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.OriginalAttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.TagHelper.get -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.TagHelper.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.AttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.AttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.AttributeNameWithoutParameter.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.AttributeNameWithoutParameter.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.BoundAttribute.get -> Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.BoundAttribute.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.BoundAttributeParameter.get -> Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.BoundAttributeParameter.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.OriginalAttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.OriginalAttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.TagHelper.get -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.TagHelper.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode.AttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode.AttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.Body.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperBodyIntermediateNode +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.HtmlAttributes.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.Properties.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.TagHelpers.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.TagName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.TagName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.AttributeName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.AttributeName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.BoundAttribute.get -> Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.BoundAttribute.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.TagHelper.get -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.TagHelper.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.TypeParameter.ParameterName.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.TypeParameter.ParameterName.set -> void +~Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode.Content.get -> string +~Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode.Content.set -> void +~Microsoft.AspNetCore.Razor.Language.IntermediateNodePassBase.Execute(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~Microsoft.AspNetCore.Razor.Language.ItemCollection.Add(System.Collections.Generic.KeyValuePair item) -> void +~Microsoft.AspNetCore.Razor.Language.ItemCollection.Add(object key, object value) -> void +~Microsoft.AspNetCore.Razor.Language.ItemCollection.Contains(System.Collections.Generic.KeyValuePair item) -> bool +~Microsoft.AspNetCore.Razor.Language.ItemCollection.CopyTo(System.Collections.Generic.KeyValuePair[] array, int arrayIndex) -> void +~Microsoft.AspNetCore.Razor.Language.ItemCollection.GetEnumerator() -> System.Collections.Generic.IEnumerator> +~Microsoft.AspNetCore.Razor.Language.ItemCollection.Remove(System.Collections.Generic.KeyValuePair item) -> bool +~Microsoft.AspNetCore.Razor.Language.ItemCollection.this[object key].get -> object +~Microsoft.AspNetCore.Razor.Language.ItemCollection.this[object key].set -> void +~Microsoft.AspNetCore.Razor.Language.ProvideRazorExtensionInitializerAttribute.ExtensionName.get -> string +~Microsoft.AspNetCore.Razor.Language.ProvideRazorExtensionInitializerAttribute.InitializerType.get -> System.Type +~Microsoft.AspNetCore.Razor.Language.ProvideRazorExtensionInitializerAttribute.ProvideRazorExtensionInitializerAttribute(string extensionName, System.Type initializerType) -> void +~Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.GetMessage() -> string +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Add(Microsoft.AspNetCore.Razor.Language.RazorDiagnostic item) -> void +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.AddRange(Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection items) -> void +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.AddRange(System.Collections.Generic.IEnumerable items) -> void +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Contains(Microsoft.AspNetCore.Razor.Language.RazorDiagnostic item) -> bool +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.CopyTo(Microsoft.AspNetCore.Razor.Language.RazorDiagnostic[] array, int arrayIndex) -> void +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Enumerator.Current.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnostic +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Enumerator.Enumerator(Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection collection) -> void +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.IndexOf(Microsoft.AspNetCore.Razor.Language.RazorDiagnostic item) -> int +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Insert(int index, Microsoft.AspNetCore.Razor.Language.RazorDiagnostic item) -> void +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.Remove(Microsoft.AspNetCore.Razor.Language.RazorDiagnostic item) -> bool +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.this[int index].get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnostic +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection.this[int index].set -> void +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor.Equals(Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor other) -> bool +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor.GetMessageFormat() -> string +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor.Id.get -> string +~Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor.RazorDiagnosticDescriptor(string id, System.Func messageFormat, Microsoft.AspNetCore.Razor.Language.RazorDiagnosticSeverity severity) -> void +~Microsoft.AspNetCore.Razor.Language.RazorEngineFeatureBase.Engine.get -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~Microsoft.AspNetCore.Razor.Language.RazorEngineFeatureBase.Engine.set -> void +~Microsoft.AspNetCore.Razor.Language.RazorEngineFeatureBase.GetRequiredFeature() -> TFeature +~Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.Engine.get -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.Engine.set -> void +~Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.Execute(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument) -> void +~Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.CompareTo(Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion other) -> int +~Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Equals(Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion other) -> bool +~Microsoft.AspNetCore.Razor.Language.RazorProject.FindHierarchicalItems(string path, string fileName) -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.EngineFeatures.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Phases.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.RazorProjectItem.CombinedPath.get -> string +~Microsoft.AspNetCore.Razor.Language.RazorProjectItem.Extension.get -> string +~Microsoft.AspNetCore.Razor.Language.RazorProjectItem.FileName.get -> string +~Microsoft.AspNetCore.Razor.Language.RazorProjectItem.FilePathWithoutExtension.get -> string +~Microsoft.AspNetCore.Razor.Language.RazorSourceDocumentProperties.FilePath.get -> string +~Microsoft.AspNetCore.Razor.Language.RazorSourceDocumentProperties.RazorSourceDocumentProperties(string filePath, string relativePath) -> void +~Microsoft.AspNetCore.Razor.Language.RazorSourceDocumentProperties.RelativePath.get -> string +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Diagnostics.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Diagnostics.set -> void +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.DisplayName.get -> string +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.DisplayName.set -> void +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Equals(Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor other) -> bool +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Metadata.get -> System.Collections.Generic.IReadOnlyDictionary +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Metadata.set -> void +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Name.get -> string +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Name.set -> void +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Value.get -> string +~Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Value.set -> void +~Microsoft.AspNetCore.Razor.Language.SourceChange.Equals(Microsoft.AspNetCore.Razor.Language.SourceChange other) -> bool +~Microsoft.AspNetCore.Razor.Language.SourceChange.NewText.get -> string +~Microsoft.AspNetCore.Razor.Language.SourceChange.SourceChange(Microsoft.AspNetCore.Razor.Language.SourceSpan span, string newText) -> void +~Microsoft.AspNetCore.Razor.Language.SourceChange.SourceChange(int absoluteIndex, int length, string newText) -> void +~Microsoft.AspNetCore.Razor.Language.SourceLocation.FilePath.get -> string +~Microsoft.AspNetCore.Razor.Language.SourceLocation.FilePath.set -> void +~Microsoft.AspNetCore.Razor.Language.SourceLocation.SourceLocation(string filePath, int absoluteIndex, int lineIndex, int characterIndex) -> void +~Microsoft.AspNetCore.Razor.Language.SourceMapping.Equals(Microsoft.AspNetCore.Razor.Language.SourceMapping other) -> bool +~Microsoft.AspNetCore.Razor.Language.SourceSpan.FilePath.get -> string +~Microsoft.AspNetCore.Razor.Language.SourceSpan.SourceSpan(string filePath, int absoluteIndex, int lineIndex, int characterIndex, int length) -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperBinding.Attributes.get -> System.Collections.Generic.IReadOnlyList> +~Microsoft.AspNetCore.Razor.Language.TagHelperBinding.Descriptors.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Language.TagHelperBinding.GetBoundRules(Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor descriptor) -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.TagHelperBinding.Mappings.get -> System.Collections.Generic.IReadOnlyDictionary> +~Microsoft.AspNetCore.Razor.Language.TagHelperBinding.ParentTagName.get -> string +~Microsoft.AspNetCore.Razor.Language.TagHelperBinding.TagHelperPrefix.get -> string +~Microsoft.AspNetCore.Razor.Language.TagHelperBinding.TagName.get -> string +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.AllowedChildTags.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.AllowedChildTags.set -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.AssemblyName.get -> string +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.AssemblyName.set -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.BoundAttributes.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.BoundAttributes.set -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Diagnostics.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Diagnostics.set -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.DisplayName.get -> string +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.DisplayName.set -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Documentation.get -> string +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Documentation.set -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Equals(Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor other) -> bool +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Kind.get -> string +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Metadata.get -> System.Collections.Generic.IReadOnlyDictionary +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Metadata.set -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Name.get -> string +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Name.set -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.TagHelperDescriptor(string kind) -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.TagMatchingRules.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.TagMatchingRules.set -> void +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.TagOutputHint.get -> string +~Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.TagOutputHint.set -> void +~Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.Attributes.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.Attributes.set -> void +~Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.Diagnostics.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.Diagnostics.set -> void +~Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.Equals(Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor other) -> bool +~Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.ParentTag.get -> string +~Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.ParentTag.set -> void +~Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.TagName.get -> string +~Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.TagName.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptorBuilder.Diagnostics.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection +~abstract Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptorBuilder.DisplayName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptorBuilder.DisplayName.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptorBuilder.Name.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptorBuilder.Name.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.Diagnostics.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.DisplayName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.DisplayName.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.Documentation.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.Documentation.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.IndexerAttributeNamePrefix.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.IndexerAttributeNamePrefix.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.IndexerValueTypeName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.IndexerValueTypeName.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.Metadata.get -> System.Collections.Generic.IDictionary +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.Name.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.Name.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.TypeName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.TypeName.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.Diagnostics.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.DisplayName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.DisplayName.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.Documentation.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.Documentation.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.Metadata.get -> System.Collections.Generic.IDictionary +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.Name.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.Name.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.TypeName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder.TypeName.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.AddSourceMappingFor(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.Ancestors.get -> System.Collections.Generic.IEnumerable +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.CodeWriter.get -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeWriter +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.Diagnostics.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.DocumentKind.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.Items.get -> Microsoft.AspNetCore.Razor.Language.ItemCollection +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.NodeWriter.get -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.Options.get -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.Parent.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.RenderChildren(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.RenderChildren(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node, Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter writer) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.RenderNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.RenderNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node, Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter writer) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext.SourceDocument.get -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget.CreateNodeWriter() -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget.GetExtension() -> TExtension +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget.HasExtension() -> bool +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTargetBuilder.Build() -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTargetBuilder.CodeDocument.get -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTargetBuilder.Options.get -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTargetBuilder.TargetExtensions.get -> System.Collections.Generic.ICollection +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.DocumentWriter.WriteDocument(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.BeginWriterScope(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, string writer) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.EndWriterScope(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteCSharpCode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeIntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteCSharpCodeAttributeValue(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteCSharpExpression(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteCSharpExpressionAttributeValue(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteHtmlAttribute(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteHtmlAttributeValue(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteHtmlContent(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlContentIntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteUsingDirective(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode node) -> void +~abstract Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.Description.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.Directive.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.DisplayName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.Tokens.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase.DocumentKind.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase.IsMatch(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> bool +~abstract Microsoft.AspNetCore.Razor.Language.Intermediate.ExtensionIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~abstract Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~abstract Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~abstract Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter.WriteChildren(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection children) -> void +~abstract Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter.WriteContent(string content) -> void +~abstract Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter.WriteProperty(string key, string value) -> void +~abstract Microsoft.AspNetCore.Razor.Language.IntermediateNodePassBase.ExecuteCore(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~abstract Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument.Diagnostics.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument.GeneratedCode.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument.Options.get -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~abstract Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument.SourceMappings.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.RazorCodeDocument.Imports.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.RazorCodeDocument.Items.get -> Microsoft.AspNetCore.Razor.Language.ItemCollection +~abstract Microsoft.AspNetCore.Razor.Language.RazorCodeDocument.Source.get -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~abstract Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.Build() -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~abstract Microsoft.AspNetCore.Razor.Language.RazorConfiguration.ConfigurationName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RazorConfiguration.Extensions.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.RazorConfiguration.LanguageVersion.get -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~abstract Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.Equals(Microsoft.AspNetCore.Razor.Language.RazorDiagnostic other) -> bool +~abstract Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.GetMessage(System.IFormatProvider formatProvider) -> string +~abstract Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.Id.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RazorEngine.Features.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.RazorEngine.Phases.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.RazorEngine.Process(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> void +~abstract Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.ExecuteCore(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument) -> void +~abstract Microsoft.AspNetCore.Razor.Language.RazorExtension.ExtensionName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RazorExtensionInitializer.Initialize(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> void +~abstract Microsoft.AspNetCore.Razor.Language.RazorParserOptions.Directives.get -> System.Collections.Generic.IReadOnlyCollection +~abstract Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.Build() -> Microsoft.AspNetCore.Razor.Language.RazorParserOptions +~abstract Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.Directives.get -> System.Collections.Generic.ICollection +~abstract Microsoft.AspNetCore.Razor.Language.RazorProject.EnumerateItems(string basePath) -> System.Collections.Generic.IEnumerable +~abstract Microsoft.AspNetCore.Razor.Language.RazorProject.GetItem(string path) -> Microsoft.AspNetCore.Razor.Language.RazorProjectItem +~abstract Microsoft.AspNetCore.Razor.Language.RazorProject.GetItem(string path, string fileKind) -> Microsoft.AspNetCore.Razor.Language.RazorProjectItem +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Configuration.get -> Microsoft.AspNetCore.Razor.Language.RazorConfiguration +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.CreateCodeDocumentCore(Microsoft.AspNetCore.Razor.Language.RazorProjectItem projectItem) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.CreateCodeDocumentDesignTimeCore(Microsoft.AspNetCore.Razor.Language.RazorProjectItem projectItem) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Engine.get -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.FileSystem.get -> Microsoft.AspNetCore.Razor.Language.RazorProjectFileSystem +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.ProcessCore(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument) -> void +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.ProjectFeatures.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder.Build() -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngine +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder.Configuration.get -> Microsoft.AspNetCore.Razor.Language.RazorConfiguration +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder.Features.get -> System.Collections.Generic.ICollection +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder.FileSystem.get -> Microsoft.AspNetCore.Razor.Language.RazorProjectFileSystem +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder.Phases.get -> System.Collections.Generic.IList +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectItem.BasePath.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectItem.FilePath.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectItem.PhysicalPath.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RazorProjectItem.Read() -> System.IO.Stream +~abstract Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count) -> void +~abstract Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.Encoding.get -> System.Text.Encoding +~abstract Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.FilePath.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.GetChecksum() -> byte[] +~abstract Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.Lines.get -> Microsoft.AspNetCore.Razor.Language.RazorSourceLineCollection +~abstract Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree.Diagnostics.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree.Options.get -> Microsoft.AspNetCore.Razor.Language.RazorParserOptions +~abstract Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree.Source.get -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~abstract Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.Diagnostics.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection +~abstract Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.Name.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.Name.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.Value.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.Value.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.AllowChildTag(System.Action configure) -> void +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.AllowedChildTags.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.AssemblyName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.BindAttribute(System.Action configure) -> void +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.BoundAttributes.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Build() -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Diagnostics.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.DisplayName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.DisplayName.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Documentation.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Documentation.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Kind.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Metadata.get -> System.Collections.Generic.IDictionary +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Name.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.TagMatchingRule(System.Action configure) -> void +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.TagMatchingRules.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.TagOutputHint.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.TagOutputHint.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext.Items.get -> Microsoft.AspNetCore.Razor.Language.ItemCollection +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext.Results.get -> System.Collections.Generic.ICollection +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDocumentContext.Prefix.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.TagHelperDocumentContext.TagHelpers.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.Attribute(System.Action configure) -> void +~abstract Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.Attributes.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.Diagnostics.get -> Microsoft.AspNetCore.Razor.Language.RazorDiagnosticCollection +~abstract Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.ParentTag.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.ParentTag.set -> void +~abstract Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.TagName.get -> string +~abstract Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptorBuilder.TagName.set -> void +~override Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.AllowedChildTagDescriptor.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.AssemblyExtension.ExtensionName.get -> string +~override Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.BeginWriterScope(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, string writer) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.EndWriterScope(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.WriteCSharpCode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.WriteCSharpCodeAttributeValue(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.WriteCSharpExpression(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.WriteCSharpExpressionAttributeValue(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.WriteHtmlAttribute(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.WriteHtmlAttributeValue(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.WriteHtmlContent(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlContentIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.DesignTimeNodeWriter.WriteUsingDirective(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.LinePragma.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.BeginWriterScope(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, string writer) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.EndWriterScope(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteCSharpCode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteCSharpCodeAttributeValue(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteCSharpExpression(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteCSharpExpressionAttributeValue(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteHtmlAttribute(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteHtmlAttributeValue(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteHtmlContent(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlContentIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteUsingDirective(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperBodyIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperCreateIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperExecuteIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperExecuteIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperExecuteIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperHtmlAttributeIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperPropertyIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperRuntimeIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperRuntimeIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Extensions.DefaultTagHelperRuntimeIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.RazorCompiledItemMetadataAttributeIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.SectionIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.TemplateIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Extensions.TemplateIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Extensions.TemplateIntermediateNode.WriteNode(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget target, Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlContentIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlContentIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlContentIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeWalker.VisitDefault(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupBlockIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupBlockIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupBlockIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.SetKeyIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.SetKeyIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.SetKeyIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.SplatIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.SplatIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.SplatIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperBodyIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperBodyIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode.Accept(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~override Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode.Children.get -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~override Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~override Microsoft.AspNetCore.Razor.Language.RazorConfiguration.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.SourceChange.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.SourceChange.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.SourceLocation.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.SourceLocation.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.SourceMapping.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.SourceMapping.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.SourceSpan.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.SourceSpan.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.ToString() -> string +~override Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.Equals(object obj) -> bool +~override sealed Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase.ExecuteCore(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilderExtensions.AsDictionary(this Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder builder, string attributeNamePrefix, string valueTypeName) -> void +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilderExtensions.GetPropertyName(this Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder builder) -> string +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilderExtensions.GetPropertyName(this Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder builder) -> string +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilderExtensions.IsDirectiveAttribute(this Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder builder) -> bool +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilderExtensions.SetPropertyName(this Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder builder, string propertyName) -> void +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilderExtensions.SetPropertyName(this Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptorBuilder builder, string propertyName) -> void +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorExtensions.GetPropertyName(this Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor attribute) -> string +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorExtensions.GetPropertyName(this Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor parameter) -> string +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorExtensions.IsDefaultKind(this Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor attribute) -> bool +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorExtensions.IsDefaultKind(this Microsoft.AspNetCore.Razor.Language.BoundAttributeParameterDescriptor parameter) -> bool +~static Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorExtensions.IsDirectiveAttribute(this Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor attribute) -> bool +~static Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget.CreateDefault(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions options) -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget +~static Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget.CreateDefault(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions options, System.Action configure) -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget +~static Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget.CreateEmpty(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions options, System.Action configure) -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget +~static Microsoft.AspNetCore.Razor.Language.CodeGeneration.DocumentWriter.CreateDefault(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget codeTarget, Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions options) -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.DocumentWriter +~static Microsoft.AspNetCore.Razor.Language.Components.ComponentCodeDirective.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> void +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.CreateCodeBlockDirective(string directive) -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.CreateCodeBlockDirective(string directive, System.Action configure) -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.CreateDirective(string directive, Microsoft.AspNetCore.Razor.Language.DirectiveKind kind) -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.CreateDirective(string directive, Microsoft.AspNetCore.Razor.Language.DirectiveKind kind, System.Action configure) -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.CreateRazorBlockDirective(string directive) -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.CreateRazorBlockDirective(string directive, System.Action configure) -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.CreateSingleLineDirective(string directive) -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor.CreateSingleLineDirective(string directive, System.Action configure) -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddAttributeToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddAttributeToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddBooleanToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddBooleanToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddMemberToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddMemberToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddNamespaceToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddNamespaceToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalAttributeToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalAttributeToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalMemberToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalMemberToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalNamespaceToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalNamespaceToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalStringToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalStringToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalTypeToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddOptionalTypeToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddStringToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddStringToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddTypeToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveDescriptorBuilderExtensions.AddTypeToken(this Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder builder, string name, string description) -> Microsoft.AspNetCore.Razor.Language.IDirectiveDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor.CreateToken(Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind kind) -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor.CreateToken(Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind kind, bool optional) -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor +~static Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor.CreateToken(Microsoft.AspNetCore.Razor.Language.DirectiveTokenKind kind, bool optional, string name, string description) -> Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor +~static Microsoft.AspNetCore.Razor.Language.Extensions.FunctionsDirective.Register(Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder) -> void +~static Microsoft.AspNetCore.Razor.Language.Extensions.FunctionsDirective.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> void +~static Microsoft.AspNetCore.Razor.Language.Extensions.InheritsDirective.Register(Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder) -> void +~static Microsoft.AspNetCore.Razor.Language.Extensions.InheritsDirective.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> void +~static Microsoft.AspNetCore.Razor.Language.Extensions.NamespaceDirective.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.Extensions.SectionDirective.Register(Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder) -> void +~static Microsoft.AspNetCore.Razor.Language.Extensions.SectionDirective.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> void +~static Microsoft.AspNetCore.Razor.Language.FileKinds.GetComponentFileKindFromFilePath(string filePath) -> string +~static Microsoft.AspNetCore.Razor.Language.FileKinds.GetFileKindFromFilePath(string filePath) -> string +~static Microsoft.AspNetCore.Razor.Language.FileKinds.IsComponent(string fileKind) -> bool +~static Microsoft.AspNetCore.Razor.Language.FileKinds.IsComponentImport(string fileKind) -> bool +~static Microsoft.AspNetCore.Razor.Language.HtmlConventions.ToHtmlCase(string name) -> string +~static Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNodeExtensions.FindDescendantReferences(this Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode document) -> System.Collections.Generic.IReadOnlyList +~static Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNodeExtensions.FindDirectiveReferences(this Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode node, Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor directive) -> System.Collections.Generic.IReadOnlyList +~static Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNodeExtensions.FindPrimaryClass(this Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode node) -> Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode +~static Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNodeExtensions.FindPrimaryMethod(this Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode node) -> Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode +~static Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNodeExtensions.FindPrimaryNamespace(this Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode node) -> Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode +~static Microsoft.AspNetCore.Razor.Language.Intermediate.ExtensionIntermediateNode.AcceptExtensionNode(TNode node, Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor visitor) -> void +~static Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeExtensions.FindDescendantNodes(this Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> System.Collections.Generic.IReadOnlyList +~static Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeExtensions.GetAllDiagnostics(this Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> System.Collections.Generic.IReadOnlyList +~static Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeExtensions.IsImported(this Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> bool +~static Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument.Create(string generatedCode, Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions options, System.Collections.Generic.IEnumerable diagnostics) -> Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument +~static Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument.Create(string generatedCode, Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions options, System.Collections.Generic.IEnumerable diagnostics, System.Collections.Generic.IEnumerable sourceMappings, System.Collections.Generic.IEnumerable linePragmas) -> Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocument.Create(Microsoft.AspNetCore.Razor.Language.RazorSourceDocument source) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocument.Create(Microsoft.AspNetCore.Razor.Language.RazorSourceDocument source, System.Collections.Generic.IEnumerable imports) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocument.Create(Microsoft.AspNetCore.Razor.Language.RazorSourceDocument source, System.Collections.Generic.IEnumerable imports, Microsoft.AspNetCore.Razor.Language.RazorParserOptions parserOptions, Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions codeGenerationOptions) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.GetCSharpDocument(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.GetCodeGenerationOptions(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.GetCssScope(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> string +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.GetDocumentIntermediateNode(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.GetFileKind(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> string +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.GetImportSyntaxTrees(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> System.Collections.Generic.IReadOnlyList +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.GetParserOptions(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> Microsoft.AspNetCore.Razor.Language.RazorParserOptions +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.GetSyntaxTree(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.GetTagHelperContext(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document) -> Microsoft.AspNetCore.Razor.Language.TagHelperDocumentContext +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.SetCSharpDocument(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, Microsoft.AspNetCore.Razor.Language.RazorCSharpDocument csharp) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.SetCodeGenerationOptions(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions codeGenerationOptions) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.SetCssScope(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, string cssScope) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.SetDocumentIntermediateNode(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode documentNode) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.SetFileKind(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, string fileKind) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.SetImportSyntaxTrees(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, System.Collections.Generic.IReadOnlyList syntaxTrees) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.SetParserOptions(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, Microsoft.AspNetCore.Razor.Language.RazorParserOptions parserOptions) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.SetSyntaxTree(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree syntaxTree) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.SetTagHelperContext(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, Microsoft.AspNetCore.Razor.Language.TagHelperDocumentContext context) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorCodeDocumentExtensions.TryComputeNamespace(this Microsoft.AspNetCore.Razor.Language.RazorCodeDocument document, bool fallbackToRootNamespace, out string namespace) -> bool +~static Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.Create(System.Action configure) -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~static Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.CreateDefault() -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~static Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.CreateDesignTime(System.Action configure) -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~static Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.CreateDesignTimeDefault() -> Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions +~static Microsoft.AspNetCore.Razor.Language.RazorConfiguration.Create(Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion languageVersion, string configurationName, System.Collections.Generic.IEnumerable extensions) -> Microsoft.AspNetCore.Razor.Language.RazorConfiguration +~static Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.Create(Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor descriptor, Microsoft.AspNetCore.Razor.Language.SourceSpan span) -> Microsoft.AspNetCore.Razor.Language.RazorDiagnostic +~static Microsoft.AspNetCore.Razor.Language.RazorDiagnostic.Create(Microsoft.AspNetCore.Razor.Language.RazorDiagnosticDescriptor descriptor, Microsoft.AspNetCore.Razor.Language.SourceSpan span, params object[] args) -> Microsoft.AspNetCore.Razor.Language.RazorDiagnostic +~static Microsoft.AspNetCore.Razor.Language.RazorEngine.Create() -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~static Microsoft.AspNetCore.Razor.Language.RazorEngine.Create(System.Action configure) -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~static Microsoft.AspNetCore.Razor.Language.RazorEngine.CreateDesignTime() -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~static Microsoft.AspNetCore.Razor.Language.RazorEngine.CreateDesignTime(System.Action configure) -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~static Microsoft.AspNetCore.Razor.Language.RazorEngine.CreateDesignTimeEmpty(System.Action configure) -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~static Microsoft.AspNetCore.Razor.Language.RazorEngine.CreateEmpty(System.Action configure) -> Microsoft.AspNetCore.Razor.Language.RazorEngine +~static Microsoft.AspNetCore.Razor.Language.RazorEngineBuilderExtensions.AddDirective(this Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder, Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor directive) -> Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorEngineBuilderExtensions.AddTargetExtension(this Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder, Microsoft.AspNetCore.Razor.Language.CodeGeneration.ICodeTargetExtension extension) -> Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorEngineBuilderExtensions.ConfigureClass(this Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder, System.Action configureClass) -> Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorEngineBuilderExtensions.SetBaseType(this Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder, string baseType) -> Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorEngineBuilderExtensions.SetNamespace(this Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder builder, string namespaceName) -> Microsoft.AspNetCore.Razor.Language.IRazorEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Parse(string languageVersion) -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~static Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.TryParse(string languageVersion, out Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion version) -> bool +~static Microsoft.AspNetCore.Razor.Language.RazorParserOptions.Create(System.Action configure) -> Microsoft.AspNetCore.Razor.Language.RazorParserOptions +~static Microsoft.AspNetCore.Razor.Language.RazorParserOptions.Create(System.Action configure, string fileKind) -> Microsoft.AspNetCore.Razor.Language.RazorParserOptions +~static Microsoft.AspNetCore.Razor.Language.RazorParserOptions.CreateDefault() -> Microsoft.AspNetCore.Razor.Language.RazorParserOptions +~static Microsoft.AspNetCore.Razor.Language.RazorParserOptions.CreateDesignTime(System.Action configure) -> Microsoft.AspNetCore.Razor.Language.RazorParserOptions +~static Microsoft.AspNetCore.Razor.Language.RazorParserOptions.CreateDesignTime(System.Action configure, string fileKind) -> Microsoft.AspNetCore.Razor.Language.RazorParserOptions +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(Microsoft.AspNetCore.Razor.Language.RazorConfiguration configuration, Microsoft.AspNetCore.Razor.Language.RazorProjectFileSystem fileSystem) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngine +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Create(Microsoft.AspNetCore.Razor.Language.RazorConfiguration configuration, Microsoft.AspNetCore.Razor.Language.RazorProjectFileSystem fileSystem, System.Action configure) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngine +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions.AddDefaultImports(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, params string[] imports) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions.AddDirective(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor directive) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions.AddDirective(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor directive, params string[] fileKinds) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions.AddTargetExtension(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, Microsoft.AspNetCore.Razor.Language.CodeGeneration.ICodeTargetExtension extension) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions.ConfigureClass(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, System.Action configureClass) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions.SetBaseType(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, string baseType) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions.SetImportFeature(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, Microsoft.AspNetCore.Razor.Language.IImportProjectFeature feature) -> void +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions.SetNamespace(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, string namespaceName) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilderExtensions.SetRootNamespace(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, string rootNamespace) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.AspNetCore.Razor.Language.RazorProjectFileSystem.Create(string rootDirectoryPath) -> Microsoft.AspNetCore.Razor.Language.RazorProjectFileSystem +~static Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.Create(string content, Microsoft.AspNetCore.Razor.Language.RazorSourceDocumentProperties properties) -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~static Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.Create(string content, System.Text.Encoding encoding, Microsoft.AspNetCore.Razor.Language.RazorSourceDocumentProperties properties) -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~static Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.Create(string content, string fileName) -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~static Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.Create(string content, string fileName, System.Text.Encoding encoding) -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~static Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.ReadFrom(Microsoft.AspNetCore.Razor.Language.RazorProjectItem projectItem) -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~static Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.ReadFrom(System.IO.Stream stream, System.Text.Encoding encoding, Microsoft.AspNetCore.Razor.Language.RazorSourceDocumentProperties properties) -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~static Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.ReadFrom(System.IO.Stream stream, string fileName) -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~static Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.ReadFrom(System.IO.Stream stream, string fileName, System.Text.Encoding encoding) -> Microsoft.AspNetCore.Razor.Language.RazorSourceDocument +~static Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree.Parse(Microsoft.AspNetCore.Razor.Language.RazorSourceDocument source) -> Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree +~static Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree.Parse(Microsoft.AspNetCore.Razor.Language.RazorSourceDocument source, Microsoft.AspNetCore.Razor.Language.RazorParserOptions options) -> Microsoft.AspNetCore.Razor.Language.RazorSyntaxTree +~static Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorExtensions.IsDirectiveAttribute(this Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor descriptor) -> bool +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Create(string kind, string name, string assemblyName) -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder.Create(string name, string assemblyName) -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilderExtensions.GetTypeName(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder builder) -> string +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilderExtensions.SetTypeName(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorBuilder builder, string typeName) -> void +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorExtensions.GetTypeName(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor tagHelper) -> string +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorExtensions.IsComponentOrChildContentTagHelper(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor tagHelper) -> bool +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorExtensions.IsDefaultKind(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor tagHelper) -> bool +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorExtensions.KindUsesDefaultTagHelperRuntime(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor tagHelper) -> bool +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext.Create() -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext +~static Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext.Create(System.Collections.Generic.ICollection results) -> Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext +~static Microsoft.AspNetCore.Razor.Language.TagHelperDocumentContext.Create(string prefix, System.Collections.Generic.IEnumerable tagHelpers) -> Microsoft.AspNetCore.Razor.Language.TagHelperDocumentContext +~static readonly Microsoft.AspNetCore.Razor.Language.Components.ComponentCodeDirective.Directive -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static readonly Microsoft.AspNetCore.Razor.Language.Extensions.FunctionsDirective.Directive -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static readonly Microsoft.AspNetCore.Razor.Language.Extensions.InheritsDirective.Directive -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static readonly Microsoft.AspNetCore.Razor.Language.Extensions.NamespaceDirective.Directive -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static readonly Microsoft.AspNetCore.Razor.Language.Extensions.SectionDirective.Directive -> Microsoft.AspNetCore.Razor.Language.DirectiveDescriptor +~static readonly Microsoft.AspNetCore.Razor.Language.Extensions.SectionTargetExtension.DefaultSectionMethodName -> string +~static readonly Microsoft.AspNetCore.Razor.Language.Extensions.TemplateTargetExtension.DefaultTemplateTypeName -> string +~static readonly Microsoft.AspNetCore.Razor.Language.FileKinds.Component -> string +~static readonly Microsoft.AspNetCore.Razor.Language.FileKinds.ComponentImport -> string +~static readonly Microsoft.AspNetCore.Razor.Language.FileKinds.Legacy -> string +~static readonly Microsoft.AspNetCore.Razor.Language.Intermediate.CommonAnnotations.DefaultTagHelperExtension.TagHelperField -> object +~static readonly Microsoft.AspNetCore.Razor.Language.Intermediate.CommonAnnotations.Imported -> object +~static readonly Microsoft.AspNetCore.Razor.Language.Intermediate.CommonAnnotations.PrimaryClass -> object +~static readonly Microsoft.AspNetCore.Razor.Language.Intermediate.CommonAnnotations.PrimaryMethod -> object +~static readonly Microsoft.AspNetCore.Razor.Language.Intermediate.CommonAnnotations.PrimaryNamespace -> object +~static readonly Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection.ReadOnly -> Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeCollection +~static readonly Microsoft.AspNetCore.Razor.Language.RazorConfiguration.Default -> Microsoft.AspNetCore.Razor.Language.RazorConfiguration +~static readonly Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Experimental -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~static readonly Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Latest -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~static readonly Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Version_1_0 -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~static readonly Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Version_1_1 -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~static readonly Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Version_2_0 -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~static readonly Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Version_2_1 -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~static readonly Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Version_3_0 -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~static readonly Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion.Version_5_0 -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~static readonly Microsoft.AspNetCore.Razor.Language.TagHelperConventions.ComponentKind -> string +~static readonly Microsoft.AspNetCore.Razor.Language.TagHelperConventions.DefaultKind -> string +~static readonly Microsoft.AspNetCore.Razor.Language.TagHelperMetadata.Common.ClassifyAttributesOnly -> string +~static readonly Microsoft.AspNetCore.Razor.Language.TagHelperMetadata.Common.PropertyName -> string +~static readonly Microsoft.AspNetCore.Razor.Language.TagHelperMetadata.Common.TypeName -> string +~static readonly Microsoft.AspNetCore.Razor.Language.TagHelperMetadata.Runtime.Name -> string +~virtual Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.BoundAttributeParameters.get -> System.Collections.Generic.IReadOnlyList +~virtual Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptor.BoundAttributeParameters.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.BindAttributeParameter(System.Action configure) -> void +~virtual Microsoft.AspNetCore.Razor.Language.BoundAttributeDescriptorBuilder.BoundAttributeParameters.get -> System.Collections.Generic.IReadOnlyList +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteComponent(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteComponentAttribute(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteComponentChildContent(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteComponentTypeArgument(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteComponentTypeInferenceMethod(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteMarkupBlock(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupBlockIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteMarkupElement(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteReferenceCapture(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteSetKey(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.SetKeyIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.IntermediateNodeWriter.WriteSplat(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeRenderingContext context, Microsoft.AspNetCore.Razor.Language.Intermediate.SplatIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.BeginWriteAttributeMethod.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.BeginWriteAttributeMethod.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.EndWriteAttributeMethod.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.EndWriteAttributeMethod.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.PopWriterMethod.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.PopWriterMethod.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.PushWriterMethod.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.PushWriterMethod.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteAttributeValueMethod.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteAttributeValueMethod.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteCSharpExpressionMethod.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteCSharpExpressionMethod.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteHtmlContentMethod.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.CodeGeneration.RuntimeNodeWriter.WriteHtmlContentMethod.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor.Description.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.DirectiveTokenDescriptor.Name.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase.ConfigureTarget(Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTargetBuilder builder) -> void +~virtual Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase.CreateTarget(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions options) -> Microsoft.AspNetCore.Razor.Language.CodeGeneration.CodeTarget +~virtual Microsoft.AspNetCore.Razor.Language.DocumentClassifierPassBase.OnDocumentStructureCreated(Microsoft.AspNetCore.Razor.Language.RazorCodeDocument codeDocument, Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode namespace, Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode class, Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode method) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode.FormatNode(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeFormatter formatter) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.Visit(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitCSharpCode(Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitCSharpCodeAttributeValue(Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpCodeAttributeValueIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitCSharpExpression(Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitCSharpExpressionAttributeValue(Microsoft.AspNetCore.Razor.Language.Intermediate.CSharpExpressionAttributeValueIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitClassDeclaration(Microsoft.AspNetCore.Razor.Language.Intermediate.ClassDeclarationIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitComponent(Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitComponentAttribute(Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentAttributeIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitComponentChildContent(Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentChildContentIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitComponentTypeArgument(Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeArgumentIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitComponentTypeInferenceMethod(Microsoft.AspNetCore.Razor.Language.Intermediate.ComponentTypeInferenceMethodIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitDefault(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitDirective(Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitDirectiveToken(Microsoft.AspNetCore.Razor.Language.Intermediate.DirectiveTokenIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitDocument(Microsoft.AspNetCore.Razor.Language.Intermediate.DocumentIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitExtension(Microsoft.AspNetCore.Razor.Language.Intermediate.ExtensionIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitFieldDeclaration(Microsoft.AspNetCore.Razor.Language.Intermediate.FieldDeclarationIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitHtml(Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlContentIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitHtmlAttribute(Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitHtmlAttributeValue(Microsoft.AspNetCore.Razor.Language.Intermediate.HtmlAttributeValueIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitMalformedDirective(Microsoft.AspNetCore.Razor.Language.Intermediate.MalformedDirectiveIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitMarkupBlock(Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupBlockIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitMarkupElement(Microsoft.AspNetCore.Razor.Language.Intermediate.MarkupElementIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitMethodDeclaration(Microsoft.AspNetCore.Razor.Language.Intermediate.MethodDeclarationIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitNamespaceDeclaration(Microsoft.AspNetCore.Razor.Language.Intermediate.NamespaceDeclarationIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitPropertyDeclaration(Microsoft.AspNetCore.Razor.Language.Intermediate.PropertyDeclarationIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitReferenceCapture(Microsoft.AspNetCore.Razor.Language.Intermediate.ReferenceCaptureIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitSetKey(Microsoft.AspNetCore.Razor.Language.Intermediate.SetKeyIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitSplat(Microsoft.AspNetCore.Razor.Language.Intermediate.SplatIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitTagHelper(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitTagHelperBody(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperBodyIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitTagHelperDirectiveAttribute(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitTagHelperDirectiveAttributeParameter(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperDirectiveAttributeParameterIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitTagHelperHtmlAttribute(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperHtmlAttributeIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitTagHelperProperty(Microsoft.AspNetCore.Razor.Language.Intermediate.TagHelperPropertyIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitToken(Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateNodeVisitor.VisitUsingDirective(Microsoft.AspNetCore.Razor.Language.Intermediate.UsingDirectiveIntermediateNode node) -> void +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.Content.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.Intermediate.IntermediateToken.Content.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptions.RootNamespace.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.Configuration.get -> Microsoft.AspNetCore.Razor.Language.RazorConfiguration +~virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.FileKind.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.RootNamespace.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorCodeGenerationOptionsBuilder.RootNamespace.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.RazorConfiguration.Equals(Microsoft.AspNetCore.Razor.Language.RazorConfiguration other) -> bool +~virtual Microsoft.AspNetCore.Razor.Language.RazorParserOptions.Version.get -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~virtual Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.Configuration.get -> Microsoft.AspNetCore.Razor.Language.RazorConfiguration +~virtual Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.FileKind.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorParserOptionsBuilder.LanguageVersion.get -> Microsoft.AspNetCore.Razor.Language.RazorLanguageVersion +~virtual Microsoft.AspNetCore.Razor.Language.RazorProject.FindHierarchicalItems(string basePath, string path, string fileName) -> System.Collections.Generic.IEnumerable +~virtual Microsoft.AspNetCore.Razor.Language.RazorProject.NormalizeAndEnsureValidPath(string path) -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Process(Microsoft.AspNetCore.Razor.Language.RazorProjectItem projectItem) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Process(Microsoft.AspNetCore.Razor.Language.RazorSourceDocument source, string fileKind, System.Collections.Generic.IReadOnlyList importSources, System.Collections.Generic.IReadOnlyList tagHelpers) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.ProcessDeclarationOnly(Microsoft.AspNetCore.Razor.Language.RazorProjectItem projectItem) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.ProcessDeclarationOnly(Microsoft.AspNetCore.Razor.Language.RazorSourceDocument source, string fileKind, System.Collections.Generic.IReadOnlyList importSources, System.Collections.Generic.IReadOnlyList tagHelpers) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.ProcessDesignTime(Microsoft.AspNetCore.Razor.Language.RazorProjectItem projectItem) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.ProcessDesignTime(Microsoft.AspNetCore.Razor.Language.RazorSourceDocument source, string fileKind, System.Collections.Generic.IReadOnlyList importSources, System.Collections.Generic.IReadOnlyList tagHelpers) -> Microsoft.AspNetCore.Razor.Language.RazorCodeDocument +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectEngineFeatureBase.ProjectEngine.get -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngine +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectEngineFeatureBase.ProjectEngine.set -> void +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectItem.CssScope.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectItem.FileKind.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorProjectItem.RelativePhysicalPath.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.GetChecksumAlgorithm() -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.GetFilePathForDisplay() -> string +~virtual Microsoft.AspNetCore.Razor.Language.RazorSourceDocument.RelativePath.get -> string +~virtual Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptorBuilder.Metadata.get -> System.Collections.Generic.IDictionary +~virtual Microsoft.AspNetCore.Razor.Language.TagHelperDescriptor.GetAllDiagnostics() -> System.Collections.Generic.IEnumerable +~virtual Microsoft.AspNetCore.Razor.Language.TagMatchingRuleDescriptor.GetAllDiagnostics() -> System.Collections.Generic.IEnumerable diff --git a/src/Razor/Microsoft.CodeAnalysis.Razor/src/PublicAPI.Shipped.txt b/src/Razor/Microsoft.CodeAnalysis.Razor/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Razor/Microsoft.CodeAnalysis.Razor/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Razor/Microsoft.CodeAnalysis.Razor/src/PublicAPI.Unshipped.txt b/src/Razor/Microsoft.CodeAnalysis.Razor/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..00665d645841 --- /dev/null +++ b/src/Razor/Microsoft.CodeAnalysis.Razor/src/PublicAPI.Unshipped.txt @@ -0,0 +1,26 @@ +#nullable enable +Microsoft.CodeAnalysis.Razor.CompilationTagHelperFeature +Microsoft.CodeAnalysis.Razor.CompilationTagHelperFeature.CompilationTagHelperFeature() -> void +Microsoft.CodeAnalysis.Razor.CompilerFeatures +Microsoft.CodeAnalysis.Razor.DefaultMetadataReferenceFeature +Microsoft.CodeAnalysis.Razor.DefaultMetadataReferenceFeature.DefaultMetadataReferenceFeature() -> void +Microsoft.CodeAnalysis.Razor.DefaultTagHelperDescriptorProvider +Microsoft.CodeAnalysis.Razor.DefaultTagHelperDescriptorProvider.DefaultTagHelperDescriptorProvider() -> void +Microsoft.CodeAnalysis.Razor.DefaultTagHelperDescriptorProvider.Order.get -> int +Microsoft.CodeAnalysis.Razor.DefaultTagHelperDescriptorProvider.Order.set -> void +Microsoft.CodeAnalysis.Razor.IMetadataReferenceFeature +Microsoft.CodeAnalysis.Razor.RazorLanguage +Microsoft.CodeAnalysis.Razor.RazorProjectEngineBuilderExtensions +Microsoft.CodeAnalysis.Razor.TagHelperDescriptorProviderContextExtensions +~Microsoft.CodeAnalysis.Razor.CompilationTagHelperFeature.GetDescriptors() -> System.Collections.Generic.IReadOnlyList +~Microsoft.CodeAnalysis.Razor.DefaultMetadataReferenceFeature.References.get -> System.Collections.Generic.IReadOnlyList +~Microsoft.CodeAnalysis.Razor.DefaultMetadataReferenceFeature.References.set -> void +~Microsoft.CodeAnalysis.Razor.DefaultTagHelperDescriptorProvider.Execute(Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext context) -> void +~Microsoft.CodeAnalysis.Razor.IMetadataReferenceFeature.References.get -> System.Collections.Generic.IReadOnlyList +~const Microsoft.CodeAnalysis.Razor.RazorLanguage.ContentType = "RazorCSharp" -> string +~const Microsoft.CodeAnalysis.Razor.RazorLanguage.CoreContentType = "RazorCoreCSharp" -> string +~const Microsoft.CodeAnalysis.Razor.RazorLanguage.Name = "Razor" -> string +~static Microsoft.CodeAnalysis.Razor.CompilerFeatures.Register(Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder) -> void +~static Microsoft.CodeAnalysis.Razor.RazorProjectEngineBuilderExtensions.SetCSharpLanguageVersion(this Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder builder, Microsoft.CodeAnalysis.CSharp.LanguageVersion csharpLanguageVersion) -> Microsoft.AspNetCore.Razor.Language.RazorProjectEngineBuilder +~static Microsoft.CodeAnalysis.Razor.TagHelperDescriptorProviderContextExtensions.GetCompilation(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext context) -> Microsoft.CodeAnalysis.Compilation +~static Microsoft.CodeAnalysis.Razor.TagHelperDescriptorProviderContextExtensions.SetCompilation(this Microsoft.AspNetCore.Razor.Language.TagHelperDescriptorProviderContext context, Microsoft.CodeAnalysis.Compilation compilation) -> void diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs b/src/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs index de73ff376a45..ecb82a18d155 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs @@ -257,7 +257,7 @@ public async Task IntrospectRazorTasksDllPath() Assert.BuildOutputContainsLine(result, $"RazorTasksPath: {expected}"); } - [ConditionalFact] + [ConditionalFact(Skip = "https://github.com/dotnet/aspnetcore/issues/24427")] [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] [InitializeTestProject("SimpleMvc")] public async Task IntrospectRazorTasksDllPath_DesktopMsBuild() @@ -275,5 +275,17 @@ public async Task IntrospectRazorTasksDllPath_DesktopMsBuild() Assert.BuildPassed(result); Assert.BuildOutputContainsLine(result, $"RazorTasksPath: {expected}"); } + + [Fact] + [InitializeTestProject("ComponentApp")] + public async Task IntrospectRazorSdkWatchItems() + { + // Arrange + var result = await DotnetMSBuild("_IntrospectWatchItems"); + + Assert.BuildPassed(result); + Assert.BuildOutputContainsLine(result, "Watch: Index.razor"); + Assert.BuildOutputContainsLine(result, "Watch: Index.razor.css"); + } } } diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/DotnetToolTask.cs b/src/Razor/Microsoft.NET.Sdk.Razor/src/DotnetToolTask.cs index 9a660fb1bfd1..7aee01126080 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/DotnetToolTask.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/src/DotnetToolTask.cs @@ -10,7 +10,6 @@ using Microsoft.AspNetCore.Razor.Tools; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using Microsoft.Extensions.CommandLineUtils; namespace Microsoft.AspNetCore.Razor.Tasks { @@ -19,6 +18,7 @@ public abstract class DotNetToolTask : ToolTask // From https://github.com/dotnet/corefx/blob/29cd6a0b0ac2993cee23ebaf36ca3d4bce6dd75f/src/System.IO.Pipes/ref/System.IO.Pipes.cs#L93. // Using the enum value directly as this option is not available in netstandard. private const PipeOptions PipeOptionCurrentUserOnly = (PipeOptions)536870912; + private string _dotnetPath; private CancellationTokenSource _razorServerCts; @@ -40,7 +40,7 @@ public abstract class DotNetToolTask : ToolTask public string PipeName { get; set; } - protected override string ToolName => "dotnet"; + protected override string ToolName => Path.GetDirectoryName(DotNetPath); // If we're debugging then make all of the stdout gets logged in MSBuild protected override MessageImportance StandardOutputLoggingImportance => DebugTool ? MessageImportance.High : base.StandardOutputLoggingImportance; @@ -49,17 +49,25 @@ public abstract class DotNetToolTask : ToolTask internal abstract string Command { get; } - protected override string GenerateFullPathToTool() + protected override string GenerateFullPathToTool() => DotNetPath; + + private string DotNetPath { -#if NETSTANDARD2_0 - if (!string.IsNullOrEmpty(DotNetMuxer.MuxerPath)) + get { - return DotNetMuxer.MuxerPath; - } -#endif + if (!string.IsNullOrEmpty(_dotnetPath)) + { + return _dotnetPath; + } - // use PATH to find dotnet - return ToolExe; + _dotnetPath = Environment.GetEnvironmentVariable("DOTNET_HOST_PATH"); + if (string.IsNullOrEmpty(_dotnetPath)) + { + throw new InvalidOperationException("DOTNET_HOST_PATH is not set"); + } + + return _dotnetPath; + } } protected override string GenerateCommandLineCommands() diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/Microsoft.NET.Sdk.Razor.csproj b/src/Razor/Microsoft.NET.Sdk.Razor/src/Microsoft.NET.Sdk.Razor.csproj index 8225d2b220e7..75c4d79dc78b 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/Microsoft.NET.Sdk.Razor.csproj +++ b/src/Razor/Microsoft.NET.Sdk.Razor/src/Microsoft.NET.Sdk.Razor.csproj @@ -49,7 +49,7 @@ Shared\Client.cs - + diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.CodeGeneration.targets b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.CodeGeneration.targets index 99a7c037b84f..76c4bba7c972 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.CodeGeneration.targets +++ b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.CodeGeneration.targets @@ -98,6 +98,8 @@ Copyright (c) .NET Foundation. All rights reserved. Debug="$(_RazorDebugTagHelperTask)" DebugTool="$(_RazorDebugTagHelperTool)" ToolAssembly="$(_RazorSdkToolAssembly)" + ToolExe="$(_RazorSdkDotNetHostFileName)" + ToolPath="$(_RazorSdkDotNetHostDirectory)" UseServer="$(UseRazorBuildServer)" ForceServer="$(_RazorForceBuildServer)" PipeName="$(_RazorBuildServerPipeName)" @@ -149,6 +151,8 @@ Copyright (c) .NET Foundation. All rights reserved. Debug="$(_RazorDebugGenerateCodeTask)" DebugTool="$(_RazorDebugGenerateCodeTool)" ToolAssembly="$(_RazorSdkToolAssembly)" + ToolExe="$(_RazorSdkDotNetHostFileName)" + ToolPath="$(_RazorSdkDotNetHostDirectory)" UseServer="$(UseRazorBuildServer)" ForceServer="$(_RazorForceBuildServer)" PipeName="$(_RazorBuildServerPipeName)" diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.Component.targets b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.Component.targets index 8f1ceefb014d..da255e3905d2 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.Component.targets +++ b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.Component.targets @@ -107,6 +107,8 @@ Copyright (c) .NET Foundation. All rights reserved. + ToolAssembly="$(_RazorSdkToolAssembly)" + ToolExe="$(_RazorSdkDotNetHostFileName)" + ToolPath="$(_RazorSdkDotNetHostDirectory)"> diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets index 116ec84e5d60..fbb16130b48d 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets +++ b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets @@ -36,6 +36,12 @@ Copyright (c) .NET Foundation. All rights reserved. <_RazorSdkToolAssembly>$(RazorSdkDirectoryRoot)tools\rzc.dll + + <_RazorSdkDotNetHostDirectory>$(NetCoreRoot) + <_RazorSdkDotNetHostFileName>dotnet + <_RazorSdkDotNetHostFileName Condition="'$(OS)' == 'Windows_NT'">dotnet.exe + + <_TargetingNETCoreApp30OrLater Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND @@ -871,7 +877,7 @@ Copyright (c) .NET Foundation. All rights reserved. - + diff --git a/src/Razor/Razor.Runtime/src/PublicAPI.Shipped.txt b/src/Razor/Razor.Runtime/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Razor/Razor.Runtime/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Razor/Razor.Runtime/src/PublicAPI.Unshipped.txt b/src/Razor/Razor.Runtime/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..901a05076c77 --- /dev/null +++ b/src/Razor/Razor.Runtime/src/PublicAPI.Unshipped.txt @@ -0,0 +1,215 @@ +#nullable enable +Microsoft.AspNetCore.Razor.Hosting.IRazorSourceChecksumMetadata +Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItem +Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItem.RazorCompiledItem() -> void +Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute +Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemExtensions +Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemLoader +Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemLoader.RazorCompiledItemLoader() -> void +Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemMetadataAttribute +Microsoft.AspNetCore.Razor.Hosting.RazorConfigurationNameAttribute +Microsoft.AspNetCore.Razor.Hosting.RazorExtensionAssemblyNameAttribute +Microsoft.AspNetCore.Razor.Hosting.RazorLanguageVersionAttribute +Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute +Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext +Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.ChildContentRetrieved.get -> bool +Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner +Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.TagHelperRunner() -> void +Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperScopeManager +Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.DefaultTagHelperContent() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.DictionaryAttributePrefixSet.get -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.HtmlAttributeNameAttribute() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBoundAttribute (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBoundAttribute.HtmlAttributeNotBoundAttribute() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.HtmlTargetElementAttribute() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.TagStructure.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagStructure (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.TagStructure.set -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.ITagHelper (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.ITagHelperComponent (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.ITagHelperComponent.Order.get -> int (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.OutputElementHintAttribute (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.ReadOnlyTagHelperAttributeList() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.RestrictChildrenAttribute (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelper (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.TagHelper() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.ValueStyle.get -> Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Clear() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.RemoveAt(int index) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.TagHelperAttributeList() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.TagHelperComponent() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.TagHelperContent() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.IsContentModified.get -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.SuppressOutput() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagMode.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagMode (forwarded, contained in Microsoft.AspNetCore.Razor) +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagMode.set -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.IsEmptyOrWhiteSpace.get -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.IsModified.get -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.Reinitialize() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.IsEmptyOrWhiteSpace.get -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.IsModified.get -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.Reinitialize() -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.FindFirstCharacterToEncode(char* text, int textLength) -> int (forwarded, contained in Microsoft.AspNetCore.Razor) +override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.MaxOutputCharactersPerInputCharacter.get -> int (forwarded, contained in Microsoft.AspNetCore.Razor) +override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.TryEncodeUnicodeScalar(int unicodeScalar, char* buffer, int bufferLength, out int numberOfCharactersWritten) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.WillEncode(int unicodeScalar) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +override Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.GetHashCode() -> int (forwarded, contained in Microsoft.AspNetCore.Razor) +virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.Order.get -> int (forwarded, contained in Microsoft.AspNetCore.Razor) +virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.Order.get -> int (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.Hosting.IRazorSourceChecksumMetadata.Checksum.get -> string +~Microsoft.AspNetCore.Razor.Hosting.IRazorSourceChecksumMetadata.ChecksumAlgorithm.get -> string +~Microsoft.AspNetCore.Razor.Hosting.IRazorSourceChecksumMetadata.Identifier.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute.Identifier.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute.Kind.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute.RazorCompiledItemAttribute(System.Type type, string kind, string identifier) -> void +~Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute.Type.get -> System.Type +~Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemLoader.LoadAttributes(System.Reflection.Assembly assembly) -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemMetadataAttribute.Key.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemMetadataAttribute.RazorCompiledItemMetadataAttribute(string key, string value) -> void +~Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemMetadataAttribute.Value.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorConfigurationNameAttribute.ConfigurationName.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorConfigurationNameAttribute.RazorConfigurationNameAttribute(string configurationName) -> void +~Microsoft.AspNetCore.Razor.Hosting.RazorExtensionAssemblyNameAttribute.AssemblyName.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorExtensionAssemblyNameAttribute.ExtensionName.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorExtensionAssemblyNameAttribute.RazorExtensionAssemblyNameAttribute(string extensionName, string assemblyName) -> void +~Microsoft.AspNetCore.Razor.Hosting.RazorLanguageVersionAttribute.LanguageVersion.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorLanguageVersionAttribute.RazorLanguageVersionAttribute(string languageVersion) -> void +~Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute.Checksum.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute.ChecksumAlgorithm.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute.Identifier.get -> string +~Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute.RazorSourceChecksumAttribute(string checksumAlgorithm, string checksum, string identifier) -> void +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.Add(Microsoft.AspNetCore.Razor.TagHelpers.ITagHelper tagHelper) -> void +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.AddHtmlAttribute(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> void +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.AddHtmlAttribute(string name, object value, Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle valueStyle) -> void +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.AddTagHelperAttribute(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> void +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.AddTagHelperAttribute(string name, object value, Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle valueStyle) -> void +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.Context.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.Items.get -> System.Collections.Generic.IDictionary +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.Output.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.Reinitialize(string tagName, Microsoft.AspNetCore.Razor.TagHelpers.TagMode tagMode, System.Collections.Generic.IDictionary items, string uniqueId, System.Func executeChildContentAsync) -> void +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync() -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.TagHelperExecutionContext(string tagName, Microsoft.AspNetCore.Razor.TagHelpers.TagMode tagMode, System.Collections.Generic.IDictionary items, string uniqueId, System.Func executeChildContentAsync, System.Action startTagHelperWritingScope, System.Func endTagHelperWritingScope) -> void +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.TagHelpers.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.RunAsync(Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext executionContext) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperScopeManager.Begin(string tagName, Microsoft.AspNetCore.Razor.TagHelpers.TagMode tagMode, string uniqueId, System.Func executeChildContentAsync) -> Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperScopeManager.End() -> Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext +~Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperScopeManager.TagHelperScopeManager(System.Action startTagHelperWritingScope, System.Func endTagHelperWritingScope) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.DictionaryAttributePrefix.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.DictionaryAttributePrefix.set -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.HtmlAttributeNameAttribute(string name) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.Name.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.Attributes.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.Attributes.set -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.HtmlTargetElementAttribute(string tag) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.ParentTag.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.ParentTag.set -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.Tag.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.ITagHelperComponent.Init(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.ITagHelperComponent.ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> System.Threading.Tasks.Task (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.OutputElementHintAttribute.OutputElement.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.OutputElementHintAttribute.OutputElementHintAttribute(string outputElement) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.ContainsName(string name) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.IndexOfName(string name) -> int (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.ReadOnlyTagHelperAttributeList(System.Collections.Generic.IList attributes) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.TryGetAttribute(string name, out Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.TryGetAttributes(string name, out System.Collections.Generic.IReadOnlyList attributes) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.this[string name].get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.RestrictChildrenAttribute.ChildTags.get -> System.Collections.Generic.IEnumerable (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.RestrictChildrenAttribute.RestrictChildrenAttribute(string childTag, params string[] childTags) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.CopyTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.Equals(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute other) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.MoveTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.Name.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.TagHelperAttribute(string name) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.TagHelperAttribute(string name, object value) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.TagHelperAttribute(string name, object value, Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle valueStyle) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.Value.get -> object (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Add(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Add(string name, object value) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Insert(int index, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Remove(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.RemoveAll(string name) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.SetAttribute(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.SetAttribute(string name, object value) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.TagHelperAttributeList(System.Collections.Generic.IEnumerable attributes) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.TagHelperAttributeList(System.Collections.Generic.List attributes) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.this[int index].get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.this[int index].set -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.AppendFormat(System.IFormatProvider provider, string format, params object[] args) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.AppendFormat(string format, params object[] args) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.SetContent(string unencoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.SetHtmlContent(Microsoft.AspNetCore.Html.IHtmlContent htmlContent) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.SetHtmlContent(string encoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.AllAttributes.get -> Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.Items.get -> System.Collections.Generic.IDictionary (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.Reinitialize(System.Collections.Generic.IDictionary items, string uniqueId) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.Reinitialize(string tagName, System.Collections.Generic.IDictionary items, string uniqueId) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.TagHelperContext(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList allAttributes, System.Collections.Generic.IDictionary items, string uniqueId) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.TagHelperContext(string tagName, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList allAttributes, System.Collections.Generic.IDictionary items, string uniqueId) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.TagName.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.UniqueId.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.Attributes.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.Content.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.Content.set -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.GetChildContentAsync() -> System.Threading.Tasks.Task (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.GetChildContentAsync(System.Text.Encodings.Web.HtmlEncoder encoder) -> System.Threading.Tasks.Task (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.GetChildContentAsync(bool useCachedResult) -> System.Threading.Tasks.Task (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.GetChildContentAsync(bool useCachedResult, System.Text.Encodings.Web.HtmlEncoder encoder) -> System.Threading.Tasks.Task (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.PostContent.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.PostElement.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.PreContent.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.PreElement.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.Reinitialize(string tagName, Microsoft.AspNetCore.Razor.TagHelpers.TagMode tagMode) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagHelperOutput(string tagName, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList attributes, System.Func> getChildContentAsync) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagName.get -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagName.set -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~abstract Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItem.Identifier.get -> string +~abstract Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItem.Kind.get -> string +~abstract Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItem.Metadata.get -> System.Collections.Generic.IReadOnlyList +~abstract Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItem.Type.get -> System.Type +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.Append(string unencoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.AppendHtml(Microsoft.AspNetCore.Html.IHtmlContent htmlContent) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.AppendHtml(string encoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.Clear() -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.CopyTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.GetContent() -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.GetContent(System.Text.Encodings.Web.HtmlEncoder encoder) -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.MoveTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~const Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.ElementCatchAllTarget = "*" -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.Append(string unencoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.AppendHtml(Microsoft.AspNetCore.Html.IHtmlContent htmlContent) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.AppendHtml(string encoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.Clear() -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.CopyTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.GetContent() -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.GetContent(System.Text.Encodings.Web.HtmlEncoder encoder) -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.MoveTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Encode(System.IO.TextWriter output, char[] value, int startIndex, int characterCount) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Encode(System.IO.TextWriter output, string value, int startIndex, int characterCount) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Encode(string value) -> string (forwarded, contained in Microsoft.AspNetCore.Razor) +~override Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.Equals(object obj) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +~static Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemExtensions.GetChecksumMetadata(this Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItem item) -> System.Collections.Generic.IReadOnlyList +~static Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Default.get -> Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder (forwarded, contained in Microsoft.AspNetCore.Razor) +~static Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.NameEquals(string name, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> bool (forwarded, contained in Microsoft.AspNetCore.Razor) +~virtual Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemLoader.CreateItem(Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute attribute) -> Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItem +~virtual Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemLoader.LoadItems(System.Reflection.Assembly assembly) -> System.Collections.Generic.IReadOnlyList +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.Init(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.Process(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> System.Threading.Tasks.Task (forwarded, contained in Microsoft.AspNetCore.Razor) +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.Init(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.Process(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> void (forwarded, contained in Microsoft.AspNetCore.Razor) +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> System.Threading.Tasks.Task (forwarded, contained in Microsoft.AspNetCore.Razor) diff --git a/src/Razor/Razor/src/PublicAPI.Shipped.txt b/src/Razor/Razor/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Razor/Razor/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Razor/Razor/src/PublicAPI.Unshipped.txt b/src/Razor/Razor/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..1629f23814e6 --- /dev/null +++ b/src/Razor/Razor/src/PublicAPI.Unshipped.txt @@ -0,0 +1,166 @@ +#nullable enable +Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent +Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.DefaultTagHelperContent() -> void +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.DictionaryAttributePrefixSet.get -> bool +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.HtmlAttributeNameAttribute() -> void +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBoundAttribute +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBoundAttribute.HtmlAttributeNotBoundAttribute() -> void +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes = 0 -> Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.Minimized = 3 -> Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.NoQuotes = 2 -> Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle +Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.SingleQuotes = 1 -> Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle +Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute +Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.HtmlTargetElementAttribute() -> void +Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.TagStructure.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagStructure +Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.TagStructure.set -> void +Microsoft.AspNetCore.Razor.TagHelpers.ITagHelper +Microsoft.AspNetCore.Razor.TagHelpers.ITagHelperComponent +Microsoft.AspNetCore.Razor.TagHelpers.ITagHelperComponent.Order.get -> int +Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder +Microsoft.AspNetCore.Razor.TagHelpers.OutputElementHintAttribute +Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList +Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.ReadOnlyTagHelperAttributeList() -> void +Microsoft.AspNetCore.Razor.TagHelpers.RestrictChildrenAttribute +Microsoft.AspNetCore.Razor.TagHelpers.TagHelper +Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.TagHelper() -> void +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.ValueStyle.get -> Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Clear() -> void +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.RemoveAt(int index) -> void +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.TagHelperAttributeList() -> void +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.TagHelperComponent() -> void +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.TagHelperContent() -> void +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.IsContentModified.get -> bool +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.SuppressOutput() -> void +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagMode.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagMode +Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagMode.set -> void +Microsoft.AspNetCore.Razor.TagHelpers.TagMode +Microsoft.AspNetCore.Razor.TagHelpers.TagMode.SelfClosing = 1 -> Microsoft.AspNetCore.Razor.TagHelpers.TagMode +Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag = 0 -> Microsoft.AspNetCore.Razor.TagHelpers.TagMode +Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagOnly = 2 -> Microsoft.AspNetCore.Razor.TagHelpers.TagMode +Microsoft.AspNetCore.Razor.TagHelpers.TagStructure +Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing = 1 -> Microsoft.AspNetCore.Razor.TagHelpers.TagStructure +Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.Unspecified = 0 -> Microsoft.AspNetCore.Razor.TagHelpers.TagStructure +Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag = 2 -> Microsoft.AspNetCore.Razor.TagHelpers.TagStructure +abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.IsEmptyOrWhiteSpace.get -> bool +abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.IsModified.get -> bool +abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.Reinitialize() -> void +override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.IsEmptyOrWhiteSpace.get -> bool +override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.IsModified.get -> bool +override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.Reinitialize() -> void +override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.FindFirstCharacterToEncode(char* text, int textLength) -> int +override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.MaxOutputCharactersPerInputCharacter.get -> int +override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.TryEncodeUnicodeScalar(int unicodeScalar, char* buffer, int bufferLength, out int numberOfCharactersWritten) -> bool +override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.WillEncode(int unicodeScalar) -> bool +override Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.GetHashCode() -> int +virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.Order.get -> int +virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.Order.get -> int +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.DictionaryAttributePrefix.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.DictionaryAttributePrefix.set -> void +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.HtmlAttributeNameAttribute(string name) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute.Name.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.Attributes.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.Attributes.set -> void +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.HtmlTargetElementAttribute(string tag) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.ParentTag.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.ParentTag.set -> void +~Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.Tag.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.ITagHelperComponent.Init(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.ITagHelperComponent.ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Razor.TagHelpers.OutputElementHintAttribute.OutputElement.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.OutputElementHintAttribute.OutputElementHintAttribute(string outputElement) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.ContainsName(string name) -> bool +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.IndexOfName(string name) -> int +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.ReadOnlyTagHelperAttributeList(System.Collections.Generic.IList attributes) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.TryGetAttribute(string name, out Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> bool +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.TryGetAttributes(string name, out System.Collections.Generic.IReadOnlyList attributes) -> bool +~Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.this[string name].get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute +~Microsoft.AspNetCore.Razor.TagHelpers.RestrictChildrenAttribute.ChildTags.get -> System.Collections.Generic.IEnumerable +~Microsoft.AspNetCore.Razor.TagHelpers.RestrictChildrenAttribute.RestrictChildrenAttribute(string childTag, params string[] childTags) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.CopyTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.Equals(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute other) -> bool +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.MoveTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.Name.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.TagHelperAttribute(string name) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.TagHelperAttribute(string name, object value) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.TagHelperAttribute(string name, object value, Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle valueStyle) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.Value.get -> object +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Add(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Add(string name, object value) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Insert(int index, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.Remove(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> bool +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.RemoveAll(string name) -> bool +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.SetAttribute(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.SetAttribute(string name, object value) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.TagHelperAttributeList(System.Collections.Generic.IEnumerable attributes) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.TagHelperAttributeList(System.Collections.Generic.List attributes) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.this[int index].get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList.this[int index].set -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.AppendFormat(System.IFormatProvider provider, string format, params object[] args) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.AppendFormat(string format, params object[] args) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.SetContent(string unencoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.SetHtmlContent(Microsoft.AspNetCore.Html.IHtmlContent htmlContent) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.SetHtmlContent(string encoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.AllAttributes.get -> Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.Items.get -> System.Collections.Generic.IDictionary +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.Reinitialize(System.Collections.Generic.IDictionary items, string uniqueId) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.Reinitialize(string tagName, System.Collections.Generic.IDictionary items, string uniqueId) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.TagHelperContext(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList allAttributes, System.Collections.Generic.IDictionary items, string uniqueId) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.TagHelperContext(string tagName, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList allAttributes, System.Collections.Generic.IDictionary items, string uniqueId) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.TagName.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext.UniqueId.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.Attributes.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.Content.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.Content.set -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.GetChildContentAsync() -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.GetChildContentAsync(System.Text.Encodings.Web.HtmlEncoder encoder) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.GetChildContentAsync(bool useCachedResult) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.GetChildContentAsync(bool useCachedResult, System.Text.Encodings.Web.HtmlEncoder encoder) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.PostContent.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.PostElement.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.PreContent.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.PreElement.get -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.Reinitialize(string tagName, Microsoft.AspNetCore.Razor.TagHelpers.TagMode tagMode) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagHelperOutput(string tagName, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttributeList attributes, System.Func> getChildContentAsync) -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagName.get -> string +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.TagName.set -> void +~Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput.WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) -> void +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.Append(string unencoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.AppendHtml(Microsoft.AspNetCore.Html.IHtmlContent htmlContent) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.AppendHtml(string encoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.Clear() -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.CopyTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.GetContent() -> string +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.GetContent(System.Text.Encodings.Web.HtmlEncoder encoder) -> string +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.MoveTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void +~abstract Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent.WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) -> void +~const Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute.ElementCatchAllTarget = "*" -> string +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.Append(string unencoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.AppendHtml(Microsoft.AspNetCore.Html.IHtmlContent htmlContent) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.AppendHtml(string encoded) -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.Clear() -> Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContent +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.CopyTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.GetContent() -> string +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.GetContent(System.Text.Encodings.Web.HtmlEncoder encoder) -> string +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.MoveTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) -> void +~override Microsoft.AspNetCore.Razor.TagHelpers.DefaultTagHelperContent.WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) -> void +~override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Encode(System.IO.TextWriter output, char[] value, int startIndex, int characterCount) -> void +~override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Encode(System.IO.TextWriter output, string value, int startIndex, int characterCount) -> void +~override Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Encode(string value) -> string +~override Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute.Equals(object obj) -> bool +~static Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Default.get -> Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder +~static Microsoft.AspNetCore.Razor.TagHelpers.ReadOnlyTagHelperAttributeList.NameEquals(string name, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute attribute) -> bool +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.Init(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context) -> void +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.Process(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> void +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.Init(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context) -> void +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.Process(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> void +~virtual Microsoft.AspNetCore.Razor.TagHelpers.TagHelperComponent.ProcessAsync(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) -> System.Threading.Tasks.Task diff --git a/src/Razor/test/testassets/RazorTest.Introspection.targets b/src/Razor/test/testassets/RazorTest.Introspection.targets index de0fc9ee3eb1..c862fa248d09 100644 --- a/src/Razor/test/testassets/RazorTest.Introspection.targets +++ b/src/Razor/test/testassets/RazorTest.Introspection.targets @@ -47,6 +47,10 @@ + + + + <_SdkTaskPath>$([System.IO.Path]::GetFullPath('$(RazorSdkBuildTasksAssembly)')) diff --git a/src/Security/Authentication/Certificate/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Certificate/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/Certificate/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/Certificate/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Certificate/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..82246d9e2e67 --- /dev/null +++ b/src/Security/Authentication/Certificate/src/PublicAPI.Unshipped.txt @@ -0,0 +1,69 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationDefaults +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.CertificateAuthenticationEvents() -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationFailedContext +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.AllowedCertificateTypes.get -> Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.AllowedCertificateTypes.set -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.CertificateAuthenticationOptions() -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.ChainTrustValidationMode.get -> System.Security.Cryptography.X509Certificates.X509ChainTrustMode +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.ChainTrustValidationMode.set -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.RevocationFlag.get -> System.Security.Cryptography.X509Certificates.X509RevocationFlag +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.RevocationFlag.set -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.RevocationMode.get -> System.Security.Cryptography.X509Certificates.X509RevocationMode +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.RevocationMode.set -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.ValidateCertificateUse.get -> bool +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.ValidateCertificateUse.set -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.ValidateValidityPeriod.get -> bool +Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.ValidateValidityPeriod.set -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateChallengeContext +Microsoft.AspNetCore.Authentication.Certificate.CertificateChallengeContext.HandleResponse() -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateChallengeContext.Handled.get -> bool +Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes +Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes.All = Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes.Chained | Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes.SelfSigned -> Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes +Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes.Chained = 1 -> Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes +Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes.SelfSigned = 2 -> Microsoft.AspNetCore.Authentication.Certificate.CertificateTypes +Microsoft.AspNetCore.Authentication.Certificate.CertificateValidatedContext +Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCache +Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCacheOptions +Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCacheOptions.CacheEntryExpiration.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCacheOptions.CacheEntryExpiration.set -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCacheOptions.CacheSize.get -> int +Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCacheOptions.CacheSize.set -> void +Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCacheOptions.CertificateValidationCacheOptions() -> void +Microsoft.AspNetCore.Authentication.Certificate.ICertificateValidationCache +Microsoft.AspNetCore.Authentication.Certificate.X509Certificate2Extensions +Microsoft.Extensions.DependencyInjection.CertificateAuthenticationAppBuilderExtensions +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.OnAuthenticationFailed.get -> System.Func +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.OnAuthenticationFailed.set -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.OnCertificateValidated.get -> System.Func +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.OnCertificateValidated.set -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.OnChallenge.get -> System.Func +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.OnChallenge.set -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationFailedContext.CertificateAuthenticationFailedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions options) -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationFailedContext.Exception.get -> System.Exception +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationFailedContext.Exception.set -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.CustomTrustStore.get -> System.Security.Cryptography.X509Certificates.X509Certificate2Collection +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.CustomTrustStore.set -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.Events.get -> Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents +~Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions.Events.set -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateChallengeContext.CertificateChallengeContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions options, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateValidatedContext.CertificateValidatedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationOptions options) -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateValidatedContext.ClientCertificate.get -> System.Security.Cryptography.X509Certificates.X509Certificate2 +~Microsoft.AspNetCore.Authentication.Certificate.CertificateValidatedContext.ClientCertificate.set -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCache.CertificateValidationCache(Microsoft.Extensions.Options.IOptions options) -> void +~Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCache.Get(Microsoft.AspNetCore.Http.HttpContext context, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) -> Microsoft.AspNetCore.Authentication.AuthenticateResult +~Microsoft.AspNetCore.Authentication.Certificate.CertificateValidationCache.Put(Microsoft.AspNetCore.Http.HttpContext context, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, Microsoft.AspNetCore.Authentication.AuthenticateResult result) -> void +~Microsoft.AspNetCore.Authentication.Certificate.ICertificateValidationCache.Get(Microsoft.AspNetCore.Http.HttpContext context, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) -> Microsoft.AspNetCore.Authentication.AuthenticateResult +~Microsoft.AspNetCore.Authentication.Certificate.ICertificateValidationCache.Put(Microsoft.AspNetCore.Http.HttpContext context, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, Microsoft.AspNetCore.Authentication.AuthenticateResult result) -> void +~const Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationDefaults.AuthenticationScheme = "Certificate" -> string +~static Microsoft.AspNetCore.Authentication.Certificate.X509Certificate2Extensions.IsSelfSigned(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) -> bool +~static Microsoft.Extensions.DependencyInjection.CertificateAuthenticationAppBuilderExtensions.AddCertificate(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.CertificateAuthenticationAppBuilderExtensions.AddCertificate(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.CertificateAuthenticationAppBuilderExtensions.AddCertificate(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.CertificateAuthenticationAppBuilderExtensions.AddCertificate(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.CertificateAuthenticationAppBuilderExtensions.AddCertificateCache(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions = null) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~virtual Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.AuthenticationFailed(Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationFailedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.CertificateValidated(Microsoft.AspNetCore.Authentication.Certificate.CertificateValidatedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationEvents.Challenge(Microsoft.AspNetCore.Authentication.Certificate.CertificateChallengeContext context) -> System.Threading.Tasks.Task diff --git a/src/Security/Authentication/Cookies/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Cookies/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/Cookies/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/Cookies/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Cookies/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..0846cadeb3c6 --- /dev/null +++ b/src/Security/Authentication/Cookies/src/PublicAPI.Unshipped.txt @@ -0,0 +1,116 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager +Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.AppendResponseCookie(Microsoft.AspNetCore.Http.HttpContext! context, string! key, string? value, Microsoft.AspNetCore.Http.CookieOptions! options) -> void +Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.ChunkSize.get -> int? +Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.ChunkSize.set -> void +Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.ChunkingCookieManager() -> void +Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.DeleteCookie(Microsoft.AspNetCore.Http.HttpContext! context, string! key, Microsoft.AspNetCore.Http.CookieOptions! options) -> void +Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.GetRequestCookie(Microsoft.AspNetCore.Http.HttpContext! context, string! key) -> string? +Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.ThrowForPartialCookies.get -> bool +Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.ThrowForPartialCookies.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.CookieAuthenticationEvents() -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnRedirectToAccessDenied.get -> System.Func!, System.Threading.Tasks.Task!>! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnRedirectToAccessDenied.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnRedirectToLogin.get -> System.Func!, System.Threading.Tasks.Task!>! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnRedirectToLogin.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnRedirectToLogout.get -> System.Func!, System.Threading.Tasks.Task!>! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnRedirectToLogout.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnRedirectToReturnUrl.get -> System.Func!, System.Threading.Tasks.Task!>! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnRedirectToReturnUrl.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnSignedIn.get -> System.Func! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnSignedIn.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnSigningIn.get -> System.Func! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnSigningIn.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnSigningOut.get -> System.Func! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnSigningOut.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnValidatePrincipal.get -> System.Func! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnValidatePrincipal.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.CookieAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.Events.get -> Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.Events.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.AccessDeniedPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.AccessDeniedPath.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.Cookie.get -> Microsoft.AspNetCore.Http.CookieBuilder! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.Cookie.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.CookieAuthenticationOptions() -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.CookieManager.get -> Microsoft.AspNetCore.Authentication.Cookies.ICookieManager! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.CookieManager.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.DataProtectionProvider.get -> Microsoft.AspNetCore.DataProtection.IDataProtectionProvider? +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.DataProtectionProvider.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.Events.get -> Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.Events.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.ExpireTimeSpan.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.ExpireTimeSpan.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.LoginPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.LoginPath.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.LogoutPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.LogoutPath.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.ReturnUrlParameter.get -> string! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.ReturnUrlParameter.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.SessionStore.get -> Microsoft.AspNetCore.Authentication.Cookies.ITicketStore? +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.SessionStore.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.SlidingExpiration.get -> bool +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.SlidingExpiration.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.TicketDataFormat.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat! +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions.TicketDataFormat.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieSignedInContext +Microsoft.AspNetCore.Authentication.Cookies.CookieSignedInContext.CookieSignedInContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, System.Security.Claims.ClaimsPrincipal! principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties, Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions! options) -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieSigningInContext +Microsoft.AspNetCore.Authentication.Cookies.CookieSigningInContext.CookieOptions.get -> Microsoft.AspNetCore.Http.CookieOptions! +Microsoft.AspNetCore.Authentication.Cookies.CookieSigningInContext.CookieOptions.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieSigningInContext.CookieSigningInContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions! options, System.Security.Claims.ClaimsPrincipal! principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties, Microsoft.AspNetCore.Http.CookieOptions! cookieOptions) -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieSigningOutContext +Microsoft.AspNetCore.Authentication.Cookies.CookieSigningOutContext.CookieOptions.get -> Microsoft.AspNetCore.Http.CookieOptions! +Microsoft.AspNetCore.Authentication.Cookies.CookieSigningOutContext.CookieOptions.set -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieSigningOutContext.CookieSigningOutContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions! options, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties, Microsoft.AspNetCore.Http.CookieOptions! cookieOptions) -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext +Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext.CookieValidatePrincipalContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions! options, Microsoft.AspNetCore.Authentication.AuthenticationTicket! ticket) -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext.RejectPrincipal() -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext.ReplacePrincipal(System.Security.Claims.ClaimsPrincipal! principal) -> void +Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext.ShouldRenew.get -> bool +Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext.ShouldRenew.set -> void +Microsoft.AspNetCore.Authentication.Cookies.ICookieManager +Microsoft.AspNetCore.Authentication.Cookies.ICookieManager.AppendResponseCookie(Microsoft.AspNetCore.Http.HttpContext! context, string! key, string? value, Microsoft.AspNetCore.Http.CookieOptions! options) -> void +Microsoft.AspNetCore.Authentication.Cookies.ICookieManager.DeleteCookie(Microsoft.AspNetCore.Http.HttpContext! context, string! key, Microsoft.AspNetCore.Http.CookieOptions! options) -> void +Microsoft.AspNetCore.Authentication.Cookies.ICookieManager.GetRequestCookie(Microsoft.AspNetCore.Http.HttpContext! context, string! key) -> string? +Microsoft.AspNetCore.Authentication.Cookies.ITicketStore +Microsoft.AspNetCore.Authentication.Cookies.ITicketStore.RemoveAsync(string! key) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.Cookies.ITicketStore.RenewAsync(string! key, Microsoft.AspNetCore.Authentication.AuthenticationTicket! ticket) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.Cookies.ITicketStore.RetrieveAsync(string! key) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.Cookies.ITicketStore.StoreAsync(Microsoft.AspNetCore.Authentication.AuthenticationTicket! ticket) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.Cookies.PostConfigureCookieAuthenticationOptions +Microsoft.AspNetCore.Authentication.Cookies.PostConfigureCookieAuthenticationOptions.PostConfigure(string! name, Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationOptions! options) -> void +Microsoft.AspNetCore.Authentication.Cookies.PostConfigureCookieAuthenticationOptions.PostConfigureCookieAuthenticationOptions(Microsoft.AspNetCore.DataProtection.IDataProtectionProvider! dataProtection) -> void +Microsoft.Extensions.DependencyInjection.CookieExtensions +const Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.DefaultChunkSize = 4050 -> int +const Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.AuthenticationScheme = "Cookies" -> string! +override Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.CreateEventsAsync() -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.HandleAuthenticateAsync() -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.HandleChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.HandleForbiddenAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.HandleSignInAsync(System.Security.Claims.ClaimsPrincipal! user, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.HandleSignOutAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.InitializeHandlerAsync() -> System.Threading.Tasks.Task! +static Microsoft.Extensions.DependencyInjection.CookieExtensions.AddCookie(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static Microsoft.Extensions.DependencyInjection.CookieExtensions.AddCookie(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, System.Action! configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static Microsoft.Extensions.DependencyInjection.CookieExtensions.AddCookie(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, string! authenticationScheme) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static Microsoft.Extensions.DependencyInjection.CookieExtensions.AddCookie(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, string! authenticationScheme, System.Action! configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static Microsoft.Extensions.DependencyInjection.CookieExtensions.AddCookie(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, string! authenticationScheme, string? displayName, System.Action! configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static readonly Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.AccessDeniedPath -> Microsoft.AspNetCore.Http.PathString +static readonly Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.CookiePrefix -> string! +static readonly Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.LoginPath -> Microsoft.AspNetCore.Http.PathString +static readonly Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.LogoutPath -> Microsoft.AspNetCore.Http.PathString +static readonly Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.ReturnUrlParameter -> string! +virtual Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.RedirectToAccessDenied(Microsoft.AspNetCore.Authentication.RedirectContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.RedirectToLogin(Microsoft.AspNetCore.Authentication.RedirectContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.RedirectToLogout(Microsoft.AspNetCore.Authentication.RedirectContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.RedirectToReturnUrl(Microsoft.AspNetCore.Authentication.RedirectContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.SignedIn(Microsoft.AspNetCore.Authentication.Cookies.CookieSignedInContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.SigningIn(Microsoft.AspNetCore.Authentication.Cookies.CookieSigningInContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.SigningOut(Microsoft.AspNetCore.Authentication.Cookies.CookieSigningOutContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.ValidatePrincipal(Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.FinishResponseAsync() -> System.Threading.Tasks.Task! diff --git a/src/Security/Authentication/Core/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Core/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/Core/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/Core/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Core/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..9a702c962a55 --- /dev/null +++ b/src/Security/Authentication/Core/src/PublicAPI.Unshipped.txt @@ -0,0 +1,271 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.AccessDeniedContext +Microsoft.AspNetCore.Authentication.AccessDeniedContext.AccessDeniedContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions! options) -> void +Microsoft.AspNetCore.Authentication.AccessDeniedContext.AccessDeniedPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.AccessDeniedContext.AccessDeniedPath.set -> void +Microsoft.AspNetCore.Authentication.AccessDeniedContext.Properties.get -> Microsoft.AspNetCore.Authentication.AuthenticationProperties? +Microsoft.AspNetCore.Authentication.AccessDeniedContext.Properties.set -> void +Microsoft.AspNetCore.Authentication.AccessDeniedContext.ReturnUrl.get -> string? +Microsoft.AspNetCore.Authentication.AccessDeniedContext.ReturnUrl.set -> void +Microsoft.AspNetCore.Authentication.AccessDeniedContext.ReturnUrlParameter.get -> string! +Microsoft.AspNetCore.Authentication.AccessDeniedContext.ReturnUrlParameter.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationBuilder +Microsoft.AspNetCore.Authentication.AuthenticationBuilder.AuthenticationBuilder(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void +Microsoft.AspNetCore.Authentication.AuthenticationHandler +Microsoft.AspNetCore.Authentication.AuthenticationHandler.AuthenticateAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.AuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void +Microsoft.AspNetCore.Authentication.AuthenticationHandler.BuildRedirectUri(string! targetPath) -> string! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.ChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.Clock.get -> Microsoft.AspNetCore.Authentication.ISystemClock! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.Context.get -> Microsoft.AspNetCore.Http.HttpContext! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.CurrentUri.get -> string! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.ForbidAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.HandleAuthenticateOnceAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.HandleAuthenticateOnceSafeAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.InitializeAsync(Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.Logger.get -> Microsoft.Extensions.Logging.ILogger! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.Options.get -> TOptions! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.OptionsMonitor.get -> Microsoft.Extensions.Options.IOptionsMonitor! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.OriginalPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.AuthenticationHandler.OriginalPathBase.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.AuthenticationHandler.Request.get -> Microsoft.AspNetCore.Http.HttpRequest! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.Response.get -> Microsoft.AspNetCore.Http.HttpResponse! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.Scheme.get -> Microsoft.AspNetCore.Authentication.AuthenticationScheme! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.UrlEncoder.get -> System.Text.Encodings.Web.UrlEncoder! +Microsoft.AspNetCore.Authentication.AuthenticationMiddleware +Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.AuthenticationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider! schemes) -> void +Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Schemes.get -> Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider! +Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Schemes.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.AuthenticationSchemeOptions() -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ClaimsIssuer.get -> string? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ClaimsIssuer.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.Events.get -> object? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.Events.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.EventsType.get -> System.Type? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.EventsType.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardAuthenticate.get -> string? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardAuthenticate.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardChallenge.get -> string? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardChallenge.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardDefault.get -> string? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardDefault.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardDefaultSelector.get -> System.Func? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardDefaultSelector.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardForbid.get -> string? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardForbid.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardSignIn.get -> string? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardSignIn.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardSignOut.get -> string? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardSignOut.set -> void +Microsoft.AspNetCore.Authentication.Base64UrlTextEncoder +Microsoft.AspNetCore.Authentication.BaseContext +Microsoft.AspNetCore.Authentication.BaseContext.BaseContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, TOptions! options) -> void +Microsoft.AspNetCore.Authentication.BaseContext.HttpContext.get -> Microsoft.AspNetCore.Http.HttpContext! +Microsoft.AspNetCore.Authentication.BaseContext.Options.get -> TOptions! +Microsoft.AspNetCore.Authentication.BaseContext.Request.get -> Microsoft.AspNetCore.Http.HttpRequest! +Microsoft.AspNetCore.Authentication.BaseContext.Response.get -> Microsoft.AspNetCore.Http.HttpResponse! +Microsoft.AspNetCore.Authentication.BaseContext.Scheme.get -> Microsoft.AspNetCore.Authentication.AuthenticationScheme! +Microsoft.AspNetCore.Authentication.HandleRequestContext +Microsoft.AspNetCore.Authentication.HandleRequestContext.HandleRequestContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, TOptions! options) -> void +Microsoft.AspNetCore.Authentication.HandleRequestContext.HandleResponse() -> void +Microsoft.AspNetCore.Authentication.HandleRequestContext.Result.get -> Microsoft.AspNetCore.Authentication.HandleRequestResult! +Microsoft.AspNetCore.Authentication.HandleRequestContext.Result.set -> void +Microsoft.AspNetCore.Authentication.HandleRequestContext.SkipHandler() -> void +Microsoft.AspNetCore.Authentication.HandleRequestResult +Microsoft.AspNetCore.Authentication.HandleRequestResult.HandleRequestResult() -> void +Microsoft.AspNetCore.Authentication.HandleRequestResult.Handled.get -> bool +Microsoft.AspNetCore.Authentication.HandleRequestResult.Skipped.get -> bool +Microsoft.AspNetCore.Authentication.IDataSerializer +Microsoft.AspNetCore.Authentication.IDataSerializer.Deserialize(byte[]! data) -> TModel +Microsoft.AspNetCore.Authentication.IDataSerializer.Serialize(TModel model) -> byte[]! +Microsoft.AspNetCore.Authentication.ISecureDataFormat +Microsoft.AspNetCore.Authentication.ISecureDataFormat.Protect(TData data) -> string! +Microsoft.AspNetCore.Authentication.ISecureDataFormat.Protect(TData data, string? purpose) -> string! +Microsoft.AspNetCore.Authentication.ISecureDataFormat.Unprotect(string! protectedText) -> TData +Microsoft.AspNetCore.Authentication.ISecureDataFormat.Unprotect(string! protectedText, string? purpose) -> TData +Microsoft.AspNetCore.Authentication.ISystemClock +Microsoft.AspNetCore.Authentication.ISystemClock.UtcNow.get -> System.DateTimeOffset +Microsoft.AspNetCore.Authentication.JsonDocumentAuthExtensions +Microsoft.AspNetCore.Authentication.PolicySchemeHandler +Microsoft.AspNetCore.Authentication.PolicySchemeHandler.PolicySchemeHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void +Microsoft.AspNetCore.Authentication.PolicySchemeOptions +Microsoft.AspNetCore.Authentication.PolicySchemeOptions.PolicySchemeOptions() -> void +Microsoft.AspNetCore.Authentication.PrincipalContext +Microsoft.AspNetCore.Authentication.PrincipalContext.PrincipalContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, TOptions! options, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> void +Microsoft.AspNetCore.Authentication.PropertiesContext +Microsoft.AspNetCore.Authentication.PropertiesContext.PropertiesContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, TOptions! options, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> void +Microsoft.AspNetCore.Authentication.PropertiesDataFormat +Microsoft.AspNetCore.Authentication.PropertiesDataFormat.PropertiesDataFormat(Microsoft.AspNetCore.DataProtection.IDataProtector! protector) -> void +Microsoft.AspNetCore.Authentication.PropertiesSerializer +Microsoft.AspNetCore.Authentication.PropertiesSerializer.PropertiesSerializer() -> void +Microsoft.AspNetCore.Authentication.RedirectContext +Microsoft.AspNetCore.Authentication.RedirectContext.RedirectContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, TOptions! options, Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties, string! redirectUri) -> void +Microsoft.AspNetCore.Authentication.RedirectContext.RedirectUri.get -> string! +Microsoft.AspNetCore.Authentication.RedirectContext.RedirectUri.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationContext +Microsoft.AspNetCore.Authentication.RemoteAuthenticationContext.Fail(System.Exception! failure) -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationContext.Fail(string! failureMessage) -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationContext.Principal.get -> System.Security.Claims.ClaimsPrincipal? +Microsoft.AspNetCore.Authentication.RemoteAuthenticationContext.Principal.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationContext.RemoteAuthenticationContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, TOptions! options, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationContext.Success() -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents +Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.OnAccessDenied.get -> System.Func! +Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.OnAccessDenied.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.OnRemoteFailure.get -> System.Func! +Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.OnRemoteFailure.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.OnTicketReceived.get -> System.Func! +Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.OnTicketReceived.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.RemoteAuthenticationEvents() -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler +Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.Events.get -> Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents! +Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.Events.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.RemoteAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.SignInScheme.get -> string? +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.AccessDeniedPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.AccessDeniedPath.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.Backchannel.get -> System.Net.Http.HttpClient! +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.Backchannel.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.BackchannelHttpHandler.get -> System.Net.Http.HttpMessageHandler? +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.BackchannelHttpHandler.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.BackchannelTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.BackchannelTimeout.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.CallbackPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.CallbackPath.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.CorrelationCookie.get -> Microsoft.AspNetCore.Http.CookieBuilder! +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.CorrelationCookie.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.DataProtectionProvider.get -> Microsoft.AspNetCore.DataProtection.IDataProtectionProvider? +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.DataProtectionProvider.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.Events.get -> Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents! +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.Events.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.RemoteAuthenticationOptions() -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.RemoteAuthenticationTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.RemoteAuthenticationTimeout.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.ReturnUrlParameter.get -> string! +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.ReturnUrlParameter.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.SaveTokens.get -> bool +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.SaveTokens.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.SignInScheme.get -> string? +Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.SignInScheme.set -> void +Microsoft.AspNetCore.Authentication.RemoteFailureContext +Microsoft.AspNetCore.Authentication.RemoteFailureContext.Failure.get -> System.Exception? +Microsoft.AspNetCore.Authentication.RemoteFailureContext.Failure.set -> void +Microsoft.AspNetCore.Authentication.RemoteFailureContext.Properties.get -> Microsoft.AspNetCore.Authentication.AuthenticationProperties? +Microsoft.AspNetCore.Authentication.RemoteFailureContext.Properties.set -> void +Microsoft.AspNetCore.Authentication.RemoteFailureContext.RemoteFailureContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions! options, System.Exception! failure) -> void +Microsoft.AspNetCore.Authentication.RequestPathBaseCookieBuilder +Microsoft.AspNetCore.Authentication.RequestPathBaseCookieBuilder.RequestPathBaseCookieBuilder() -> void +Microsoft.AspNetCore.Authentication.ResultContext +Microsoft.AspNetCore.Authentication.ResultContext.Fail(System.Exception! failure) -> void +Microsoft.AspNetCore.Authentication.ResultContext.Fail(string! failureMessage) -> void +Microsoft.AspNetCore.Authentication.ResultContext.NoResult() -> void +Microsoft.AspNetCore.Authentication.ResultContext.Principal.get -> System.Security.Claims.ClaimsPrincipal? +Microsoft.AspNetCore.Authentication.ResultContext.Principal.set -> void +Microsoft.AspNetCore.Authentication.ResultContext.Properties.get -> Microsoft.AspNetCore.Authentication.AuthenticationProperties! +Microsoft.AspNetCore.Authentication.ResultContext.Properties.set -> void +Microsoft.AspNetCore.Authentication.ResultContext.Result.get -> Microsoft.AspNetCore.Authentication.AuthenticateResult! +Microsoft.AspNetCore.Authentication.ResultContext.ResultContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, TOptions! options) -> void +Microsoft.AspNetCore.Authentication.ResultContext.Success() -> void +Microsoft.AspNetCore.Authentication.SecureDataFormat +Microsoft.AspNetCore.Authentication.SecureDataFormat.Protect(TData data) -> string! +Microsoft.AspNetCore.Authentication.SecureDataFormat.Protect(TData data, string? purpose) -> string! +Microsoft.AspNetCore.Authentication.SecureDataFormat.SecureDataFormat(Microsoft.AspNetCore.Authentication.IDataSerializer! serializer, Microsoft.AspNetCore.DataProtection.IDataProtector! protector) -> void +Microsoft.AspNetCore.Authentication.SecureDataFormat.Unprotect(string! protectedText) -> TData +Microsoft.AspNetCore.Authentication.SecureDataFormat.Unprotect(string! protectedText, string? purpose) -> TData +Microsoft.AspNetCore.Authentication.SignInAuthenticationHandler +Microsoft.AspNetCore.Authentication.SignInAuthenticationHandler.SignInAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void +Microsoft.AspNetCore.Authentication.SignOutAuthenticationHandler +Microsoft.AspNetCore.Authentication.SignOutAuthenticationHandler.SignOutAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void +Microsoft.AspNetCore.Authentication.SystemClock +Microsoft.AspNetCore.Authentication.SystemClock.SystemClock() -> void +Microsoft.AspNetCore.Authentication.SystemClock.UtcNow.get -> System.DateTimeOffset +Microsoft.AspNetCore.Authentication.TicketDataFormat +Microsoft.AspNetCore.Authentication.TicketDataFormat.TicketDataFormat(Microsoft.AspNetCore.DataProtection.IDataProtector! protector) -> void +Microsoft.AspNetCore.Authentication.TicketReceivedContext +Microsoft.AspNetCore.Authentication.TicketReceivedContext.ReturnUri.get -> string? +Microsoft.AspNetCore.Authentication.TicketReceivedContext.ReturnUri.set -> void +Microsoft.AspNetCore.Authentication.TicketReceivedContext.TicketReceivedContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions! options, Microsoft.AspNetCore.Authentication.AuthenticationTicket! ticket) -> void +Microsoft.AspNetCore.Authentication.TicketSerializer +Microsoft.AspNetCore.Authentication.TicketSerializer.TicketSerializer() -> void +Microsoft.AspNetCore.Builder.AuthAppBuilderExtensions +Microsoft.Extensions.DependencyInjection.AuthenticationServiceCollectionExtensions +abstract Microsoft.AspNetCore.Authentication.AuthenticationHandler.HandleAuthenticateAsync() -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleRemoteAuthenticateAsync() -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.Authentication.SignInAuthenticationHandler.HandleSignInAsync(System.Security.Claims.ClaimsPrincipal! user, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.Authentication.SignOutAuthenticationHandler.HandleSignOutAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.PolicySchemeHandler.HandleAuthenticateAsync() -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.PolicySchemeHandler.HandleChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.PolicySchemeHandler.HandleForbiddenAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.PolicySchemeHandler.HandleSignInAsync(System.Security.Claims.ClaimsPrincipal! user, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.PolicySchemeHandler.HandleSignOutAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.CreateEventsAsync() -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleAuthenticateAsync() -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleForbiddenAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.Validate() -> void +override Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.Validate(string! scheme) -> void +override Microsoft.AspNetCore.Authentication.RequestPathBaseCookieBuilder.Build(Microsoft.AspNetCore.Http.HttpContext! context, System.DateTimeOffset expiresFrom) -> Microsoft.AspNetCore.Http.CookieOptions! +static Microsoft.AspNetCore.Authentication.Base64UrlTextEncoder.Decode(string! text) -> byte[]! +static Microsoft.AspNetCore.Authentication.Base64UrlTextEncoder.Encode(byte[]! data) -> string! +static Microsoft.AspNetCore.Authentication.HandleRequestResult.Fail(System.Exception! failure) -> Microsoft.AspNetCore.Authentication.HandleRequestResult! +static Microsoft.AspNetCore.Authentication.HandleRequestResult.Fail(System.Exception! failure, Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> Microsoft.AspNetCore.Authentication.HandleRequestResult! +static Microsoft.AspNetCore.Authentication.HandleRequestResult.Fail(string! failureMessage) -> Microsoft.AspNetCore.Authentication.HandleRequestResult! +static Microsoft.AspNetCore.Authentication.HandleRequestResult.Fail(string! failureMessage, Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> Microsoft.AspNetCore.Authentication.HandleRequestResult! +static Microsoft.AspNetCore.Authentication.HandleRequestResult.Handle() -> Microsoft.AspNetCore.Authentication.HandleRequestResult! +static Microsoft.AspNetCore.Authentication.HandleRequestResult.NoResult() -> Microsoft.AspNetCore.Authentication.HandleRequestResult! +static Microsoft.AspNetCore.Authentication.HandleRequestResult.SkipHandler() -> Microsoft.AspNetCore.Authentication.HandleRequestResult! +static Microsoft.AspNetCore.Authentication.HandleRequestResult.Success(Microsoft.AspNetCore.Authentication.AuthenticationTicket! ticket) -> Microsoft.AspNetCore.Authentication.HandleRequestResult! +static Microsoft.AspNetCore.Authentication.JsonDocumentAuthExtensions.GetString(this System.Text.Json.JsonElement element, string! key) -> string? +static Microsoft.AspNetCore.Authentication.PropertiesSerializer.Default.get -> Microsoft.AspNetCore.Authentication.PropertiesSerializer! +static Microsoft.AspNetCore.Authentication.TicketSerializer.Default.get -> Microsoft.AspNetCore.Authentication.TicketSerializer! +static Microsoft.AspNetCore.Builder.AuthAppBuilderExtensions.UseAuthentication(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.Extensions.DependencyInjection.AuthenticationServiceCollectionExtensions.AddAuthentication(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static Microsoft.Extensions.DependencyInjection.AuthenticationServiceCollectionExtensions.AddAuthentication(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static Microsoft.Extensions.DependencyInjection.AuthenticationServiceCollectionExtensions.AddAuthentication(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, string! defaultScheme) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +virtual Microsoft.AspNetCore.Authentication.AuthenticationBuilder.AddPolicyScheme(string! authenticationScheme, string? displayName, System.Action! configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +virtual Microsoft.AspNetCore.Authentication.AuthenticationBuilder.AddRemoteScheme(string! authenticationScheme, string? displayName, System.Action? configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +virtual Microsoft.AspNetCore.Authentication.AuthenticationBuilder.AddScheme(string! authenticationScheme, System.Action? configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +virtual Microsoft.AspNetCore.Authentication.AuthenticationBuilder.AddScheme(string! authenticationScheme, string? displayName, System.Action? configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +virtual Microsoft.AspNetCore.Authentication.AuthenticationBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +virtual Microsoft.AspNetCore.Authentication.AuthenticationHandler.ClaimsIssuer.get -> string! +virtual Microsoft.AspNetCore.Authentication.AuthenticationHandler.CreateEventsAsync() -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.AuthenticationHandler.Events.get -> object? +virtual Microsoft.AspNetCore.Authentication.AuthenticationHandler.Events.set -> void +virtual Microsoft.AspNetCore.Authentication.AuthenticationHandler.HandleChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.AuthenticationHandler.HandleForbiddenAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.AuthenticationHandler.InitializeEventsAsync() -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.AuthenticationHandler.InitializeHandlerAsync() -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.AuthenticationHandler.ResolveTarget(string? scheme) -> string? +virtual Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.Validate() -> void +virtual Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.Validate(string! scheme) -> void +virtual Microsoft.AspNetCore.Authentication.PrincipalContext.Principal.get -> System.Security.Claims.ClaimsPrincipal? +virtual Microsoft.AspNetCore.Authentication.PrincipalContext.Principal.set -> void +virtual Microsoft.AspNetCore.Authentication.PropertiesContext.Properties.get -> Microsoft.AspNetCore.Authentication.AuthenticationProperties! +virtual Microsoft.AspNetCore.Authentication.PropertiesContext.Properties.set -> void +virtual Microsoft.AspNetCore.Authentication.PropertiesSerializer.Deserialize(byte[]! data) -> Microsoft.AspNetCore.Authentication.AuthenticationProperties? +virtual Microsoft.AspNetCore.Authentication.PropertiesSerializer.Read(System.IO.BinaryReader! reader) -> Microsoft.AspNetCore.Authentication.AuthenticationProperties? +virtual Microsoft.AspNetCore.Authentication.PropertiesSerializer.Serialize(Microsoft.AspNetCore.Authentication.AuthenticationProperties! model) -> byte[]! +virtual Microsoft.AspNetCore.Authentication.PropertiesSerializer.Write(System.IO.BinaryWriter! writer, Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> void +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationContext.Properties.get -> Microsoft.AspNetCore.Authentication.AuthenticationProperties! +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationContext.Properties.set -> void +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.AccessDenied(Microsoft.AspNetCore.Authentication.AccessDeniedContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.RemoteFailure(Microsoft.AspNetCore.Authentication.RemoteFailureContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.TicketReceived(Microsoft.AspNetCore.Authentication.TicketReceivedContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.GenerateCorrelationId(Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> void +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleAccessDeniedErrorAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleRequestAsync() -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.ShouldHandleRequestAsync() -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.ValidateCorrelationId(Microsoft.AspNetCore.Authentication.AuthenticationProperties! properties) -> bool +virtual Microsoft.AspNetCore.Authentication.RequestPathBaseCookieBuilder.AdditionalPath.get -> string? +virtual Microsoft.AspNetCore.Authentication.SignInAuthenticationHandler.SignInAsync(System.Security.Claims.ClaimsPrincipal! user, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.SignOutAuthenticationHandler.SignOutAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authentication.TicketSerializer.Deserialize(byte[]! data) -> Microsoft.AspNetCore.Authentication.AuthenticationTicket? +virtual Microsoft.AspNetCore.Authentication.TicketSerializer.Read(System.IO.BinaryReader! reader) -> Microsoft.AspNetCore.Authentication.AuthenticationTicket? +virtual Microsoft.AspNetCore.Authentication.TicketSerializer.ReadClaim(System.IO.BinaryReader! reader, System.Security.Claims.ClaimsIdentity! identity) -> System.Security.Claims.Claim! +virtual Microsoft.AspNetCore.Authentication.TicketSerializer.ReadIdentity(System.IO.BinaryReader! reader) -> System.Security.Claims.ClaimsIdentity! +virtual Microsoft.AspNetCore.Authentication.TicketSerializer.Serialize(Microsoft.AspNetCore.Authentication.AuthenticationTicket! ticket) -> byte[]! +virtual Microsoft.AspNetCore.Authentication.TicketSerializer.Write(System.IO.BinaryWriter! writer, Microsoft.AspNetCore.Authentication.AuthenticationTicket! ticket) -> void +virtual Microsoft.AspNetCore.Authentication.TicketSerializer.WriteClaim(System.IO.BinaryWriter! writer, System.Security.Claims.Claim! claim) -> void +virtual Microsoft.AspNetCore.Authentication.TicketSerializer.WriteIdentity(System.IO.BinaryWriter! writer, System.Security.Claims.ClaimsIdentity! identity) -> void diff --git a/src/Security/Authentication/Facebook/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Facebook/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/Facebook/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/Facebook/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Facebook/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..d6fb393fcede --- /dev/null +++ b/src/Security/Authentication/Facebook/src/PublicAPI.Unshipped.txt @@ -0,0 +1,27 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.Facebook.FacebookDefaults +Microsoft.AspNetCore.Authentication.Facebook.FacebookHandler +Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions +Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.FacebookOptions() -> void +Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.SendAppSecretProof.get -> bool +Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.SendAppSecretProof.set -> void +Microsoft.Extensions.DependencyInjection.FacebookAuthenticationOptionsExtensions +override Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.Validate() -> void +~Microsoft.AspNetCore.Authentication.Facebook.FacebookHandler.FacebookHandler(Microsoft.Extensions.Options.IOptionsMonitor options, Microsoft.Extensions.Logging.ILoggerFactory logger, System.Text.Encodings.Web.UrlEncoder encoder, Microsoft.AspNetCore.Authentication.ISystemClock clock) -> void +~Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.AppId.get -> string +~Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.AppId.set -> void +~Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.AppSecret.get -> string +~Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.AppSecret.set -> void +~Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.Fields.get -> System.Collections.Generic.ICollection +~const Microsoft.AspNetCore.Authentication.Facebook.FacebookDefaults.AuthenticationScheme = "Facebook" -> string +~override Microsoft.AspNetCore.Authentication.Facebook.FacebookHandler.CreateTicketAsync(System.Security.Claims.ClaimsIdentity identity, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse tokens) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.Facebook.FacebookHandler.FormatScope() -> string +~override Microsoft.AspNetCore.Authentication.Facebook.FacebookHandler.FormatScope(System.Collections.Generic.IEnumerable scopes) -> string +~static Microsoft.Extensions.DependencyInjection.FacebookAuthenticationOptionsExtensions.AddFacebook(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.FacebookAuthenticationOptionsExtensions.AddFacebook(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.FacebookAuthenticationOptionsExtensions.AddFacebook(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.FacebookAuthenticationOptionsExtensions.AddFacebook(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static readonly Microsoft.AspNetCore.Authentication.Facebook.FacebookDefaults.AuthorizationEndpoint -> string +~static readonly Microsoft.AspNetCore.Authentication.Facebook.FacebookDefaults.DisplayName -> string +~static readonly Microsoft.AspNetCore.Authentication.Facebook.FacebookDefaults.TokenEndpoint -> string +~static readonly Microsoft.AspNetCore.Authentication.Facebook.FacebookDefaults.UserInformationEndpoint -> string diff --git a/src/Security/Authentication/Google/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Google/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/Google/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/Google/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Google/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..38bf0d0dee4d --- /dev/null +++ b/src/Security/Authentication/Google/src/PublicAPI.Unshipped.txt @@ -0,0 +1,39 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties +Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.GoogleChallengeProperties() -> void +Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.IncludeGrantedScopes.get -> bool? +Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.IncludeGrantedScopes.set -> void +Microsoft.AspNetCore.Authentication.Google.GoogleDefaults +Microsoft.AspNetCore.Authentication.Google.GoogleHandler +Microsoft.AspNetCore.Authentication.Google.GoogleOptions +Microsoft.AspNetCore.Authentication.Google.GoogleOptions.GoogleOptions() -> void +Microsoft.Extensions.DependencyInjection.GoogleExtensions +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.AccessType.get -> string +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.AccessType.set -> void +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.ApprovalPrompt.get -> string +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.ApprovalPrompt.set -> void +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.GoogleChallengeProperties(System.Collections.Generic.IDictionary items) -> void +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.GoogleChallengeProperties(System.Collections.Generic.IDictionary items, System.Collections.Generic.IDictionary parameters) -> void +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.LoginHint.get -> string +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.LoginHint.set -> void +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.Prompt.get -> string +~Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.Prompt.set -> void +~Microsoft.AspNetCore.Authentication.Google.GoogleHandler.GoogleHandler(Microsoft.Extensions.Options.IOptionsMonitor options, Microsoft.Extensions.Logging.ILoggerFactory logger, System.Text.Encodings.Web.UrlEncoder encoder, Microsoft.AspNetCore.Authentication.ISystemClock clock) -> void +~Microsoft.AspNetCore.Authentication.Google.GoogleOptions.AccessType.get -> string +~Microsoft.AspNetCore.Authentication.Google.GoogleOptions.AccessType.set -> void +~const Microsoft.AspNetCore.Authentication.Google.GoogleDefaults.AuthenticationScheme = "Google" -> string +~override Microsoft.AspNetCore.Authentication.Google.GoogleHandler.BuildChallengeUrl(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, string redirectUri) -> string +~override Microsoft.AspNetCore.Authentication.Google.GoogleHandler.CreateTicketAsync(System.Security.Claims.ClaimsIdentity identity, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse tokens) -> System.Threading.Tasks.Task +~static Microsoft.Extensions.DependencyInjection.GoogleExtensions.AddGoogle(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.GoogleExtensions.AddGoogle(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.GoogleExtensions.AddGoogle(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.GoogleExtensions.AddGoogle(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static readonly Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.AccessTypeKey -> string +~static readonly Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.ApprovalPromptKey -> string +~static readonly Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.IncludeGrantedScopesKey -> string +~static readonly Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.LoginHintKey -> string +~static readonly Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.PromptParameterKey -> string +~static readonly Microsoft.AspNetCore.Authentication.Google.GoogleDefaults.AuthorizationEndpoint -> string +~static readonly Microsoft.AspNetCore.Authentication.Google.GoogleDefaults.DisplayName -> string +~static readonly Microsoft.AspNetCore.Authentication.Google.GoogleDefaults.TokenEndpoint -> string +~static readonly Microsoft.AspNetCore.Authentication.Google.GoogleDefaults.UserInformationEndpoint -> string diff --git a/src/Security/Authentication/JwtBearer/src/PublicAPI.Shipped.txt b/src/Security/Authentication/JwtBearer/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/JwtBearer/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/JwtBearer/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/JwtBearer/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..c1aba6e147a2 --- /dev/null +++ b/src/Security/Authentication/JwtBearer/src/PublicAPI.Unshipped.txt @@ -0,0 +1,99 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.JwtBearer.AuthenticationFailedContext +Microsoft.AspNetCore.Authentication.JwtBearer.ForbiddenContext +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.HandleResponse() -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.Handled.get -> bool +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.JwtBearerEvents() -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.AutomaticRefreshInterval.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.AutomaticRefreshInterval.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.BackchannelTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.BackchannelTimeout.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.IncludeErrorDetails.get -> bool +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.IncludeErrorDetails.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.JwtBearerOptions() -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.MapInboundClaims.get -> bool +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.MapInboundClaims.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.RefreshInterval.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.RefreshInterval.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.RefreshOnIssuerKeyNotFound.get -> bool +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.RefreshOnIssuerKeyNotFound.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.RequireHttpsMetadata.get -> bool +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.RequireHttpsMetadata.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.SaveToken.get -> bool +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.SaveToken.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerPostConfigureOptions +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerPostConfigureOptions.JwtBearerPostConfigureOptions() -> void +Microsoft.AspNetCore.Authentication.JwtBearer.MessageReceivedContext +Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext +Microsoft.Extensions.DependencyInjection.JwtBearerExtensions +~Microsoft.AspNetCore.Authentication.JwtBearer.AuthenticationFailedContext.AuthenticationFailedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions options) -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.AuthenticationFailedContext.Exception.get -> System.Exception +~Microsoft.AspNetCore.Authentication.JwtBearer.AuthenticationFailedContext.Exception.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.ForbiddenContext.ForbiddenContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions options) -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.AuthenticateFailure.get -> System.Exception +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.AuthenticateFailure.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.Error.get -> string +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.Error.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.ErrorDescription.get -> string +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.ErrorDescription.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.ErrorUri.get -> string +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.ErrorUri.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext.JwtBearerChallengeContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions options, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnAuthenticationFailed.get -> System.Func +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnAuthenticationFailed.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnChallenge.get -> System.Func +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnChallenge.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnForbidden.get -> System.Func +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnForbidden.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnMessageReceived.get -> System.Func +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnMessageReceived.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnTokenValidated.get -> System.Func +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnTokenValidated.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.Events.get -> Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.Events.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.JwtBearerHandler(Microsoft.Extensions.Options.IOptionsMonitor options, Microsoft.Extensions.Logging.ILoggerFactory logger, System.Text.Encodings.Web.UrlEncoder encoder, Microsoft.AspNetCore.Authentication.ISystemClock clock) -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Audience.get -> string +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Audience.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Authority.get -> string +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Authority.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.BackchannelHttpHandler.get -> System.Net.Http.HttpMessageHandler +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.BackchannelHttpHandler.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Challenge.get -> string +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Challenge.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Configuration.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Configuration.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.ConfigurationManager.get -> Microsoft.IdentityModel.Protocols.IConfigurationManager +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.ConfigurationManager.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Events.get -> Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Events.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.MetadataAddress.get -> string +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.MetadataAddress.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.SecurityTokenValidators.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.TokenValidationParameters.get -> Microsoft.IdentityModel.Tokens.TokenValidationParameters +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.TokenValidationParameters.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerPostConfigureOptions.PostConfigure(string name, Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions options) -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.MessageReceivedContext.MessageReceivedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions options) -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.MessageReceivedContext.Token.get -> string +~Microsoft.AspNetCore.Authentication.JwtBearer.MessageReceivedContext.Token.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.SecurityToken.get -> Microsoft.IdentityModel.Tokens.SecurityToken +~Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.SecurityToken.set -> void +~Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.TokenValidatedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions options) -> void +~const Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationScheme = "Bearer" -> string +~override Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.CreateEventsAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleForbiddenAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~static Microsoft.Extensions.DependencyInjection.JwtBearerExtensions.AddJwtBearer(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.JwtBearerExtensions.AddJwtBearer(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.JwtBearerExtensions.AddJwtBearer(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.JwtBearerExtensions.AddJwtBearer(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~virtual Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.AuthenticationFailed(Microsoft.AspNetCore.Authentication.JwtBearer.AuthenticationFailedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.Challenge(Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerChallengeContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.Forbidden(Microsoft.AspNetCore.Authentication.JwtBearer.ForbiddenContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.MessageReceived(Microsoft.AspNetCore.Authentication.JwtBearer.MessageReceivedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.TokenValidated(Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext context) -> System.Threading.Tasks.Task diff --git a/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Shipped.txt b/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..3f842e992850 --- /dev/null +++ b/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Unshipped.txt @@ -0,0 +1,34 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountDefaults +Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountHandler +Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountOptions +Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountOptions.MicrosoftAccountOptions() -> void +Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties +Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.MicrosoftChallengeProperties() -> void +Microsoft.Extensions.DependencyInjection.MicrosoftAccountExtensions +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountHandler.MicrosoftAccountHandler(Microsoft.Extensions.Options.IOptionsMonitor options, Microsoft.Extensions.Logging.ILoggerFactory logger, System.Text.Encodings.Web.UrlEncoder encoder, Microsoft.AspNetCore.Authentication.ISystemClock clock) -> void +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.DomainHint.get -> string +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.DomainHint.set -> void +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.LoginHint.get -> string +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.LoginHint.set -> void +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.MicrosoftChallengeProperties(System.Collections.Generic.IDictionary items) -> void +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.MicrosoftChallengeProperties(System.Collections.Generic.IDictionary items, System.Collections.Generic.IDictionary parameters) -> void +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.Prompt.get -> string +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.Prompt.set -> void +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.ResponseMode.get -> string +~Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.ResponseMode.set -> void +~const Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountDefaults.AuthenticationScheme = "Microsoft" -> string +~override Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountHandler.BuildChallengeUrl(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, string redirectUri) -> string +~override Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountHandler.CreateTicketAsync(System.Security.Claims.ClaimsIdentity identity, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse tokens) -> System.Threading.Tasks.Task +~static Microsoft.Extensions.DependencyInjection.MicrosoftAccountExtensions.AddMicrosoftAccount(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.MicrosoftAccountExtensions.AddMicrosoftAccount(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.MicrosoftAccountExtensions.AddMicrosoftAccount(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.MicrosoftAccountExtensions.AddMicrosoftAccount(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static readonly Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountDefaults.AuthorizationEndpoint -> string +~static readonly Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountDefaults.DisplayName -> string +~static readonly Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountDefaults.TokenEndpoint -> string +~static readonly Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountDefaults.UserInformationEndpoint -> string +~static readonly Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.DomainHintKey -> string +~static readonly Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.LoginHintKey -> string +~static readonly Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.PromptKey -> string +~static readonly Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftChallengeProperties.ResponseModeKey -> string diff --git a/src/Security/Authentication/Negotiate/src/NegotiateHandler.cs b/src/Security/Authentication/Negotiate/src/NegotiateHandler.cs index 0ef6697857b4..179a85ed0b91 100644 --- a/src/Security/Authentication/Negotiate/src/NegotiateHandler.cs +++ b/src/Security/Authentication/Negotiate/src/NegotiateHandler.cs @@ -315,7 +315,7 @@ protected override async Task HandleAuthenticateAsync() // things like ClaimsTransformation run per request. var identity = _negotiateState.GetIdentity(); ClaimsPrincipal user; - if (identity is WindowsIdentity winIdentity) + if (OperatingSystem.IsWindows() && identity is WindowsIdentity winIdentity) { user = new WindowsPrincipal(winIdentity); Response.RegisterForDispose(winIdentity); diff --git a/src/Security/Authentication/Negotiate/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Negotiate/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/Negotiate/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/Negotiate/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Negotiate/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..8756423b0c66 --- /dev/null +++ b/src/Security/Authentication/Negotiate/src/PublicAPI.Unshipped.txt @@ -0,0 +1,71 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.Negotiate.AuthenticatedContext +Microsoft.AspNetCore.Authentication.Negotiate.AuthenticationFailedContext +Microsoft.AspNetCore.Authentication.Negotiate.ChallengeContext +Microsoft.AspNetCore.Authentication.Negotiate.ChallengeContext.HandleResponse() -> void +Microsoft.AspNetCore.Authentication.Negotiate.ChallengeContext.Handled.get -> bool +Microsoft.AspNetCore.Authentication.Negotiate.LdapContext +Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings +Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.EnableLdapClaimResolution.get -> bool +Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.EnableLdapClaimResolution.set -> void +Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.IgnoreNestedGroups.get -> bool +Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.IgnoreNestedGroups.set -> void +Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.LdapSettings() -> void +Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.Validate() -> void +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateDefaults +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.NegotiateEvents() -> void +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.NegotiateOptions() -> void +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.PersistKerberosCredentials.get -> bool +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.PersistKerberosCredentials.set -> void +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.PersistNtlmCredentials.get -> bool +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.PersistNtlmCredentials.set -> void +Microsoft.AspNetCore.Authentication.Negotiate.PostConfigureNegotiateOptions +Microsoft.Extensions.DependencyInjection.NegotiateExtensions +~Microsoft.AspNetCore.Authentication.Negotiate.AuthenticatedContext.AuthenticatedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions options) -> void +~Microsoft.AspNetCore.Authentication.Negotiate.AuthenticationFailedContext.AuthenticationFailedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions options) -> void +~Microsoft.AspNetCore.Authentication.Negotiate.AuthenticationFailedContext.Exception.get -> System.Exception +~Microsoft.AspNetCore.Authentication.Negotiate.AuthenticationFailedContext.Exception.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.ChallengeContext.ChallengeContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions options, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.Negotiate.LdapContext.LdapContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions options, Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings settings) -> void +~Microsoft.AspNetCore.Authentication.Negotiate.LdapContext.LdapSettings.get -> Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings +~Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.Domain.get -> string +~Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.Domain.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.LdapConnection.get -> System.DirectoryServices.Protocols.LdapConnection +~Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.LdapConnection.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.MachineAccountName.get -> string +~Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.MachineAccountName.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.MachineAccountPassword.get -> string +~Microsoft.AspNetCore.Authentication.Negotiate.LdapSettings.MachineAccountPassword.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.OnAuthenticated.get -> System.Func +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.OnAuthenticated.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.OnAuthenticationFailed.get -> System.Func +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.OnAuthenticationFailed.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.OnChallenge.get -> System.Func +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.OnChallenge.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.OnRetrieveLdapClaims.get -> System.Func +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.OnRetrieveLdapClaims.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.Events.get -> Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.Events.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleRequestAsync() -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.NegotiateHandler(Microsoft.Extensions.Options.IOptionsMonitor options, Microsoft.Extensions.Logging.ILoggerFactory logger, System.Text.Encodings.Web.UrlEncoder encoder, Microsoft.AspNetCore.Authentication.ISystemClock clock) -> void +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.EnableLdap(System.Action configureSettings) -> void +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.EnableLdap(string domain) -> void +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.Events.get -> Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents +~Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.Events.set -> void +~Microsoft.AspNetCore.Authentication.Negotiate.PostConfigureNegotiateOptions.PostConfigure(string name, Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions options) -> void +~Microsoft.AspNetCore.Authentication.Negotiate.PostConfigureNegotiateOptions.PostConfigureNegotiateOptions(System.Collections.Generic.IEnumerable serverAuthServices, Microsoft.Extensions.Logging.ILogger logger) -> void +~const Microsoft.AspNetCore.Authentication.Negotiate.NegotiateDefaults.AuthenticationScheme = "Negotiate" -> string +~override Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.CreateEventsAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleAuthenticateAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~static Microsoft.Extensions.DependencyInjection.NegotiateExtensions.AddNegotiate(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.NegotiateExtensions.AddNegotiate(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.NegotiateExtensions.AddNegotiate(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.NegotiateExtensions.AddNegotiate(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~virtual Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.Authenticated(Microsoft.AspNetCore.Authentication.Negotiate.AuthenticatedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.AuthenticationFailed(Microsoft.AspNetCore.Authentication.Negotiate.AuthenticationFailedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.Challenge(Microsoft.AspNetCore.Authentication.Negotiate.ChallengeContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents.RetrieveLdapClaims(Microsoft.AspNetCore.Authentication.Negotiate.LdapContext context) -> System.Threading.Tasks.Task diff --git a/src/Security/Authentication/OAuth/src/PublicAPI.Shipped.txt b/src/Security/Authentication/OAuth/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/OAuth/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/OAuth/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/OAuth/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..55078d78e75a --- /dev/null +++ b/src/Security/Authentication/OAuth/src/PublicAPI.Unshipped.txt @@ -0,0 +1,139 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions +Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimAction +Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection +Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection.ClaimActionCollection() -> void +Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection.Clear() -> void +Microsoft.AspNetCore.Authentication.OAuth.Claims.CustomJsonClaimAction +Microsoft.AspNetCore.Authentication.OAuth.Claims.DeleteClaimAction +Microsoft.AspNetCore.Authentication.OAuth.Claims.JsonKeyClaimAction +Microsoft.AspNetCore.Authentication.OAuth.Claims.JsonSubKeyClaimAction +Microsoft.AspNetCore.Authentication.OAuth.Claims.MapAllClaimsAction +Microsoft.AspNetCore.Authentication.OAuth.Claims.MapAllClaimsAction.MapAllClaimsAction() -> void +Microsoft.AspNetCore.Authentication.OAuth.OAuthChallengeProperties +Microsoft.AspNetCore.Authentication.OAuth.OAuthChallengeProperties.OAuthChallengeProperties() -> void +Microsoft.AspNetCore.Authentication.OAuth.OAuthCodeExchangeContext +Microsoft.AspNetCore.Authentication.OAuth.OAuthConstants +Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext +Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.ExpiresIn.get -> System.TimeSpan? +Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.RunClaimActions() -> void +Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.RunClaimActions(System.Text.Json.JsonElement userData) -> void +Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.User.get -> System.Text.Json.JsonElement +Microsoft.AspNetCore.Authentication.OAuth.OAuthDefaults +Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents +Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents.OAuthEvents() -> void +Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions +Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.OAuthOptions() -> void +Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.UsePkce.get -> bool +Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.UsePkce.set -> void +Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse +Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.Dispose() -> void +Microsoft.Extensions.DependencyInjection.OAuthExtensions +override Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.Validate() -> void +~Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimAction.ClaimAction(string claimType, string valueType) -> void +~Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimAction.ClaimType.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimAction.ValueType.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection.Add(Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimAction action) -> void +~Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection.GetEnumerator() -> System.Collections.Generic.IEnumerator +~Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection.Remove(string claimType) -> void +~Microsoft.AspNetCore.Authentication.OAuth.Claims.CustomJsonClaimAction.CustomJsonClaimAction(string claimType, string valueType, System.Func resolver) -> void +~Microsoft.AspNetCore.Authentication.OAuth.Claims.CustomJsonClaimAction.Resolver.get -> System.Func +~Microsoft.AspNetCore.Authentication.OAuth.Claims.DeleteClaimAction.DeleteClaimAction(string claimType) -> void +~Microsoft.AspNetCore.Authentication.OAuth.Claims.JsonKeyClaimAction.JsonKey.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.Claims.JsonKeyClaimAction.JsonKeyClaimAction(string claimType, string valueType, string jsonKey) -> void +~Microsoft.AspNetCore.Authentication.OAuth.Claims.JsonSubKeyClaimAction.JsonSubKeyClaimAction(string claimType, string valueType, string jsonKey, string subKey) -> void +~Microsoft.AspNetCore.Authentication.OAuth.Claims.JsonSubKeyClaimAction.SubKey.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthChallengeProperties.OAuthChallengeProperties(System.Collections.Generic.IDictionary items) -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthChallengeProperties.OAuthChallengeProperties(System.Collections.Generic.IDictionary items, System.Collections.Generic.IDictionary parameters) -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthChallengeProperties.Scope.get -> System.Collections.Generic.ICollection +~Microsoft.AspNetCore.Authentication.OAuth.OAuthChallengeProperties.Scope.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCodeExchangeContext.Code.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCodeExchangeContext.OAuthCodeExchangeContext(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, string code, string redirectUri) -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCodeExchangeContext.Properties.get -> Microsoft.AspNetCore.Authentication.AuthenticationProperties +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCodeExchangeContext.RedirectUri.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.AccessToken.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.Backchannel.get -> System.Net.Http.HttpClient +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.Identity.get -> System.Security.Claims.ClaimsIdentity +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.OAuthCreatingTicketContext(System.Security.Claims.ClaimsPrincipal principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions options, System.Net.Http.HttpClient backchannel, Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse tokens, System.Text.Json.JsonElement user) -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.RefreshToken.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.TokenResponse.get -> Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse +~Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext.TokenType.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents.OnCreatingTicket.get -> System.Func +~Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents.OnCreatingTicket.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents.OnRedirectToAuthorizationEndpoint.get -> System.Func, System.Threading.Tasks.Task> +~Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents.OnRedirectToAuthorizationEndpoint.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler +~Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.Backchannel.get -> System.Net.Http.HttpClient +~Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.Events.get -> Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents +~Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.Events.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.OAuthHandler(Microsoft.Extensions.Options.IOptionsMonitor options, Microsoft.Extensions.Logging.ILoggerFactory logger, System.Text.Encodings.Web.UrlEncoder encoder, Microsoft.AspNetCore.Authentication.ISystemClock clock) -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.AuthorizationEndpoint.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.AuthorizationEndpoint.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.ClaimActions.get -> Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.ClientId.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.ClientId.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.ClientSecret.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.ClientSecret.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.Events.get -> Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.Events.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.Scope.get -> System.Collections.Generic.ICollection +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.StateDataFormat.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.StateDataFormat.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.TokenEndpoint.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.TokenEndpoint.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.UserInformationEndpoint.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.UserInformationEndpoint.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.AccessToken.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.AccessToken.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.Error.get -> System.Exception +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.Error.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.ExpiresIn.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.ExpiresIn.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.RefreshToken.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.RefreshToken.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.Response.get -> System.Text.Json.JsonDocument +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.Response.set -> void +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.TokenType.get -> string +~Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.TokenType.set -> void +~Microsoft.Extensions.DependencyInjection.OAuthPostConfigureOptions +~Microsoft.Extensions.DependencyInjection.OAuthPostConfigureOptions.OAuthPostConfigureOptions(Microsoft.AspNetCore.DataProtection.IDataProtectionProvider dataProtection) -> void +~Microsoft.Extensions.DependencyInjection.OAuthPostConfigureOptions.PostConfigure(string name, TOptions options) -> void +~abstract Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimAction.Run(System.Text.Json.JsonElement userData, System.Security.Claims.ClaimsIdentity identity, string issuer) -> void +~override Microsoft.AspNetCore.Authentication.OAuth.Claims.CustomJsonClaimAction.Run(System.Text.Json.JsonElement userData, System.Security.Claims.ClaimsIdentity identity, string issuer) -> void +~override Microsoft.AspNetCore.Authentication.OAuth.Claims.DeleteClaimAction.Run(System.Text.Json.JsonElement userData, System.Security.Claims.ClaimsIdentity identity, string issuer) -> void +~override Microsoft.AspNetCore.Authentication.OAuth.Claims.JsonKeyClaimAction.Run(System.Text.Json.JsonElement userData, System.Security.Claims.ClaimsIdentity identity, string issuer) -> void +~override Microsoft.AspNetCore.Authentication.OAuth.Claims.JsonSubKeyClaimAction.Run(System.Text.Json.JsonElement userData, System.Security.Claims.ClaimsIdentity identity, string issuer) -> void +~override Microsoft.AspNetCore.Authentication.OAuth.Claims.MapAllClaimsAction.Run(System.Text.Json.JsonElement userData, System.Security.Claims.ClaimsIdentity identity, string issuer) -> void +~override Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.CreateEventsAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.HandleChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.HandleRemoteAuthenticateAsync() -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.DeleteClaim(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, string claimType) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.DeleteClaims(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, params string[] claimTypes) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.MapAll(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.MapAllExcept(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, params string[] exclusions) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.MapCustomJson(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, string claimType, System.Func resolver) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.MapCustomJson(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, string claimType, string valueType, System.Func resolver) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.MapJsonKey(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, string claimType, string jsonKey) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.MapJsonKey(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, string claimType, string jsonKey, string valueType) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.MapJsonSubKey(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, string claimType, string jsonKey, string subKey) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionMapExtensions.MapJsonSubKey(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, string claimType, string jsonKey, string subKey, string valueType) -> void +~static Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.Failed(System.Exception error) -> Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse +~static Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse.Success(System.Text.Json.JsonDocument response) -> Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse +~static Microsoft.Extensions.DependencyInjection.OAuthExtensions.AddOAuth(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.OAuthExtensions.AddOAuth(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.OAuthExtensions.AddOAuth(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.OAuthExtensions.AddOAuth(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static readonly Microsoft.AspNetCore.Authentication.OAuth.OAuthChallengeProperties.ScopeKey -> string +~static readonly Microsoft.AspNetCore.Authentication.OAuth.OAuthConstants.CodeChallengeKey -> string +~static readonly Microsoft.AspNetCore.Authentication.OAuth.OAuthConstants.CodeChallengeMethodKey -> string +~static readonly Microsoft.AspNetCore.Authentication.OAuth.OAuthConstants.CodeChallengeMethodS256 -> string +~static readonly Microsoft.AspNetCore.Authentication.OAuth.OAuthConstants.CodeVerifierKey -> string +~static readonly Microsoft.AspNetCore.Authentication.OAuth.OAuthDefaults.DisplayName -> string +~virtual Microsoft.AspNetCore.Authentication.OAuth.OAuthChallengeProperties.SetScope(params string[] scopes) -> void +~virtual Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents.CreatingTicket(Microsoft.AspNetCore.Authentication.OAuth.OAuthCreatingTicketContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents.RedirectToAuthorizationEndpoint(Microsoft.AspNetCore.Authentication.RedirectContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.BuildChallengeUrl(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, string redirectUri) -> string +~virtual Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.CreateTicketAsync(System.Security.Claims.ClaimsIdentity identity, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, Microsoft.AspNetCore.Authentication.OAuth.OAuthTokenResponse tokens) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.ExchangeCodeAsync(Microsoft.AspNetCore.Authentication.OAuth.OAuthCodeExchangeContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.FormatScope() -> string +~virtual Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.FormatScope(System.Collections.Generic.IEnumerable scopes) -> string diff --git a/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Shipped.txt b/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..08eccd934777 --- /dev/null +++ b/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Unshipped.txt @@ -0,0 +1,212 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.ClaimActionCollectionUniqueExtensions +Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthenticationFailedContext +Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext +Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.HandleCodeRedemption() -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.HandledCodeRedemption.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.Claims.UniqueJsonKeyClaimAction +Microsoft.AspNetCore.Authentication.OpenIdConnect.MessageReceivedContext +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties.MaxAge.get -> System.TimeSpan? +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties.MaxAge.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties.OpenIdConnectChallengeProperties() -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectDefaults +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OpenIdConnectEvents() -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.AuthenticationMethod.get -> Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectRedirectBehavior +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.AuthenticationMethod.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.AutomaticRefreshInterval.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.AutomaticRefreshInterval.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.DisableTelemetry.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.DisableTelemetry.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.GetClaimsFromUserInfoEndpoint.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.GetClaimsFromUserInfoEndpoint.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.MapInboundClaims.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.MapInboundClaims.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.MaxAge.get -> System.TimeSpan? +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.MaxAge.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.OpenIdConnectOptions() -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.RefreshInterval.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.RefreshInterval.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.RefreshOnIssuerKeyNotFound.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.RefreshOnIssuerKeyNotFound.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.RemoteSignOutPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.RemoteSignOutPath.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.RequireHttpsMetadata.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.RequireHttpsMetadata.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SignedOutCallbackPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SignedOutCallbackPath.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SkipUnrecognizedRequests.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SkipUnrecognizedRequests.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UsePkce.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UsePkce.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UseTokenLifetime.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UseTokenLifetime.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectPostConfigureOptions +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectRedirectBehavior +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectRedirectBehavior.FormPost = 1 -> Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectRedirectBehavior +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectRedirectBehavior.RedirectGet = 0 -> Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectRedirectBehavior +Microsoft.AspNetCore.Authentication.OpenIdConnect.RedirectContext +Microsoft.AspNetCore.Authentication.OpenIdConnect.RedirectContext.HandleResponse() -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.RedirectContext.Handled.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.RemoteSignOutContext +Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenResponseReceivedContext +Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext +Microsoft.AspNetCore.Authentication.OpenIdConnect.UserInformationReceivedContext +Microsoft.Extensions.DependencyInjection.OpenIdConnectExtensions +override Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Validate() -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthenticationFailedContext.AuthenticationFailedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions options) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthenticationFailedContext.Exception.get -> System.Exception +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthenticationFailedContext.Exception.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthenticationFailedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthenticationFailedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.AuthorizationCodeReceivedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions options, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.Backchannel.get -> System.Net.Http.HttpClient +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.HandleCodeRedemption(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage tokenEndpointResponse) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.HandleCodeRedemption(string accessToken, string idToken) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.JwtSecurityToken.get -> System.IdentityModel.Tokens.Jwt.JwtSecurityToken +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.JwtSecurityToken.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.TokenEndpointRequest.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.TokenEndpointRequest.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.TokenEndpointResponse.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext.TokenEndpointResponse.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.Claims.UniqueJsonKeyClaimAction.UniqueJsonKeyClaimAction(string claimType, string valueType, string jsonKey) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.MessageReceivedContext.MessageReceivedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions options, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.MessageReceivedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.MessageReceivedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.MessageReceivedContext.Token.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.MessageReceivedContext.Token.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties.OpenIdConnectChallengeProperties(System.Collections.Generic.IDictionary items) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties.OpenIdConnectChallengeProperties(System.Collections.Generic.IDictionary items, System.Collections.Generic.IDictionary parameters) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties.Prompt.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties.Prompt.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnAuthenticationFailed.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnAuthenticationFailed.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnAuthorizationCodeReceived.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnAuthorizationCodeReceived.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnMessageReceived.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnMessageReceived.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnRedirectToIdentityProvider.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnRedirectToIdentityProvider.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnRedirectToIdentityProviderForSignOut.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnRedirectToIdentityProviderForSignOut.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnRemoteSignOut.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnRemoteSignOut.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnSignedOutCallbackRedirect.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnSignedOutCallbackRedirect.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnTokenResponseReceived.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnTokenResponseReceived.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnTokenValidated.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnTokenValidated.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnUserInformationReceived.get -> System.Func +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.OnUserInformationReceived.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.Backchannel.get -> System.Net.Http.HttpClient +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.Events.get -> Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.Events.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HtmlEncoder.get -> System.Text.Encodings.Web.HtmlEncoder +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.OpenIdConnectHandler(Microsoft.Extensions.Options.IOptionsMonitor options, Microsoft.Extensions.Logging.ILoggerFactory logger, System.Text.Encodings.Web.HtmlEncoder htmlEncoder, System.Text.Encodings.Web.UrlEncoder encoder, Microsoft.AspNetCore.Authentication.ISystemClock clock) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Authority.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Authority.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ClaimActions.get -> Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ClientId.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ClientId.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ClientSecret.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ClientSecret.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Configuration.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Configuration.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ConfigurationManager.get -> Microsoft.IdentityModel.Protocols.IConfigurationManager +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ConfigurationManager.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Events.get -> Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Events.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.MetadataAddress.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.MetadataAddress.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.NonceCookie.get -> Microsoft.AspNetCore.Http.CookieBuilder +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.NonceCookie.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Prompt.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Prompt.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ProtocolValidator.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidator +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ProtocolValidator.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Resource.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Resource.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ResponseMode.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ResponseMode.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ResponseType.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.ResponseType.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Scope.get -> System.Collections.Generic.ICollection +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SecurityTokenValidator.get -> Microsoft.IdentityModel.Tokens.ISecurityTokenValidator +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SecurityTokenValidator.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SignOutScheme.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SignOutScheme.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SignedOutRedirectUri.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.SignedOutRedirectUri.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.StateDataFormat.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.StateDataFormat.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.StringDataFormat.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.StringDataFormat.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.TokenValidationParameters.get -> Microsoft.IdentityModel.Tokens.TokenValidationParameters +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.TokenValidationParameters.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectPostConfigureOptions.OpenIdConnectPostConfigureOptions(Microsoft.AspNetCore.DataProtection.IDataProtectionProvider dataProtection) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectPostConfigureOptions.PostConfigure(string name, Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions options) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.RedirectContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.RedirectContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.RedirectContext.RedirectContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions options, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.RemoteSignOutContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.RemoteSignOutContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.RemoteSignOutContext.RemoteSignOutContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions options, Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage message) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenResponseReceivedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenResponseReceivedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenResponseReceivedContext.TokenEndpointResponse.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenResponseReceivedContext.TokenEndpointResponse.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenResponseReceivedContext.TokenResponseReceivedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions options, System.Security.Claims.ClaimsPrincipal user, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.Nonce.get -> string +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.Nonce.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.SecurityToken.get -> System.IdentityModel.Tokens.Jwt.JwtSecurityToken +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.SecurityToken.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.TokenEndpointResponse.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.TokenEndpointResponse.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.TokenValidatedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions options, System.Security.Claims.ClaimsPrincipal principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.UserInformationReceivedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage +~Microsoft.AspNetCore.Authentication.OpenIdConnect.UserInformationReceivedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.UserInformationReceivedContext.User.get -> System.Text.Json.JsonDocument +~Microsoft.AspNetCore.Authentication.OpenIdConnect.UserInformationReceivedContext.User.set -> void +~Microsoft.AspNetCore.Authentication.OpenIdConnect.UserInformationReceivedContext.UserInformationReceivedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions options, System.Security.Claims.ClaimsPrincipal principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~const Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectDefaults.AuthenticationScheme = "OpenIdConnect" -> string +~override Microsoft.AspNetCore.Authentication.OpenIdConnect.Claims.UniqueJsonKeyClaimAction.Run(System.Text.Json.JsonElement userData, System.Security.Claims.ClaimsIdentity identity, string issuer) -> void +~override Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.CreateEventsAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRemoteAuthenticateAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRequestAsync() -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionUniqueExtensions.MapUniqueJsonKey(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, string claimType, string jsonKey) -> void +~static Microsoft.AspNetCore.Authentication.ClaimActionCollectionUniqueExtensions.MapUniqueJsonKey(this Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection collection, string claimType, string jsonKey, string valueType) -> void +~static Microsoft.Extensions.DependencyInjection.OpenIdConnectExtensions.AddOpenIdConnect(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.OpenIdConnectExtensions.AddOpenIdConnect(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.OpenIdConnectExtensions.AddOpenIdConnect(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.OpenIdConnectExtensions.AddOpenIdConnect(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static readonly Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties.MaxAgeKey -> string +~static readonly Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectChallengeProperties.PromptKey -> string +~static readonly Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectDefaults.AuthenticationPropertiesKey -> string +~static readonly Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectDefaults.CookieNoncePrefix -> string +~static readonly Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectDefaults.DisplayName -> string +~static readonly Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectDefaults.RedirectUriForCodePropertiesKey -> string +~static readonly Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectDefaults.UserstatePropertiesKey -> string +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.AuthenticationFailed(Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthenticationFailedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.AuthorizationCodeReceived(Microsoft.AspNetCore.Authentication.OpenIdConnect.AuthorizationCodeReceivedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.MessageReceived(Microsoft.AspNetCore.Authentication.OpenIdConnect.MessageReceivedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.RedirectToIdentityProvider(Microsoft.AspNetCore.Authentication.OpenIdConnect.RedirectContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.RedirectToIdentityProviderForSignOut(Microsoft.AspNetCore.Authentication.OpenIdConnect.RedirectContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.RemoteSignOut(Microsoft.AspNetCore.Authentication.OpenIdConnect.RemoteSignOutContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.SignedOutCallbackRedirect(Microsoft.AspNetCore.Authentication.OpenIdConnect.RemoteSignOutContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.TokenResponseReceived(Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenResponseReceivedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.TokenValidated(Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents.UserInformationReceived(Microsoft.AspNetCore.Authentication.OpenIdConnect.UserInformationReceivedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.GetUserInformationAsync(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage message, System.IdentityModel.Tokens.Jwt.JwtSecurityToken jwt, System.Security.Claims.ClaimsPrincipal principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRemoteSignOutAsync() -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleSignOutCallbackAsync() -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.RedeemAuthorizationCodeAsync(Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectMessage tokenEndpointRequest) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.SignOutAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task diff --git a/src/Security/Authentication/Twitter/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Twitter/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/Twitter/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/Twitter/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Twitter/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..34c761abc648 --- /dev/null +++ b/src/Security/Authentication/Twitter/src/PublicAPI.Unshipped.txt @@ -0,0 +1,73 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.Twitter.AccessToken +Microsoft.AspNetCore.Authentication.Twitter.AccessToken.AccessToken() -> void +Microsoft.AspNetCore.Authentication.Twitter.RequestToken +Microsoft.AspNetCore.Authentication.Twitter.RequestToken.CallbackConfirmed.get -> bool +Microsoft.AspNetCore.Authentication.Twitter.RequestToken.CallbackConfirmed.set -> void +Microsoft.AspNetCore.Authentication.Twitter.RequestToken.RequestToken() -> void +Microsoft.AspNetCore.Authentication.Twitter.RequestTokenSerializer +Microsoft.AspNetCore.Authentication.Twitter.RequestTokenSerializer.RequestTokenSerializer() -> void +Microsoft.AspNetCore.Authentication.Twitter.TwitterCreatingTicketContext +Microsoft.AspNetCore.Authentication.Twitter.TwitterCreatingTicketContext.User.get -> System.Text.Json.JsonElement +Microsoft.AspNetCore.Authentication.Twitter.TwitterDefaults +Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents +Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents.TwitterEvents() -> void +Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler +Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions +Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.RetrieveUserDetails.get -> bool +Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.RetrieveUserDetails.set -> void +Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.TwitterOptions() -> void +Microsoft.AspNetCore.Authentication.Twitter.TwitterPostConfigureOptions +Microsoft.Extensions.DependencyInjection.TwitterExtensions +override Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.Validate() -> void +~Microsoft.AspNetCore.Authentication.Twitter.AccessToken.ScreenName.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.AccessToken.ScreenName.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.AccessToken.UserId.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.AccessToken.UserId.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.RequestToken.Properties.get -> Microsoft.AspNetCore.Authentication.AuthenticationProperties +~Microsoft.AspNetCore.Authentication.Twitter.RequestToken.Properties.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.RequestToken.Token.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.RequestToken.Token.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.RequestToken.TokenSecret.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.RequestToken.TokenSecret.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterCreatingTicketContext.AccessToken.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.TwitterCreatingTicketContext.AccessTokenSecret.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.TwitterCreatingTicketContext.ScreenName.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.TwitterCreatingTicketContext.TwitterCreatingTicketContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions options, System.Security.Claims.ClaimsPrincipal principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, string userId, string screenName, string accessToken, string accessTokenSecret, System.Text.Json.JsonElement user) -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterCreatingTicketContext.UserId.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents.OnCreatingTicket.get -> System.Func +~Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents.OnCreatingTicket.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents.OnRedirectToAuthorizationEndpoint.get -> System.Func, System.Threading.Tasks.Task> +~Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents.OnRedirectToAuthorizationEndpoint.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.Events.get -> Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents +~Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.Events.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.TwitterHandler(Microsoft.Extensions.Options.IOptionsMonitor options, Microsoft.Extensions.Logging.ILoggerFactory logger, System.Text.Encodings.Web.UrlEncoder encoder, Microsoft.AspNetCore.Authentication.ISystemClock clock) -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.ClaimActions.get -> Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.ConsumerKey.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.ConsumerKey.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.ConsumerSecret.get -> string +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.ConsumerSecret.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.Events.get -> Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.Events.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.StateCookie.get -> Microsoft.AspNetCore.Http.CookieBuilder +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.StateCookie.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.StateDataFormat.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat +~Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.StateDataFormat.set -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterPostConfigureOptions.PostConfigure(string name, Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions options) -> void +~Microsoft.AspNetCore.Authentication.Twitter.TwitterPostConfigureOptions.TwitterPostConfigureOptions(Microsoft.AspNetCore.DataProtection.IDataProtectionProvider dataProtection) -> void +~const Microsoft.AspNetCore.Authentication.Twitter.TwitterDefaults.AuthenticationScheme = "Twitter" -> string +~override Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.CreateEventsAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.HandleChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.HandleRemoteAuthenticateAsync() -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Authentication.Twitter.RequestTokenSerializer.Read(System.IO.BinaryReader reader) -> Microsoft.AspNetCore.Authentication.Twitter.RequestToken +~static Microsoft.AspNetCore.Authentication.Twitter.RequestTokenSerializer.Write(System.IO.BinaryWriter writer, Microsoft.AspNetCore.Authentication.Twitter.RequestToken token) -> void +~static Microsoft.Extensions.DependencyInjection.TwitterExtensions.AddTwitter(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.TwitterExtensions.AddTwitter(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.TwitterExtensions.AddTwitter(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.TwitterExtensions.AddTwitter(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static readonly Microsoft.AspNetCore.Authentication.Twitter.TwitterDefaults.DisplayName -> string +~virtual Microsoft.AspNetCore.Authentication.Twitter.RequestTokenSerializer.Deserialize(byte[] data) -> Microsoft.AspNetCore.Authentication.Twitter.RequestToken +~virtual Microsoft.AspNetCore.Authentication.Twitter.RequestTokenSerializer.Serialize(Microsoft.AspNetCore.Authentication.Twitter.RequestToken model) -> byte[] +~virtual Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents.CreatingTicket(Microsoft.AspNetCore.Authentication.Twitter.TwitterCreatingTicketContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents.RedirectToAuthorizationEndpoint(Microsoft.AspNetCore.Authentication.RedirectContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.CreateTicketAsync(System.Security.Claims.ClaimsIdentity identity, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties, Microsoft.AspNetCore.Authentication.Twitter.AccessToken token, System.Text.Json.JsonElement user) -> System.Threading.Tasks.Task diff --git a/src/Security/Authentication/WsFederation/src/PublicAPI.Shipped.txt b/src/Security/Authentication/WsFederation/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authentication/WsFederation/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authentication/WsFederation/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/WsFederation/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..099ceef31a28 --- /dev/null +++ b/src/Security/Authentication/WsFederation/src/PublicAPI.Unshipped.txt @@ -0,0 +1,112 @@ +#nullable enable +Microsoft.AspNetCore.Authentication.WsFederation.AuthenticationFailedContext +Microsoft.AspNetCore.Authentication.WsFederation.MessageReceivedContext +Microsoft.AspNetCore.Authentication.WsFederation.RedirectContext +Microsoft.AspNetCore.Authentication.WsFederation.RedirectContext.HandleResponse() -> void +Microsoft.AspNetCore.Authentication.WsFederation.RedirectContext.Handled.get -> bool +Microsoft.AspNetCore.Authentication.WsFederation.RemoteSignOutContext +Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenReceivedContext +Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationDefaults +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.WsFederationEvents() -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.AllowUnsolicitedLogins.get -> bool +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.AllowUnsolicitedLogins.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.RefreshOnIssuerKeyNotFound.get -> bool +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.RefreshOnIssuerKeyNotFound.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.RemoteSignOutPath.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.RemoteSignOutPath.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.RequireHttpsMetadata.get -> bool +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.RequireHttpsMetadata.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SaveTokens.get -> bool +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SaveTokens.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SkipUnrecognizedRequests.get -> bool +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SkipUnrecognizedRequests.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.UseTokenLifetime.get -> bool +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.UseTokenLifetime.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.WsFederationOptions() -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationPostConfigureOptions +Microsoft.Extensions.DependencyInjection.WsFederationExtensions +override Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Validate() -> void +~Microsoft.AspNetCore.Authentication.WsFederation.AuthenticationFailedContext.AuthenticationFailedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions options) -> void +~Microsoft.AspNetCore.Authentication.WsFederation.AuthenticationFailedContext.Exception.get -> System.Exception +~Microsoft.AspNetCore.Authentication.WsFederation.AuthenticationFailedContext.Exception.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.AuthenticationFailedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.WsFederation.WsFederationMessage +~Microsoft.AspNetCore.Authentication.WsFederation.AuthenticationFailedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.MessageReceivedContext.MessageReceivedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions options, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.WsFederation.MessageReceivedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.WsFederation.WsFederationMessage +~Microsoft.AspNetCore.Authentication.WsFederation.MessageReceivedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.RedirectContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.WsFederation.WsFederationMessage +~Microsoft.AspNetCore.Authentication.WsFederation.RedirectContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.RedirectContext.RedirectContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions options, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.WsFederation.RemoteSignOutContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.WsFederation.WsFederationMessage +~Microsoft.AspNetCore.Authentication.WsFederation.RemoteSignOutContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.RemoteSignOutContext.RemoteSignOutContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions options, Microsoft.IdentityModel.Protocols.WsFederation.WsFederationMessage message) -> void +~Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenReceivedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.WsFederation.WsFederationMessage +~Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenReceivedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenReceivedContext.SecurityTokenReceivedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions options, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.ProtocolMessage.get -> Microsoft.IdentityModel.Protocols.WsFederation.WsFederationMessage +~Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.ProtocolMessage.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityToken.get -> Microsoft.IdentityModel.Tokens.SecurityToken +~Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityToken.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityTokenValidatedContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions options, System.Security.Claims.ClaimsPrincipal principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnAuthenticationFailed.get -> System.Func +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnAuthenticationFailed.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnMessageReceived.get -> System.Func +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnMessageReceived.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnRedirectToIdentityProvider.get -> System.Func +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnRedirectToIdentityProvider.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnRemoteSignOut.get -> System.Func +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnRemoteSignOut.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnSecurityTokenReceived.get -> System.Func +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnSecurityTokenReceived.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnSecurityTokenValidated.get -> System.Func +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.OnSecurityTokenValidated.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.Events.get -> Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.Events.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.WsFederationHandler(Microsoft.Extensions.Options.IOptionsMonitor options, Microsoft.Extensions.Logging.ILoggerFactory logger, System.Text.Encodings.Web.UrlEncoder encoder, Microsoft.AspNetCore.Authentication.ISystemClock clock) -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Configuration.get -> Microsoft.IdentityModel.Protocols.WsFederation.WsFederationConfiguration +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Configuration.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.ConfigurationManager.get -> Microsoft.IdentityModel.Protocols.IConfigurationManager +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.ConfigurationManager.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Events.get -> Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Events.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.MetadataAddress.get -> string +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.MetadataAddress.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SecurityTokenHandlers.get -> System.Collections.Generic.ICollection +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SecurityTokenHandlers.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SignOutScheme.get -> string +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SignOutScheme.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SignOutWreply.get -> string +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SignOutWreply.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.StateDataFormat.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.StateDataFormat.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.TokenValidationParameters.get -> Microsoft.IdentityModel.Tokens.TokenValidationParameters +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.TokenValidationParameters.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Wreply.get -> string +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Wreply.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Wtrealm.get -> string +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Wtrealm.set -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationPostConfigureOptions.PostConfigure(string name, Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions options) -> void +~Microsoft.AspNetCore.Authentication.WsFederation.WsFederationPostConfigureOptions.WsFederationPostConfigureOptions(Microsoft.AspNetCore.DataProtection.IDataProtectionProvider dataProtection) -> void +~const Microsoft.AspNetCore.Authentication.WsFederation.WsFederationDefaults.AuthenticationScheme = "WsFederation" -> string +~const Microsoft.AspNetCore.Authentication.WsFederation.WsFederationDefaults.DisplayName = "WsFederation" -> string +~override Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.CreateEventsAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.HandleChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.HandleRemoteAuthenticateAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.HandleRequestAsync() -> System.Threading.Tasks.Task +~static Microsoft.Extensions.DependencyInjection.WsFederationExtensions.AddWsFederation(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.WsFederationExtensions.AddWsFederation(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.WsFederationExtensions.AddWsFederation(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static Microsoft.Extensions.DependencyInjection.WsFederationExtensions.AddWsFederation(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder builder, string authenticationScheme, string displayName, System.Action configureOptions) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder +~static readonly Microsoft.AspNetCore.Authentication.WsFederation.WsFederationDefaults.UserstatePropertiesKey -> string +~virtual Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.AuthenticationFailed(Microsoft.AspNetCore.Authentication.WsFederation.AuthenticationFailedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.MessageReceived(Microsoft.AspNetCore.Authentication.WsFederation.MessageReceivedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.RedirectToIdentityProvider(Microsoft.AspNetCore.Authentication.WsFederation.RedirectContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.RemoteSignOut(Microsoft.AspNetCore.Authentication.WsFederation.RemoteSignOutContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.SecurityTokenReceived(Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenReceivedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.SecurityTokenValidated(Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext context) -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.HandleRemoteSignOutAsync() -> System.Threading.Tasks.Task +~virtual Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.SignOutAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task diff --git a/src/Security/Authorization/Core/src/PublicAPI.Shipped.txt b/src/Security/Authorization/Core/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authorization/Core/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authorization/Core/src/PublicAPI.Unshipped.txt b/src/Security/Authorization/Core/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..fda10febcd08 --- /dev/null +++ b/src/Security/Authorization/Core/src/PublicAPI.Unshipped.txt @@ -0,0 +1,163 @@ +#nullable enable +Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute +Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute.AllowAnonymousAttribute() -> void +Microsoft.AspNetCore.Authorization.AuthorizationFailure +Microsoft.AspNetCore.Authorization.AuthorizationFailure.FailCalled.get -> bool +Microsoft.AspNetCore.Authorization.AuthorizationFailure.FailedRequirements.get -> System.Collections.Generic.IEnumerable! +Microsoft.AspNetCore.Authorization.AuthorizationHandler +Microsoft.AspNetCore.Authorization.AuthorizationHandler.AuthorizationHandler() -> void +Microsoft.AspNetCore.Authorization.AuthorizationHandler +Microsoft.AspNetCore.Authorization.AuthorizationHandler.AuthorizationHandler() -> void +Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext +Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.AuthorizationHandlerContext(System.Collections.Generic.IEnumerable! requirements, System.Security.Claims.ClaimsPrincipal! user, object? resource) -> void +Microsoft.AspNetCore.Authorization.AuthorizationOptions +Microsoft.AspNetCore.Authorization.AuthorizationOptions.AddPolicy(string! name, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> void +Microsoft.AspNetCore.Authorization.AuthorizationOptions.AddPolicy(string! name, System.Action! configurePolicy) -> void +Microsoft.AspNetCore.Authorization.AuthorizationOptions.AuthorizationOptions() -> void +Microsoft.AspNetCore.Authorization.AuthorizationOptions.DefaultPolicy.get -> Microsoft.AspNetCore.Authorization.AuthorizationPolicy! +Microsoft.AspNetCore.Authorization.AuthorizationOptions.DefaultPolicy.set -> void +Microsoft.AspNetCore.Authorization.AuthorizationOptions.FallbackPolicy.get -> Microsoft.AspNetCore.Authorization.AuthorizationPolicy? +Microsoft.AspNetCore.Authorization.AuthorizationOptions.FallbackPolicy.set -> void +Microsoft.AspNetCore.Authorization.AuthorizationOptions.GetPolicy(string! name) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicy? +Microsoft.AspNetCore.Authorization.AuthorizationOptions.InvokeHandlersAfterFailure.get -> bool +Microsoft.AspNetCore.Authorization.AuthorizationOptions.InvokeHandlersAfterFailure.set -> void +Microsoft.AspNetCore.Authorization.AuthorizationPolicy +Microsoft.AspNetCore.Authorization.AuthorizationPolicy.AuthenticationSchemes.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.AspNetCore.Authorization.AuthorizationPolicy.AuthorizationPolicy(System.Collections.Generic.IEnumerable! requirements, System.Collections.Generic.IEnumerable! authenticationSchemes) -> void +Microsoft.AspNetCore.Authorization.AuthorizationPolicy.Requirements.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.AddAuthenticationSchemes(params string![]! schemes) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.AddRequirements(params Microsoft.AspNetCore.Authorization.IAuthorizationRequirement![]! requirements) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.AuthenticationSchemes.get -> System.Collections.Generic.IList! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.AuthenticationSchemes.set -> void +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.AuthorizationPolicyBuilder(Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> void +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.AuthorizationPolicyBuilder(params string![]! authenticationSchemes) -> void +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.Build() -> Microsoft.AspNetCore.Authorization.AuthorizationPolicy! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.Combine(Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.RequireAssertion(System.Func!>! handler) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.RequireAssertion(System.Func! handler) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.RequireAuthenticatedUser() -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.RequireClaim(string! claimType) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.RequireClaim(string! claimType, System.Collections.Generic.IEnumerable! allowedValues) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.RequireClaim(string! claimType, params string![]! allowedValues) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.RequireRole(System.Collections.Generic.IEnumerable! roles) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.RequireRole(params string![]! roles) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.RequireUserName(string! userName) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.Requirements.get -> System.Collections.Generic.IList! +Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder.Requirements.set -> void +Microsoft.AspNetCore.Authorization.AuthorizationResult +Microsoft.AspNetCore.Authorization.AuthorizationResult.Failure.get -> Microsoft.AspNetCore.Authorization.AuthorizationFailure? +Microsoft.AspNetCore.Authorization.AuthorizationResult.Succeeded.get -> bool +Microsoft.AspNetCore.Authorization.AuthorizationServiceExtensions +Microsoft.AspNetCore.Authorization.AuthorizeAttribute +Microsoft.AspNetCore.Authorization.AuthorizeAttribute.AuthenticationSchemes.get -> string? +Microsoft.AspNetCore.Authorization.AuthorizeAttribute.AuthenticationSchemes.set -> void +Microsoft.AspNetCore.Authorization.AuthorizeAttribute.AuthorizeAttribute() -> void +Microsoft.AspNetCore.Authorization.AuthorizeAttribute.AuthorizeAttribute(string! policy) -> void +Microsoft.AspNetCore.Authorization.AuthorizeAttribute.Policy.get -> string? +Microsoft.AspNetCore.Authorization.AuthorizeAttribute.Policy.set -> void +Microsoft.AspNetCore.Authorization.AuthorizeAttribute.Roles.get -> string? +Microsoft.AspNetCore.Authorization.AuthorizeAttribute.Roles.set -> void +Microsoft.AspNetCore.Authorization.DefaultAuthorizationEvaluator +Microsoft.AspNetCore.Authorization.DefaultAuthorizationEvaluator.DefaultAuthorizationEvaluator() -> void +Microsoft.AspNetCore.Authorization.DefaultAuthorizationEvaluator.Evaluate(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> Microsoft.AspNetCore.Authorization.AuthorizationResult! +Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerContextFactory +Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerContextFactory.DefaultAuthorizationHandlerContextFactory() -> void +Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerProvider +Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerProvider.DefaultAuthorizationHandlerProvider(System.Collections.Generic.IEnumerable! handlers) -> void +Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerProvider.GetHandlersAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task!>! +Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider +Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.GetDefaultPolicyAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.GetFallbackPolicyAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.DefaultAuthorizationService +Microsoft.AspNetCore.Authorization.IAllowAnonymous (forwarded, contained in Microsoft.AspNetCore.Metadata) +Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator +Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator.Evaluate(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> Microsoft.AspNetCore.Authorization.AuthorizationResult! +Microsoft.AspNetCore.Authorization.IAuthorizationHandler +Microsoft.AspNetCore.Authorization.IAuthorizationHandler.HandleAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory +Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory.CreateContext(System.Collections.Generic.IEnumerable! requirements, System.Security.Claims.ClaimsPrincipal! user, object? resource) -> Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! +Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider +Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider.GetHandlersAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task!>! +Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider +Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetDefaultPolicyAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetFallbackPolicyAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetPolicyAsync(string! policyName) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.IAuthorizationRequirement +Microsoft.AspNetCore.Authorization.IAuthorizationService +Microsoft.AspNetCore.Authorization.IAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, System.Collections.Generic.IEnumerable! requirements) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.IAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, string! policyName) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.IAuthorizeData (forwarded, contained in Microsoft.AspNetCore.Metadata) +Microsoft.AspNetCore.Authorization.IAuthorizeData.AuthenticationSchemes.get -> string? (forwarded, contained in Microsoft.AspNetCore.Metadata) +Microsoft.AspNetCore.Authorization.IAuthorizeData.AuthenticationSchemes.set -> void (forwarded, contained in Microsoft.AspNetCore.Metadata) +Microsoft.AspNetCore.Authorization.IAuthorizeData.Policy.get -> string? (forwarded, contained in Microsoft.AspNetCore.Metadata) +Microsoft.AspNetCore.Authorization.IAuthorizeData.Policy.set -> void (forwarded, contained in Microsoft.AspNetCore.Metadata) +Microsoft.AspNetCore.Authorization.IAuthorizeData.Roles.get -> string? (forwarded, contained in Microsoft.AspNetCore.Metadata) +Microsoft.AspNetCore.Authorization.IAuthorizeData.Roles.set -> void (forwarded, contained in Microsoft.AspNetCore.Metadata) +Microsoft.AspNetCore.Authorization.Infrastructure.AssertionRequirement +Microsoft.AspNetCore.Authorization.Infrastructure.AssertionRequirement.AssertionRequirement(System.Func!>! handler) -> void +Microsoft.AspNetCore.Authorization.Infrastructure.AssertionRequirement.AssertionRequirement(System.Func! handler) -> void +Microsoft.AspNetCore.Authorization.Infrastructure.AssertionRequirement.HandleAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.Infrastructure.AssertionRequirement.Handler.get -> System.Func!>! +Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement +Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.AllowedValues.get -> System.Collections.Generic.IEnumerable? +Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.ClaimType.get -> string! +Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.ClaimsAuthorizationRequirement(string! claimType, System.Collections.Generic.IEnumerable? allowedValues) -> void +Microsoft.AspNetCore.Authorization.Infrastructure.DenyAnonymousAuthorizationRequirement +Microsoft.AspNetCore.Authorization.Infrastructure.DenyAnonymousAuthorizationRequirement.DenyAnonymousAuthorizationRequirement() -> void +Microsoft.AspNetCore.Authorization.Infrastructure.NameAuthorizationRequirement +Microsoft.AspNetCore.Authorization.Infrastructure.NameAuthorizationRequirement.NameAuthorizationRequirement(string! requiredName) -> void +Microsoft.AspNetCore.Authorization.Infrastructure.NameAuthorizationRequirement.RequiredName.get -> string! +Microsoft.AspNetCore.Authorization.Infrastructure.OperationAuthorizationRequirement +Microsoft.AspNetCore.Authorization.Infrastructure.OperationAuthorizationRequirement.Name.get -> string! +Microsoft.AspNetCore.Authorization.Infrastructure.OperationAuthorizationRequirement.Name.set -> void +Microsoft.AspNetCore.Authorization.Infrastructure.OperationAuthorizationRequirement.OperationAuthorizationRequirement() -> void +Microsoft.AspNetCore.Authorization.Infrastructure.PassThroughAuthorizationHandler +Microsoft.AspNetCore.Authorization.Infrastructure.PassThroughAuthorizationHandler.HandleAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.Infrastructure.PassThroughAuthorizationHandler.PassThroughAuthorizationHandler() -> void +Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement +Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.AllowedRoles.get -> System.Collections.Generic.IEnumerable! +Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.RolesAuthorizationRequirement(System.Collections.Generic.IEnumerable! allowedRoles) -> void +Microsoft.Extensions.DependencyInjection.AuthorizationServiceCollectionExtensions +abstract Microsoft.AspNetCore.Authorization.AuthorizationHandler.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, TRequirement requirement, TResource resource) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.Authorization.AuthorizationHandler.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, TRequirement requirement) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authorization.Infrastructure.AssertionRequirement.ToString() -> string! +override Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement! requirement) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.ToString() -> string! +override Microsoft.AspNetCore.Authorization.Infrastructure.DenyAnonymousAuthorizationRequirement.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, Microsoft.AspNetCore.Authorization.Infrastructure.DenyAnonymousAuthorizationRequirement! requirement) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authorization.Infrastructure.DenyAnonymousAuthorizationRequirement.ToString() -> string! +override Microsoft.AspNetCore.Authorization.Infrastructure.NameAuthorizationRequirement.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, Microsoft.AspNetCore.Authorization.Infrastructure.NameAuthorizationRequirement! requirement) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authorization.Infrastructure.NameAuthorizationRequirement.ToString() -> string! +override Microsoft.AspNetCore.Authorization.Infrastructure.OperationAuthorizationRequirement.ToString() -> string! +override Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement! requirement) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.ToString() -> string! +static Microsoft.AspNetCore.Authorization.AuthorizationFailure.ExplicitFail() -> Microsoft.AspNetCore.Authorization.AuthorizationFailure! +static Microsoft.AspNetCore.Authorization.AuthorizationFailure.Failed(System.Collections.Generic.IEnumerable! failed) -> Microsoft.AspNetCore.Authorization.AuthorizationFailure! +static Microsoft.AspNetCore.Authorization.AuthorizationPolicy.Combine(System.Collections.Generic.IEnumerable! policies) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicy! +static Microsoft.AspNetCore.Authorization.AuthorizationPolicy.Combine(params Microsoft.AspNetCore.Authorization.AuthorizationPolicy![]! policies) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicy! +static Microsoft.AspNetCore.Authorization.AuthorizationPolicy.CombineAsync(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, System.Collections.Generic.IEnumerable! authorizeData) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.Authorization.AuthorizationResult.Failed() -> Microsoft.AspNetCore.Authorization.AuthorizationResult! +static Microsoft.AspNetCore.Authorization.AuthorizationResult.Failed(Microsoft.AspNetCore.Authorization.AuthorizationFailure! failure) -> Microsoft.AspNetCore.Authorization.AuthorizationResult! +static Microsoft.AspNetCore.Authorization.AuthorizationResult.Success() -> Microsoft.AspNetCore.Authorization.AuthorizationResult! +static Microsoft.AspNetCore.Authorization.AuthorizationServiceExtensions.AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService! service, System.Security.Claims.ClaimsPrincipal! user, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.Authorization.AuthorizationServiceExtensions.AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService! service, System.Security.Claims.ClaimsPrincipal! user, object! resource, Microsoft.AspNetCore.Authorization.IAuthorizationRequirement! requirement) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.Authorization.AuthorizationServiceExtensions.AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService! service, System.Security.Claims.ClaimsPrincipal! user, object? resource, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.Authorization.AuthorizationServiceExtensions.AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService! service, System.Security.Claims.ClaimsPrincipal! user, string! policyName) -> System.Threading.Tasks.Task! +static Microsoft.Extensions.DependencyInjection.AuthorizationServiceCollectionExtensions.AddAuthorizationCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.AuthorizationServiceCollectionExtensions.AddAuthorizationCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandler.HandleAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandler.HandleAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.Fail() -> void +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.HasFailed.get -> bool +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.HasSucceeded.get -> bool +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.PendingRequirements.get -> System.Collections.Generic.IEnumerable! +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.Requirements.get -> System.Collections.Generic.IEnumerable! +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.Resource.get -> object? +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.Succeed(Microsoft.AspNetCore.Authorization.IAuthorizationRequirement! requirement) -> void +virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.User.get -> System.Security.Claims.ClaimsPrincipal! +virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerContextFactory.CreateContext(System.Collections.Generic.IEnumerable! requirements, System.Security.Claims.ClaimsPrincipal! user, object? resource) -> Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! +virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.GetPolicyAsync(string! policyName) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, System.Collections.Generic.IEnumerable! requirements) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, string! policyName) -> System.Threading.Tasks.Task! +~Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.DefaultAuthorizationPolicyProvider(Microsoft.Extensions.Options.IOptions! options) -> void +~Microsoft.AspNetCore.Authorization.DefaultAuthorizationService.DefaultAuthorizationService(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider! handlers, Microsoft.Extensions.Logging.ILogger! logger, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory! contextFactory, Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator! evaluator, Microsoft.Extensions.Options.IOptions! options) -> void diff --git a/src/Security/Authorization/Policy/src/PublicAPI.Shipped.txt b/src/Security/Authorization/Policy/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/Authorization/Policy/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/Authorization/Policy/src/PublicAPI.Unshipped.txt b/src/Security/Authorization/Policy/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..1e144c66992e --- /dev/null +++ b/src/Security/Authorization/Policy/src/PublicAPI.Unshipped.txt @@ -0,0 +1,36 @@ +#nullable enable +Microsoft.AspNetCore.Authorization.AuthorizationMiddleware +Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.AuthorizationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider) -> void +Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.IAuthorizationMiddlewareResultHandler +Microsoft.AspNetCore.Authorization.IAuthorizationMiddlewareResultHandler.HandleAsync(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy, Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult! authorizeResult) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler +Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.AuthorizationMiddlewareResultHandler() -> void +Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy, Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult! authorizeResult) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.Policy.IPolicyEvaluator +Microsoft.AspNetCore.Authorization.Policy.IPolicyEvaluator.AuthenticateAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy, Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.Policy.IPolicyEvaluator.AuthorizeAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy, Microsoft.AspNetCore.Authentication.AuthenticateResult! authenticationResult, Microsoft.AspNetCore.Http.HttpContext! context, object? resource) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult +Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult.AuthorizationFailure.get -> Microsoft.AspNetCore.Authorization.AuthorizationFailure? +Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult.Challenged.get -> bool +Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult.Forbidden.get -> bool +Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult.Succeeded.get -> bool +Microsoft.AspNetCore.Authorization.Policy.PolicyEvaluator +Microsoft.AspNetCore.Authorization.Policy.PolicyEvaluator.PolicyEvaluator(Microsoft.AspNetCore.Authorization.IAuthorizationService! authorization) -> void +Microsoft.AspNetCore.Builder.AuthorizationAppBuilderExtensions +Microsoft.AspNetCore.Builder.AuthorizationEndpointConventionBuilderExtensions +Microsoft.Extensions.DependencyInjection.PolicyServiceCollectionExtensions +static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult.Challenge() -> Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult! +static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult.Forbid() -> Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult! +static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult.Forbid(Microsoft.AspNetCore.Authorization.AuthorizationFailure? authorizationFailure) -> Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult! +static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult.Success() -> Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult! +static Microsoft.AspNetCore.Builder.AuthorizationAppBuilderExtensions.UseAuthorization(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.Builder.AuthorizationEndpointConventionBuilderExtensions.AllowAnonymous(this TBuilder builder) -> TBuilder +static Microsoft.AspNetCore.Builder.AuthorizationEndpointConventionBuilderExtensions.RequireAuthorization(this TBuilder builder) -> TBuilder +static Microsoft.AspNetCore.Builder.AuthorizationEndpointConventionBuilderExtensions.RequireAuthorization(this TBuilder builder, params Microsoft.AspNetCore.Authorization.IAuthorizeData![]! authorizeData) -> TBuilder +static Microsoft.AspNetCore.Builder.AuthorizationEndpointConventionBuilderExtensions.RequireAuthorization(this TBuilder builder, params string![]! policyNames) -> TBuilder +static Microsoft.Extensions.DependencyInjection.PolicyServiceCollectionExtensions.AddAuthorization(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.PolicyServiceCollectionExtensions.AddAuthorization(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.PolicyServiceCollectionExtensions.AddAuthorizationPolicyEvaluator(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +virtual Microsoft.AspNetCore.Authorization.Policy.PolicyEvaluator.AuthenticateAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy, Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Authorization.Policy.PolicyEvaluator.AuthorizeAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy, Microsoft.AspNetCore.Authentication.AuthenticateResult! authenticationResult, Microsoft.AspNetCore.Http.HttpContext! context, object? resource) -> System.Threading.Tasks.Task! diff --git a/src/Security/CookiePolicy/src/PublicAPI.Shipped.txt b/src/Security/CookiePolicy/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Security/CookiePolicy/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Security/CookiePolicy/src/PublicAPI.Unshipped.txt b/src/Security/CookiePolicy/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..ce25b3d3e24f --- /dev/null +++ b/src/Security/CookiePolicy/src/PublicAPI.Unshipped.txt @@ -0,0 +1,54 @@ +#nullable enable +Microsoft.AspNetCore.Builder.CookiePolicyAppBuilderExtensions +Microsoft.AspNetCore.Builder.CookiePolicyOptions +Microsoft.AspNetCore.Builder.CookiePolicyOptions.CookiePolicyOptions() -> void +Microsoft.AspNetCore.Builder.CookiePolicyOptions.HttpOnly.get -> Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy +Microsoft.AspNetCore.Builder.CookiePolicyOptions.HttpOnly.set -> void +Microsoft.AspNetCore.Builder.CookiePolicyOptions.MinimumSameSitePolicy.get -> Microsoft.AspNetCore.Http.SameSiteMode +Microsoft.AspNetCore.Builder.CookiePolicyOptions.MinimumSameSitePolicy.set -> void +Microsoft.AspNetCore.Builder.CookiePolicyOptions.Secure.get -> Microsoft.AspNetCore.Http.CookieSecurePolicy +Microsoft.AspNetCore.Builder.CookiePolicyOptions.Secure.set -> void +Microsoft.AspNetCore.CookiePolicy.AppendCookieContext +Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.HasConsent.get -> bool +Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.IsConsentNeeded.get -> bool +Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.IssueCookie.get -> bool +Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.IssueCookie.set -> void +Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware +Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext +Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext.HasConsent.get -> bool +Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext.IsConsentNeeded.get -> bool +Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext.IssueCookie.get -> bool +Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext.IssueCookie.set -> void +Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy +Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always = 1 -> Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy +Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.None = 0 -> Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy +Microsoft.Extensions.DependencyInjection.CookiePolicyServiceCollectionExtensions +~Microsoft.AspNetCore.Builder.CookiePolicyOptions.CheckConsentNeeded.get -> System.Func +~Microsoft.AspNetCore.Builder.CookiePolicyOptions.CheckConsentNeeded.set -> void +~Microsoft.AspNetCore.Builder.CookiePolicyOptions.ConsentCookie.get -> Microsoft.AspNetCore.Http.CookieBuilder +~Microsoft.AspNetCore.Builder.CookiePolicyOptions.ConsentCookie.set -> void +~Microsoft.AspNetCore.Builder.CookiePolicyOptions.OnAppendCookie.get -> System.Action +~Microsoft.AspNetCore.Builder.CookiePolicyOptions.OnAppendCookie.set -> void +~Microsoft.AspNetCore.Builder.CookiePolicyOptions.OnDeleteCookie.get -> System.Action +~Microsoft.AspNetCore.Builder.CookiePolicyOptions.OnDeleteCookie.set -> void +~Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.AppendCookieContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Http.CookieOptions options, string name, string value) -> void +~Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.Context.get -> Microsoft.AspNetCore.Http.HttpContext +~Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.CookieName.get -> string +~Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.CookieName.set -> void +~Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.CookieOptions.get -> Microsoft.AspNetCore.Http.CookieOptions +~Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.CookieValue.get -> string +~Microsoft.AspNetCore.CookiePolicy.AppendCookieContext.CookieValue.set -> void +~Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware.CookiePolicyMiddleware(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.Extensions.Options.IOptions options) -> void +~Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware.CookiePolicyMiddleware(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.Extensions.Options.IOptions options, Microsoft.Extensions.Logging.ILoggerFactory factory) -> void +~Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware.Options.get -> Microsoft.AspNetCore.Builder.CookiePolicyOptions +~Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware.Options.set -> void +~Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext.Context.get -> Microsoft.AspNetCore.Http.HttpContext +~Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext.CookieName.get -> string +~Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext.CookieName.set -> void +~Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext.CookieOptions.get -> Microsoft.AspNetCore.Http.CookieOptions +~Microsoft.AspNetCore.CookiePolicy.DeleteCookieContext.DeleteCookieContext(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Http.CookieOptions options, string name) -> void +~static Microsoft.AspNetCore.Builder.CookiePolicyAppBuilderExtensions.UseCookiePolicy(this Microsoft.AspNetCore.Builder.IApplicationBuilder app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder +~static Microsoft.AspNetCore.Builder.CookiePolicyAppBuilderExtensions.UseCookiePolicy(this Microsoft.AspNetCore.Builder.IApplicationBuilder app, Microsoft.AspNetCore.Builder.CookiePolicyOptions options) -> Microsoft.AspNetCore.Builder.IApplicationBuilder +~static Microsoft.Extensions.DependencyInjection.CookiePolicyServiceCollectionExtensions.AddCookiePolicy(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configureOptions) -> Microsoft.Extensions.DependencyInjection.IServiceCollection +~static Microsoft.Extensions.DependencyInjection.CookiePolicyServiceCollectionExtensions.AddCookiePolicy(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configureOptions) -> Microsoft.Extensions.DependencyInjection.IServiceCollection diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI.Shipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Servers/Connections.Abstractions/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI.Unshipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..d34eedc8afdf --- /dev/null +++ b/src/Servers/Connections.Abstractions/src/PublicAPI.Unshipped.txt @@ -0,0 +1,153 @@ +#nullable enable +Microsoft.AspNetCore.Connections.AddressInUseException +Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message) -> void +Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message, System.Exception! inner) -> void +Microsoft.AspNetCore.Connections.BaseConnectionContext +Microsoft.AspNetCore.Connections.BaseConnectionContext.BaseConnectionContext() -> void +Microsoft.AspNetCore.Connections.ConnectionAbortedException +Microsoft.AspNetCore.Connections.ConnectionAbortedException.ConnectionAbortedException() -> void +Microsoft.AspNetCore.Connections.ConnectionAbortedException.ConnectionAbortedException(string! message) -> void +Microsoft.AspNetCore.Connections.ConnectionAbortedException.ConnectionAbortedException(string! message, System.Exception! inner) -> void +Microsoft.AspNetCore.Connections.ConnectionBuilder +Microsoft.AspNetCore.Connections.ConnectionBuilder.ApplicationServices.get -> System.IServiceProvider! +Microsoft.AspNetCore.Connections.ConnectionBuilder.Build() -> Microsoft.AspNetCore.Connections.ConnectionDelegate! +Microsoft.AspNetCore.Connections.ConnectionBuilder.ConnectionBuilder(System.IServiceProvider! applicationServices) -> void +Microsoft.AspNetCore.Connections.ConnectionBuilder.Use(System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions +Microsoft.AspNetCore.Connections.ConnectionContext +Microsoft.AspNetCore.Connections.ConnectionContext.ConnectionContext() -> void +Microsoft.AspNetCore.Connections.ConnectionDelegate +Microsoft.AspNetCore.Connections.ConnectionHandler +Microsoft.AspNetCore.Connections.ConnectionHandler.ConnectionHandler() -> void +Microsoft.AspNetCore.Connections.ConnectionItems +Microsoft.AspNetCore.Connections.ConnectionItems.ConnectionItems() -> void +Microsoft.AspNetCore.Connections.ConnectionItems.ConnectionItems(System.Collections.Generic.IDictionary! items) -> void +Microsoft.AspNetCore.Connections.ConnectionItems.Items.get -> System.Collections.Generic.IDictionary! +Microsoft.AspNetCore.Connections.ConnectionResetException +Microsoft.AspNetCore.Connections.ConnectionResetException.ConnectionResetException(string! message) -> void +Microsoft.AspNetCore.Connections.ConnectionResetException.ConnectionResetException(string! message, System.Exception! inner) -> void +Microsoft.AspNetCore.Connections.DefaultConnectionContext +Microsoft.AspNetCore.Connections.DefaultConnectionContext.Application.get -> System.IO.Pipelines.IDuplexPipe? +Microsoft.AspNetCore.Connections.DefaultConnectionContext.Application.set -> void +Microsoft.AspNetCore.Connections.DefaultConnectionContext.DefaultConnectionContext() -> void +Microsoft.AspNetCore.Connections.DefaultConnectionContext.DefaultConnectionContext(string! id) -> void +Microsoft.AspNetCore.Connections.DefaultConnectionContext.DefaultConnectionContext(string! id, System.IO.Pipelines.IDuplexPipe! transport, System.IO.Pipelines.IDuplexPipe! application) -> void +Microsoft.AspNetCore.Connections.DefaultConnectionContext.User.get -> System.Security.Claims.ClaimsPrincipal? +Microsoft.AspNetCore.Connections.DefaultConnectionContext.User.set -> void +Microsoft.AspNetCore.Connections.Features.IConnectionCompleteFeature +Microsoft.AspNetCore.Connections.Features.IConnectionCompleteFeature.OnCompleted(System.Func! callback, object! state) -> void +Microsoft.AspNetCore.Connections.Features.IConnectionEndPointFeature +Microsoft.AspNetCore.Connections.Features.IConnectionEndPointFeature.LocalEndPoint.get -> System.Net.EndPoint? +Microsoft.AspNetCore.Connections.Features.IConnectionEndPointFeature.LocalEndPoint.set -> void +Microsoft.AspNetCore.Connections.Features.IConnectionEndPointFeature.RemoteEndPoint.get -> System.Net.EndPoint? +Microsoft.AspNetCore.Connections.Features.IConnectionEndPointFeature.RemoteEndPoint.set -> void +Microsoft.AspNetCore.Connections.Features.IConnectionHeartbeatFeature +Microsoft.AspNetCore.Connections.Features.IConnectionHeartbeatFeature.OnHeartbeat(System.Action! action, object! state) -> void +Microsoft.AspNetCore.Connections.Features.IConnectionIdFeature +Microsoft.AspNetCore.Connections.Features.IConnectionIdFeature.ConnectionId.get -> string! +Microsoft.AspNetCore.Connections.Features.IConnectionIdFeature.ConnectionId.set -> void +Microsoft.AspNetCore.Connections.Features.IConnectionInherentKeepAliveFeature +Microsoft.AspNetCore.Connections.Features.IConnectionInherentKeepAliveFeature.HasInherentKeepAlive.get -> bool +Microsoft.AspNetCore.Connections.Features.IConnectionItemsFeature +Microsoft.AspNetCore.Connections.Features.IConnectionItemsFeature.Items.get -> System.Collections.Generic.IDictionary! +Microsoft.AspNetCore.Connections.Features.IConnectionItemsFeature.Items.set -> void +Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeFeature +Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeFeature.Abort() -> void +Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeFeature.ConnectionClosed.get -> System.Threading.CancellationToken +Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeFeature.ConnectionClosed.set -> void +Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature +Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.get -> System.Threading.CancellationToken +Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.set -> void +Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.RequestClose() -> void +Microsoft.AspNetCore.Connections.Features.IConnectionTransportFeature +Microsoft.AspNetCore.Connections.Features.IConnectionTransportFeature.Transport.get -> System.IO.Pipelines.IDuplexPipe! +Microsoft.AspNetCore.Connections.Features.IConnectionTransportFeature.Transport.set -> void +Microsoft.AspNetCore.Connections.Features.IConnectionUserFeature +Microsoft.AspNetCore.Connections.Features.IConnectionUserFeature.User.get -> System.Security.Claims.ClaimsPrincipal? +Microsoft.AspNetCore.Connections.Features.IConnectionUserFeature.User.set -> void +Microsoft.AspNetCore.Connections.Features.IMemoryPoolFeature +Microsoft.AspNetCore.Connections.Features.IMemoryPoolFeature.MemoryPool.get -> System.Buffers.MemoryPool! +Microsoft.AspNetCore.Connections.Features.IProtocolErrorCodeFeature +Microsoft.AspNetCore.Connections.Features.IProtocolErrorCodeFeature.Error.get -> long +Microsoft.AspNetCore.Connections.Features.IProtocolErrorCodeFeature.Error.set -> void +Microsoft.AspNetCore.Connections.Features.IStreamDirectionFeature +Microsoft.AspNetCore.Connections.Features.IStreamDirectionFeature.CanRead.get -> bool +Microsoft.AspNetCore.Connections.Features.IStreamDirectionFeature.CanWrite.get -> bool +Microsoft.AspNetCore.Connections.Features.IStreamIdFeature +Microsoft.AspNetCore.Connections.Features.IStreamIdFeature.StreamId.get -> long +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.CipherAlgorithm.get -> System.Security.Authentication.CipherAlgorithmType +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.CipherStrength.get -> int +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.HashAlgorithm.get -> System.Security.Authentication.HashAlgorithmType +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.HashStrength.get -> int +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.KeyExchangeAlgorithm.get -> System.Security.Authentication.ExchangeAlgorithmType +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.KeyExchangeStrength.get -> int +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.Protocol.get -> System.Security.Authentication.SslProtocols +Microsoft.AspNetCore.Connections.Features.ITransferFormatFeature +Microsoft.AspNetCore.Connections.Features.ITransferFormatFeature.ActiveFormat.get -> Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.Connections.Features.ITransferFormatFeature.ActiveFormat.set -> void +Microsoft.AspNetCore.Connections.Features.ITransferFormatFeature.SupportedFormats.get -> Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.Connections.FileHandleEndPoint +Microsoft.AspNetCore.Connections.FileHandleEndPoint.FileHandle.get -> ulong +Microsoft.AspNetCore.Connections.FileHandleEndPoint.FileHandleEndPoint(ulong fileHandle, Microsoft.AspNetCore.Connections.FileHandleType fileHandleType) -> void +Microsoft.AspNetCore.Connections.FileHandleEndPoint.FileHandleType.get -> Microsoft.AspNetCore.Connections.FileHandleType +Microsoft.AspNetCore.Connections.FileHandleType +Microsoft.AspNetCore.Connections.FileHandleType.Auto = 0 -> Microsoft.AspNetCore.Connections.FileHandleType +Microsoft.AspNetCore.Connections.FileHandleType.Pipe = 2 -> Microsoft.AspNetCore.Connections.FileHandleType +Microsoft.AspNetCore.Connections.FileHandleType.Tcp = 1 -> Microsoft.AspNetCore.Connections.FileHandleType +Microsoft.AspNetCore.Connections.IConnectionBuilder +Microsoft.AspNetCore.Connections.IConnectionBuilder.ApplicationServices.get -> System.IServiceProvider! +Microsoft.AspNetCore.Connections.IConnectionBuilder.Build() -> Microsoft.AspNetCore.Connections.ConnectionDelegate! +Microsoft.AspNetCore.Connections.IConnectionBuilder.Use(System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +Microsoft.AspNetCore.Connections.IConnectionFactory +Microsoft.AspNetCore.Connections.IConnectionFactory.ConnectAsync(System.Net.EndPoint! endpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.IConnectionListener +Microsoft.AspNetCore.Connections.IConnectionListener.AcceptAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.IConnectionListener.EndPoint.get -> System.Net.EndPoint! +Microsoft.AspNetCore.Connections.IConnectionListener.UnbindAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.IConnectionListenerFactory +Microsoft.AspNetCore.Connections.IConnectionListenerFactory.BindAsync(System.Net.EndPoint! endpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.Connections.TransferFormat.Binary = 1 -> Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.Connections.TransferFormat.Text = 2 -> Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.Connections.UriEndPoint +Microsoft.AspNetCore.Connections.UriEndPoint.Uri.get -> System.Uri! +Microsoft.AspNetCore.Connections.UriEndPoint.UriEndPoint(System.Uri! uri) -> void +abstract Microsoft.AspNetCore.Connections.BaseConnectionContext.Abort() -> void +abstract Microsoft.AspNetCore.Connections.BaseConnectionContext.Abort(Microsoft.AspNetCore.Connections.ConnectionAbortedException! abortReason) -> void +abstract Microsoft.AspNetCore.Connections.BaseConnectionContext.ConnectionId.get -> string! +abstract Microsoft.AspNetCore.Connections.BaseConnectionContext.ConnectionId.set -> void +abstract Microsoft.AspNetCore.Connections.BaseConnectionContext.Features.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection! +abstract Microsoft.AspNetCore.Connections.BaseConnectionContext.Items.get -> System.Collections.Generic.IDictionary! +abstract Microsoft.AspNetCore.Connections.BaseConnectionContext.Items.set -> void +abstract Microsoft.AspNetCore.Connections.ConnectionContext.Transport.get -> System.IO.Pipelines.IDuplexPipe! +abstract Microsoft.AspNetCore.Connections.ConnectionContext.Transport.set -> void +abstract Microsoft.AspNetCore.Connections.ConnectionHandler.OnConnectedAsync(Microsoft.AspNetCore.Connections.ConnectionContext! connection) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Connections.ConnectionContext.Abort() -> void +override Microsoft.AspNetCore.Connections.ConnectionContext.Abort(Microsoft.AspNetCore.Connections.ConnectionAbortedException! abortReason) -> void +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Abort(Microsoft.AspNetCore.Connections.ConnectionAbortedException! abortReason) -> void +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.ConnectionClosed.get -> System.Threading.CancellationToken +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.ConnectionClosed.set -> void +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.ConnectionId.get -> string! +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.ConnectionId.set -> void +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.DisposeAsync() -> System.Threading.Tasks.ValueTask +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Features.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection! +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Items.get -> System.Collections.Generic.IDictionary! +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Items.set -> void +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.LocalEndPoint.get -> System.Net.EndPoint? +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.LocalEndPoint.set -> void +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoint.get -> System.Net.EndPoint? +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoint.set -> void +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.get -> System.IO.Pipelines.IDuplexPipe! +override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.set -> void +override Microsoft.AspNetCore.Connections.UriEndPoint.ToString() -> string! +static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Run(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func!, System.Threading.Tasks.Task!>! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.UseConnectionHandler(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.ConnectionClosed.get -> System.Threading.CancellationToken +virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.ConnectionClosed.set -> void +virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.DisposeAsync() -> System.Threading.Tasks.ValueTask +virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.LocalEndPoint.get -> System.Net.EndPoint? +virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.LocalEndPoint.set -> void +virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.RemoteEndPoint.get -> System.Net.EndPoint? +virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.RemoteEndPoint.set -> void diff --git a/src/Servers/HttpSys/src/Microsoft.AspNetCore.Server.HttpSys.csproj b/src/Servers/HttpSys/src/Microsoft.AspNetCore.Server.HttpSys.csproj index 72b994fff31b..0ab19cbe7891 100644 --- a/src/Servers/HttpSys/src/Microsoft.AspNetCore.Server.HttpSys.csproj +++ b/src/Servers/HttpSys/src/Microsoft.AspNetCore.Server.HttpSys.csproj @@ -9,6 +9,9 @@ true aspnetcore;weblistener;httpsys false + + + $(NoWarn);CA1416 diff --git a/src/Servers/HttpSys/src/PublicAPI.Shipped.txt b/src/Servers/HttpSys/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Servers/HttpSys/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Servers/HttpSys/src/PublicAPI.Unshipped.txt b/src/Servers/HttpSys/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..745aee1e3bf5 --- /dev/null +++ b/src/Servers/HttpSys/src/PublicAPI.Unshipped.txt @@ -0,0 +1,111 @@ +#nullable enable +Microsoft.AspNetCore.Hosting.WebHostBuilderHttpSysExtensions +Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager +Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager.AllowAnonymous.get -> bool +Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager.AllowAnonymous.set -> void +Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager.AutomaticAuthentication.get -> bool +Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager.AutomaticAuthentication.set -> void +Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager.Schemes.get -> Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes +Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager.Schemes.set -> void +Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes +Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes.Basic = 1 -> Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes +Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes.Kerberos = 16 -> Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes +Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes.NTLM = 4 -> Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes +Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes.Negotiate = 8 -> Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes +Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes.None = 0 -> Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes +Microsoft.AspNetCore.Server.HttpSys.ClientCertificateMethod +Microsoft.AspNetCore.Server.HttpSys.ClientCertificateMethod.AllowCertificate = 1 -> Microsoft.AspNetCore.Server.HttpSys.ClientCertificateMethod +Microsoft.AspNetCore.Server.HttpSys.ClientCertificateMethod.AllowRenegotation = 2 -> Microsoft.AspNetCore.Server.HttpSys.ClientCertificateMethod +Microsoft.AspNetCore.Server.HttpSys.ClientCertificateMethod.NoCertificate = 0 -> Microsoft.AspNetCore.Server.HttpSys.ClientCertificateMethod +Microsoft.AspNetCore.Server.HttpSys.DelegationRule +Microsoft.AspNetCore.Server.HttpSys.DelegationRule.Dispose() -> void +Microsoft.AspNetCore.Server.HttpSys.Http503VerbosityLevel +Microsoft.AspNetCore.Server.HttpSys.Http503VerbosityLevel.Basic = 0 -> Microsoft.AspNetCore.Server.HttpSys.Http503VerbosityLevel +Microsoft.AspNetCore.Server.HttpSys.Http503VerbosityLevel.Full = 2 -> Microsoft.AspNetCore.Server.HttpSys.Http503VerbosityLevel +Microsoft.AspNetCore.Server.HttpSys.Http503VerbosityLevel.Limited = 1 -> Microsoft.AspNetCore.Server.HttpSys.Http503VerbosityLevel +Microsoft.AspNetCore.Server.HttpSys.HttpSysDefaults +Microsoft.AspNetCore.Server.HttpSys.HttpSysException +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.AllowSynchronousIO.get -> bool +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.AllowSynchronousIO.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.ClientCertificateMethod.get -> Microsoft.AspNetCore.Server.HttpSys.ClientCertificateMethod +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.ClientCertificateMethod.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.EnableResponseCaching.get -> bool +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.EnableResponseCaching.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.Http503Verbosity.get -> Microsoft.AspNetCore.Server.HttpSys.Http503VerbosityLevel +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.Http503Verbosity.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.HttpSysOptions() -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.MaxAccepts.get -> int +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.MaxAccepts.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.MaxConnections.get -> long? +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.MaxConnections.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.MaxRequestBodySize.get -> long? +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.MaxRequestBodySize.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.RequestQueueLimit.get -> long +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.RequestQueueLimit.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.RequestQueueMode.get -> Microsoft.AspNetCore.Server.HttpSys.RequestQueueMode +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.RequestQueueMode.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.ThrowWriteExceptions.get -> bool +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.ThrowWriteExceptions.set -> void +Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestDelegationFeature +Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestDelegationFeature.CanDelegate.get -> bool +Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestInfoFeature +Microsoft.AspNetCore.Server.HttpSys.IServerDelegationFeature +Microsoft.AspNetCore.Server.HttpSys.RequestQueueMode +Microsoft.AspNetCore.Server.HttpSys.RequestQueueMode.Attach = 1 -> Microsoft.AspNetCore.Server.HttpSys.RequestQueueMode +Microsoft.AspNetCore.Server.HttpSys.RequestQueueMode.Create = 0 -> Microsoft.AspNetCore.Server.HttpSys.RequestQueueMode +Microsoft.AspNetCore.Server.HttpSys.RequestQueueMode.CreateOrAttach = 2 -> Microsoft.AspNetCore.Server.HttpSys.RequestQueueMode +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.DrainEntityBody.get -> System.TimeSpan +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.DrainEntityBody.set -> void +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.EntityBody.get -> System.TimeSpan +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.EntityBody.set -> void +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.HeaderWait.get -> System.TimeSpan +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.HeaderWait.set -> void +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.IdleConnection.get -> System.TimeSpan +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.IdleConnection.set -> void +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.MinSendBytesPerSecond.get -> long +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.MinSendBytesPerSecond.set -> void +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.RequestQueue.get -> System.TimeSpan +Microsoft.AspNetCore.Server.HttpSys.TimeoutManager.RequestQueue.set -> void +Microsoft.AspNetCore.Server.HttpSys.UrlPrefix +Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.IsHttps.get -> bool +Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.PortValue.get -> int +Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection +Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.Clear() -> void +Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.Count.get -> int +Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.IsReadOnly.get -> bool +override Microsoft.AspNetCore.Server.HttpSys.HttpSysException.ErrorCode.get -> int +override Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.GetHashCode() -> int +~Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager.AuthenticationDisplayName.get -> string +~Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager.AuthenticationDisplayName.set -> void +~Microsoft.AspNetCore.Server.HttpSys.DelegationRule.QueueName.get -> string +~Microsoft.AspNetCore.Server.HttpSys.DelegationRule.UrlPrefix.get -> string +~Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.Authentication.get -> Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager +~Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.RequestQueueName.get -> string +~Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.RequestQueueName.set -> void +~Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.Timeouts.get -> Microsoft.AspNetCore.Server.HttpSys.TimeoutManager +~Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.UrlPrefixes.get -> Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection +~Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestDelegationFeature.DelegateRequest(Microsoft.AspNetCore.Server.HttpSys.DelegationRule destination) -> void +~Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestInfoFeature.RequestInfo.get -> System.Collections.Generic.IReadOnlyDictionary> +~Microsoft.AspNetCore.Server.HttpSys.IServerDelegationFeature.CreateDelegationRule(string queueName, string urlPrefix) -> Microsoft.AspNetCore.Server.HttpSys.DelegationRule +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.FullPrefix.get -> string +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.Host.get -> string +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.Path.get -> string +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.Port.get -> string +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.Scheme.get -> string +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.Add(Microsoft.AspNetCore.Server.HttpSys.UrlPrefix item) -> void +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.Add(string prefix) -> void +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.Contains(Microsoft.AspNetCore.Server.HttpSys.UrlPrefix item) -> bool +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.CopyTo(Microsoft.AspNetCore.Server.HttpSys.UrlPrefix[] array, int arrayIndex) -> void +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.GetEnumerator() -> System.Collections.Generic.IEnumerator +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.Remove(Microsoft.AspNetCore.Server.HttpSys.UrlPrefix item) -> bool +~Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection.Remove(string prefix) -> bool +~const Microsoft.AspNetCore.Server.HttpSys.HttpSysDefaults.AuthenticationScheme = "Windows" -> string +~override Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.Equals(object obj) -> bool +~override Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.ToString() -> string +~static Microsoft.AspNetCore.Hosting.WebHostBuilderHttpSysExtensions.UseHttpSys(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Hosting.WebHostBuilderHttpSysExtensions.UseHttpSys(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder, System.Action options) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.Create(string prefix) -> Microsoft.AspNetCore.Server.HttpSys.UrlPrefix +~static Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.Create(string scheme, string host, int? portValue, string path) -> Microsoft.AspNetCore.Server.HttpSys.UrlPrefix +~static Microsoft.AspNetCore.Server.HttpSys.UrlPrefix.Create(string scheme, string host, string port, string path) -> Microsoft.AspNetCore.Server.HttpSys.UrlPrefix diff --git a/src/Servers/HttpSys/src/WebHostBuilderHttpSysExtensions.cs b/src/Servers/HttpSys/src/WebHostBuilderHttpSysExtensions.cs index f7c2b9445f5d..72ac78b0146e 100644 --- a/src/Servers/HttpSys/src/WebHostBuilderHttpSysExtensions.cs +++ b/src/Servers/HttpSys/src/WebHostBuilderHttpSysExtensions.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Runtime.Versioning; using Microsoft.AspNetCore.Hosting.Server; using Microsoft.AspNetCore.Server.HttpSys; using Microsoft.Extensions.DependencyInjection; @@ -11,7 +12,7 @@ namespace Microsoft.AspNetCore.Hosting { /// /// Provides extensions method to use Http.sys as the server for the web host. - /// + /// public static class WebHostBuilderHttpSysExtensions { /// @@ -23,6 +24,7 @@ public static class WebHostBuilderHttpSysExtensions /// /// A reference to the parameter object. /// + [SupportedOSPlatform("windows")] public static IWebHostBuilder UseHttpSys(this IWebHostBuilder hostBuilder) { return hostBuilder.ConfigureServices(services => { @@ -52,6 +54,7 @@ public static IWebHostBuilder UseHttpSys(this IWebHostBuilder hostBuilder) /// /// A reference to the parameter object. /// + [SupportedOSPlatform("windows")] public static IWebHostBuilder UseHttpSys(this IWebHostBuilder hostBuilder, Action options) { return hostBuilder.UseHttpSys().ConfigureServices(services => diff --git a/src/Servers/IIS/IIS/src/Core/IISHttpContext.FeatureCollection.cs b/src/Servers/IIS/IIS/src/Core/IISHttpContext.FeatureCollection.cs index 19ffac36dc5a..d7abfd378532 100644 --- a/src/Servers/IIS/IIS/src/Core/IISHttpContext.FeatureCollection.cs +++ b/src/Servers/IIS/IIS/src/Core/IISHttpContext.FeatureCollection.cs @@ -24,6 +24,7 @@ namespace Microsoft.AspNetCore.Server.IIS.Core { internal partial class IISHttpContext : IFeatureCollection, IHttpRequestFeature, + IHttpRequestBodyDetectionFeature, IHttpResponseFeature, IHttpResponseBodyFeature, IHttpUpgradeFeature, @@ -141,6 +142,8 @@ Stream IHttpRequestFeature.Body set => RequestBody = value; } + bool IHttpRequestBodyDetectionFeature.CanHaveBody => RequestCanHaveBody; + int IHttpResponseFeature.StatusCode { get => StatusCode; diff --git a/src/Servers/IIS/IIS/src/Core/IISHttpContext.Features.cs b/src/Servers/IIS/IIS/src/Core/IISHttpContext.Features.cs index e918e18f8450..96ba46388908 100644 --- a/src/Servers/IIS/IIS/src/Core/IISHttpContext.Features.cs +++ b/src/Servers/IIS/IIS/src/Core/IISHttpContext.Features.cs @@ -9,6 +9,7 @@ namespace Microsoft.AspNetCore.Server.IIS.Core internal partial class IISHttpContext { private static readonly Type IHttpRequestFeatureType = typeof(global::Microsoft.AspNetCore.Http.Features.IHttpRequestFeature); + private static readonly Type IHttpRequestBodyDetectionFeature = typeof(global::Microsoft.AspNetCore.Http.Features.IHttpRequestBodyDetectionFeature); private static readonly Type IHttpResponseFeatureType = typeof(global::Microsoft.AspNetCore.Http.Features.IHttpResponseFeature); private static readonly Type IHttpResponseBodyFeatureType = typeof(global::Microsoft.AspNetCore.Http.Features.IHttpResponseBodyFeature); private static readonly Type IHttpRequestIdentifierFeatureType = typeof(global::Microsoft.AspNetCore.Http.Features.IHttpRequestIdentifierFeature); @@ -32,6 +33,7 @@ internal partial class IISHttpContext private static readonly Type IHttpResetFeature = typeof(global::Microsoft.AspNetCore.Http.Features.IHttpResetFeature); private object _currentIHttpRequestFeature; + private object _currentIHttpRequestBodyDetectionFeature; private object _currentIHttpResponseFeature; private object _currentIHttpResponseBodyFeature; private object _currentIHttpRequestIdentifierFeature; @@ -56,6 +58,7 @@ internal partial class IISHttpContext private void Initialize() { _currentIHttpRequestFeature = this; + _currentIHttpRequestBodyDetectionFeature = this; _currentIHttpResponseFeature = this; _currentIHttpResponseBodyFeature = this; _currentIHttpUpgradeFeature = this; @@ -77,6 +80,10 @@ internal object FastFeatureGet(Type key) { return _currentIHttpRequestFeature; } + if (key == IHttpRequestBodyDetectionFeature) + { + return _currentIHttpRequestBodyDetectionFeature; + } if (key == IHttpResponseFeatureType) { return _currentIHttpResponseFeature; @@ -174,6 +181,11 @@ internal void FastFeatureSet(Type key, object feature) _currentIHttpRequestFeature = feature; return; } + if (key == IHttpRequestBodyDetectionFeature) + { + _currentIHttpRequestBodyDetectionFeature = feature; + return; + } if (key == IHttpResponseFeatureType) { _currentIHttpResponseFeature = feature; @@ -284,6 +296,10 @@ private IEnumerable> FastEnumerable() { yield return new KeyValuePair(IHttpRequestFeatureType, _currentIHttpRequestFeature as global::Microsoft.AspNetCore.Http.Features.IHttpRequestFeature); } + if (_currentIHttpRequestBodyDetectionFeature != null) + { + yield return new KeyValuePair(IHttpRequestBodyDetectionFeature, _currentIHttpRequestBodyDetectionFeature as global::Microsoft.AspNetCore.Http.Features.IHttpRequestBodyDetectionFeature); + } if (_currentIHttpResponseFeature != null) { yield return new KeyValuePair(IHttpResponseFeatureType, _currentIHttpResponseFeature as global::Microsoft.AspNetCore.Http.Features.IHttpResponseFeature); diff --git a/src/Servers/IIS/IIS/src/Core/IISHttpContext.cs b/src/Servers/IIS/IIS/src/Core/IISHttpContext.cs index 272fae86e156..26d16b291c28 100644 --- a/src/Servers/IIS/IIS/src/Core/IISHttpContext.cs +++ b/src/Servers/IIS/IIS/src/Core/IISHttpContext.cs @@ -108,6 +108,7 @@ internal unsafe IISHttpContext( public string TraceIdentifier { get; set; } public ClaimsPrincipal User { get; set; } internal WindowsPrincipal WindowsUser { get; set; } + internal bool RequestCanHaveBody { get; private set; } public Stream RequestBody { get; set; } public Stream ResponseBody { get; set; } public PipeWriter ResponsePipeWrapper { get; set; } @@ -165,6 +166,8 @@ protected void InitializeContext() RequestHeaders = new RequestHeaders(this); HttpResponseHeaders = new HeaderCollection(); ResponseHeaders = HttpResponseHeaders; + // Request headers can be modified by the app, read these first. + RequestCanHaveBody = CheckRequestCanHaveBody(); if (_options.ForwardWindowsAuthentication) { @@ -250,6 +253,20 @@ public string ReasonPhrase internal IISHttpServer Server => _server; + private bool CheckRequestCanHaveBody() + { + // Http/1.x requests with bodies require either a Content-Length or Transfer-Encoding header. + // Note Http.Sys adds the Transfer-Encoding: chunked header to HTTP/2 requests with bodies for back compat. + // Transfer-Encoding takes priority over Content-Length. + string transferEncoding = RequestHeaders[HttpKnownHeaderNames.TransferEncoding]; + if (string.Equals("chunked", transferEncoding?.Trim(), StringComparison.OrdinalIgnoreCase)) + { + return true; + } + + return RequestHeaders.ContentLength.GetValueOrDefault() > 0; + } + private async Task InitializeResponse(bool flushHeaders) { await FireOnStarting(); diff --git a/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj b/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj index d262f5cd0b44..5727a0065019 100644 --- a/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj +++ b/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj @@ -11,12 +11,15 @@ true $(DefaultNetCoreTargetFramework) false + + + $(NoWarn);CA1416 - + diff --git a/src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt b/src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Servers/IIS/IIS/src/PublicAPI.Unshipped.txt b/src/Servers/IIS/IIS/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..f46034951fd4 --- /dev/null +++ b/src/Servers/IIS/IIS/src/PublicAPI.Unshipped.txt @@ -0,0 +1,50 @@ +#nullable enable +Microsoft.AspNetCore.Builder.IISServerOptions +Microsoft.AspNetCore.Builder.IISServerOptions.AllowSynchronousIO.get -> bool +Microsoft.AspNetCore.Builder.IISServerOptions.AllowSynchronousIO.set -> void +Microsoft.AspNetCore.Builder.IISServerOptions.AutomaticAuthentication.get -> bool +Microsoft.AspNetCore.Builder.IISServerOptions.AutomaticAuthentication.set -> void +Microsoft.AspNetCore.Builder.IISServerOptions.IISServerOptions() -> void +Microsoft.AspNetCore.Builder.IISServerOptions.MaxRequestBodySize.get -> long? +Microsoft.AspNetCore.Builder.IISServerOptions.MaxRequestBodySize.set -> void +Microsoft.AspNetCore.Hosting.WebHostBuilderIISExtensions +Microsoft.AspNetCore.Http.Features.IServerVariablesFeature (forwarded, contained in Microsoft.AspNetCore.Http.Features) +Microsoft.AspNetCore.Http.Features.IServerVariablesFeature.this[string! variableName].get -> string! (forwarded, contained in Microsoft.AspNetCore.Http.Features) +Microsoft.AspNetCore.Http.Features.IServerVariablesFeature.this[string! variableName].set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Features) +Microsoft.AspNetCore.Server.IIS.BadHttpRequestException +Microsoft.AspNetCore.Server.IIS.BadHttpRequestException.StatusCode.get -> int +Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler +Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.IISServerAuthenticationHandler() -> void +Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream +Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.ThrowingWasUpgradedWriteOnlyStream() -> void +Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream +Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.WriteOnlyStream() -> void +Microsoft.AspNetCore.Server.IIS.HttpContextExtensions +Microsoft.AspNetCore.Server.IIS.IISServerDefaults +Microsoft.AspNetCore.Server.IIS.IISServerDefaults.IISServerDefaults() -> void +override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.Flush() -> void +override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.Seek(long offset, System.IO.SeekOrigin origin) -> long +override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.SetLength(long value) -> void +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.CanRead.get -> bool +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.CanSeek.get -> bool +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.CanWrite.get -> bool +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Length.get -> long +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Position.get -> long +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Position.set -> void +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadTimeout.get -> int +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadTimeout.set -> void +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Seek(long offset, System.IO.SeekOrigin origin) -> long +override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.SetLength(long value) -> void +~Microsoft.AspNetCore.Builder.IISServerOptions.AuthenticationDisplayName.get -> string +~Microsoft.AspNetCore.Builder.IISServerOptions.AuthenticationDisplayName.set -> void +~Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.AuthenticateAsync() -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.ChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.ForbidAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties properties) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.InitializeAsync(Microsoft.AspNetCore.Authentication.AuthenticationScheme scheme, Microsoft.AspNetCore.Http.HttpContext context) -> System.Threading.Tasks.Task +~const Microsoft.AspNetCore.Server.IIS.IISServerDefaults.AuthenticationScheme = "Windows" -> string +~override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.Write(byte[] buffer, int offset, int count) -> void +~override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.WriteAsync(byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Read(byte[] buffer, int offset, int count) -> int +~override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadAsync(byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Hosting.WebHostBuilderIISExtensions.UseIIS(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Server.IIS.HttpContextExtensions.GetIISServerVariable(this Microsoft.AspNetCore.Http.HttpContext context, string variableName) -> string diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/Http2Tests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/Http2Tests.cs new file mode 100644 index 000000000000..d6371821a1ad --- /dev/null +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/Http2Tests.cs @@ -0,0 +1,348 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http2Cat; +using Microsoft.AspNetCore.Server.IIS.FunctionalTests.Utilities; +using Microsoft.AspNetCore.Server.IntegrationTesting.Common; +using Microsoft.AspNetCore.Server.IntegrationTesting.IIS; +using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2; +using Microsoft.AspNetCore.Testing; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Microsoft.Net.Http.Headers; +using Xunit; + +namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests.InProcess +{ + [Collection(PublishedSitesCollection.Name)] + public class Http2Tests : IISFunctionalTestBase + { + // TODO: Remove when the regression is fixed. + // https://github.com/dotnet/aspnetcore/issues/23164#issuecomment-652646163 + private static readonly Version Win10_Regressed_DataFrame = new Version(10, 0, 20145, 0); + + public static readonly IEnumerable> Headers = new[] + { + new KeyValuePair(HeaderNames.Method, "GET"), + new KeyValuePair(HeaderNames.Scheme, "https"), + new KeyValuePair(HeaderNames.Authority, "localhost:443"), + new KeyValuePair("user-agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0"), + new KeyValuePair("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"), + new KeyValuePair("accept-language", "en-US,en;q=0.5"), + new KeyValuePair("accept-encoding", "gzip, deflate, br"), + new KeyValuePair("upgrade-insecure-requests", "1"), + }; + + public Http2Tests(PublishedSitesFixture fixture) : base(fixture) + { + } + + [ConditionalTheory] + [InlineData("GET")] + [InlineData("HEAD")] + [InlineData("PATCH")] + [InlineData("DELETE")] + [InlineData("CUSTOM")] + [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win10, SkipReason = "Http2 requires Win10")] + public async Task Http2_MethodsRequestWithoutData_Success(string method) + { + var deploymentParameters = GetHttpsDeploymentParameters(); + var deploymentResult = await DeployAsync(deploymentParameters); + + await new HostBuilder() + .UseHttp2Cat(deploymentResult.ApplicationBaseUri, async h2Connection => + { + await h2Connection.InitializeConnectionAsync(); + + h2Connection.Logger.LogInformation("Initialized http2 connection. Starting stream 1."); + + var headers = new[] + { + new KeyValuePair(HeaderNames.Method, method), + new KeyValuePair(HeaderNames.Path, "/Http2_MethodsRequestWithoutData_Success"), + new KeyValuePair(HeaderNames.Scheme, "https"), + new KeyValuePair(HeaderNames.Authority, "localhost:443"), + }; + + await h2Connection.StartStreamAsync(1, headers, endStream: true); + + await h2Connection.ReceiveHeadersAsync(1, decodedHeaders => + { + Assert.Equal("200", decodedHeaders[HeaderNames.Status]); + }); + + var dataFrame = await h2Connection.ReceiveFrameAsync(); + if (Environment.OSVersion.Version >= Win10_Regressed_DataFrame) + { + // TODO: Remove when the regression is fixed. + // https://github.com/dotnet/aspnetcore/issues/23164#issuecomment-652646163 + Http2Utilities.VerifyDataFrame(dataFrame, 1, endOfStream: false, length: 0); + + dataFrame = await h2Connection.ReceiveFrameAsync(); + } + Http2Utilities.VerifyDataFrame(dataFrame, 1, endOfStream: true, length: 0); + + h2Connection.Logger.LogInformation("Connection stopped."); + }) + .Build().RunAsync(); + } + + [ConditionalTheory] + [InlineData("POST")] + [InlineData("PUT")] + [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win10, SkipReason = "Http2 requires Win10")] + public async Task Http2_PostRequestWithoutData_LengthRequired(string method) + { + var deploymentParameters = GetHttpsDeploymentParameters(); + var deploymentResult = await DeployAsync(deploymentParameters); + + await new HostBuilder() + .UseHttp2Cat(deploymentResult.ApplicationBaseUri, async h2Connection => + { + await h2Connection.InitializeConnectionAsync(); + + h2Connection.Logger.LogInformation("Initialized http2 connection. Starting stream 1."); + + var headers = new[] + { + new KeyValuePair(HeaderNames.Method, method), + new KeyValuePair(HeaderNames.Path, "/"), + new KeyValuePair(HeaderNames.Scheme, "https"), + new KeyValuePair(HeaderNames.Authority, "localhost:443"), + }; + + await h2Connection.StartStreamAsync(1, headers, endStream: true); + + await h2Connection.ReceiveHeadersAsync(1, decodedHeaders => + { + Assert.Equal("411", decodedHeaders[HeaderNames.Status]); + }); + + var dataFrame = await h2Connection.ReceiveFrameAsync(); + Http2Utilities.VerifyDataFrame(dataFrame, 1, endOfStream: false, length: 344); + dataFrame = await h2Connection.ReceiveFrameAsync(); + Http2Utilities.VerifyDataFrame(dataFrame, 1, endOfStream: true, length: 0); + + h2Connection.Logger.LogInformation("Connection stopped."); + }) + .Build().RunAsync(); + } + + [ConditionalTheory] + [InlineData("GET")] + // [InlineData("HEAD")] Reset with code HTTP_1_1_REQUIRED + [InlineData("POST")] + [InlineData("PUT")] + [InlineData("PATCH")] + [InlineData("DELETE")] + [InlineData("CUSTOM")] + [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win10_20H1, SkipReason = "Http2 requires Win10, and older versions of Win10 send some odd empty data frames.")] + public async Task Http2_RequestWithDataAndContentLength_Success(string method) + { + var deploymentParameters = GetHttpsDeploymentParameters(); + var deploymentResult = await DeployAsync(deploymentParameters); + + await new HostBuilder() + .UseHttp2Cat(deploymentResult.ApplicationBaseUri, async h2Connection => + { + await h2Connection.InitializeConnectionAsync(); + + h2Connection.Logger.LogInformation("Initialized http2 connection. Starting stream 1."); + + var headers = new[] + { + new KeyValuePair(HeaderNames.Method, method), + new KeyValuePair(HeaderNames.Path, "/Http2_RequestWithDataAndContentLength_Success"), + new KeyValuePair(HeaderNames.Scheme, "https"), + new KeyValuePair(HeaderNames.Authority, "localhost:443"), + new KeyValuePair(HeaderNames.ContentLength, "11"), + }; + + await h2Connection.StartStreamAsync(1, headers, endStream: false); + + await h2Connection.SendDataAsync(1, Encoding.UTF8.GetBytes("Hello World"), endStream: true); + + // Http.Sys no longer sends a window update here on later versions. + if (Environment.OSVersion.Version < new Version(10, 0, 19041, 0)) + { + var windowUpdate = await h2Connection.ReceiveFrameAsync(); + Assert.Equal(Http2FrameType.WINDOW_UPDATE, windowUpdate.Type); + } + + await h2Connection.ReceiveHeadersAsync(1, decodedHeaders => + { + Assert.Equal("200", decodedHeaders[HeaderNames.Status]); + }); + + var dataFrame = await h2Connection.ReceiveFrameAsync(); + Assert.Equal(Http2FrameType.DATA, dataFrame.Type); + Assert.Equal(1, dataFrame.StreamId); + + // Some versions send an empty data frame first. + if (dataFrame.PayloadLength == 0) + { + Assert.False(dataFrame.DataEndStream); + dataFrame = await h2Connection.ReceiveFrameAsync(); + Assert.Equal(Http2FrameType.DATA, dataFrame.Type); + Assert.Equal(1, dataFrame.StreamId); + } + + Assert.Equal(11, dataFrame.PayloadLength); + Assert.Equal("Hello World", Encoding.UTF8.GetString(dataFrame.Payload.Span)); + + if (!dataFrame.DataEndStream) + { + dataFrame = await h2Connection.ReceiveFrameAsync(); + Http2Utilities.VerifyDataFrame(dataFrame, 1, endOfStream: true, length: 0); + } + + h2Connection.Logger.LogInformation("Connection stopped."); + }) + .Build().RunAsync(); + } + + [ConditionalTheory] + [InlineData("GET")] + // [InlineData("HEAD")] Reset with code HTTP_1_1_REQUIRED + [InlineData("POST")] + [InlineData("PUT")] + [InlineData("PATCH")] + [InlineData("DELETE")] + [InlineData("CUSTOM")] + [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win10_20H1, SkipReason = "Http2 requires Win10, and older versions of Win10 send some odd empty data frames.")] + public async Task Http2_RequestWithDataAndNoContentLength_Success(string method) + { + var deploymentParameters = GetHttpsDeploymentParameters(); + var deploymentResult = await DeployAsync(deploymentParameters); + + await new HostBuilder() + .UseHttp2Cat(deploymentResult.ApplicationBaseUri, async h2Connection => + { + await h2Connection.InitializeConnectionAsync(); + + h2Connection.Logger.LogInformation("Initialized http2 connection. Starting stream 1."); + + var headers = new[] + { + new KeyValuePair(HeaderNames.Method, method), + new KeyValuePair(HeaderNames.Path, "/Http2_RequestWithDataAndNoContentLength_Success"), + new KeyValuePair(HeaderNames.Scheme, "https"), + new KeyValuePair(HeaderNames.Authority, "localhost:443"), + }; + + await h2Connection.StartStreamAsync(1, headers, endStream: false); + + await h2Connection.SendDataAsync(1, Encoding.UTF8.GetBytes("Hello World"), endStream: true); + + // Http.Sys no longer sends a window update here on later versions. + if (Environment.OSVersion.Version < new Version(10, 0, 19041, 0)) + { + var windowUpdate = await h2Connection.ReceiveFrameAsync(); + Assert.Equal(Http2FrameType.WINDOW_UPDATE, windowUpdate.Type); + } + + await h2Connection.ReceiveHeadersAsync(1, decodedHeaders => + { + Assert.Equal("200", decodedHeaders[HeaderNames.Status]); + }); + + var dataFrame = await h2Connection.ReceiveFrameAsync(); + Assert.Equal(Http2FrameType.DATA, dataFrame.Type); + Assert.Equal(1, dataFrame.StreamId); + + // Some versions send an empty data frame first. + if (dataFrame.PayloadLength == 0) + { + Assert.False(dataFrame.DataEndStream); + dataFrame = await h2Connection.ReceiveFrameAsync(); + Assert.Equal(Http2FrameType.DATA, dataFrame.Type); + Assert.Equal(1, dataFrame.StreamId); + } + + Assert.Equal(11, dataFrame.PayloadLength); + Assert.Equal("Hello World", Encoding.UTF8.GetString(dataFrame.Payload.Span)); + + if (!dataFrame.DataEndStream) + { + dataFrame = await h2Connection.ReceiveFrameAsync(); + Http2Utilities.VerifyDataFrame(dataFrame, 1, endOfStream: true, length: 0); + } + + h2Connection.Logger.LogInformation("Connection stopped."); + }) + .Build().RunAsync(); + } + + [ConditionalFact] + [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win10_20H1, SkipReason = "Http2 requires Win10, and older versions of Win10 send some odd empty data frames.")] + public async Task Http2_ResponseWithData_Success() + { + var deploymentParameters = GetHttpsDeploymentParameters(); + var deploymentResult = await DeployAsync(deploymentParameters); + + await new HostBuilder() + .UseHttp2Cat(deploymentResult.ApplicationBaseUri, async h2Connection => + { + await h2Connection.InitializeConnectionAsync(); + + h2Connection.Logger.LogInformation("Initialized http2 connection. Starting stream 1."); + + await h2Connection.StartStreamAsync(1, GetHeaders("/Http2_ResponseWithData_Success"), endStream: true); + + await h2Connection.ReceiveHeadersAsync(1, decodedHeaders => + { + Assert.Equal("200", decodedHeaders[HeaderNames.Status]); + }); + + var dataFrame = await h2Connection.ReceiveFrameAsync(); + Assert.Equal(Http2FrameType.DATA, dataFrame.Type); + Assert.Equal(1, dataFrame.StreamId); + + // Some versions send an empty data frame first. + if (dataFrame.PayloadLength == 0) + { + Assert.False(dataFrame.DataEndStream); + dataFrame = await h2Connection.ReceiveFrameAsync(); + Assert.Equal(Http2FrameType.DATA, dataFrame.Type); + Assert.Equal(1, dataFrame.StreamId); + } + + Assert.Equal(11, dataFrame.PayloadLength); + Assert.Equal("Hello World", Encoding.UTF8.GetString(dataFrame.Payload.Span)); + + if (!dataFrame.DataEndStream) + { + dataFrame = await h2Connection.ReceiveFrameAsync(); + Http2Utilities.VerifyDataFrame(dataFrame, 1, endOfStream: true, length: 0); + } + + h2Connection.Logger.LogInformation("Connection stopped."); + }) + .Build().RunAsync(); + } + + private static List> GetHeaders(string path) + { + var headers = Headers.ToList(); + + var kvp = new KeyValuePair(HeaderNames.Path, path); + headers.Add(kvp); + return headers; + } + + private IISDeploymentParameters GetHttpsDeploymentParameters() + { + var port = TestPortHelper.GetNextSSLPort(); + var deploymentParameters = Fixture.GetBaseDeploymentParameters(); + deploymentParameters.ApplicationBaseUriHint = $"https://localhost:{port}/"; + deploymentParameters.AddHttpsToServerConfig(); + return deploymentParameters; + } + } +} diff --git a/src/Servers/IIS/IIS/test/testassets/InProcessWebSite/Helpers.cs b/src/Servers/IIS/IIS/test/testassets/InProcessWebSite/Helpers.cs new file mode 100644 index 000000000000..4b7dd0b81fb0 --- /dev/null +++ b/src/Servers/IIS/IIS/test/testassets/InProcessWebSite/Helpers.cs @@ -0,0 +1,20 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; + +namespace TestSite +{ + public static class Helpers + { + internal static bool? CanHaveBody(this HttpRequest request) + { +#if FORWARDCOMPAT + return null; +#else + return request.HttpContext.Features.Get()?.CanHaveBody; +#endif + } + } +} diff --git a/src/Servers/IIS/IIS/test/testassets/InProcessWebSite/Startup.cs b/src/Servers/IIS/IIS/test/testassets/InProcessWebSite/Startup.cs index d7356e7217db..e8889a87864d 100644 --- a/src/Servers/IIS/IIS/test/testassets/InProcessWebSite/Startup.cs +++ b/src/Servers/IIS/IIS/test/testassets/InProcessWebSite/Startup.cs @@ -28,7 +28,6 @@ using Microsoft.Extensions.Primitives; using Microsoft.Net.Http.Headers; using Xunit; -using HttpFeatures = Microsoft.AspNetCore.Http.Features; namespace TestSite { @@ -470,6 +469,9 @@ private async Task ReadAndWriteSynchronously(HttpContext ctx) private async Task ReadRequestBody(HttpContext ctx) { +#if !FORWARDCOMPAT + Assert.True(ctx.Request.CanHaveBody()); +#endif var readBuffer = new byte[1]; var result = await ctx.Request.Body.ReadAsync(readBuffer, 0, 1); while (result != 0) @@ -480,6 +482,9 @@ private async Task ReadRequestBody(HttpContext ctx) private async Task ReadRequestBodyLarger(HttpContext ctx) { +#if !FORWARDCOMPAT + Assert.True(ctx.Request.CanHaveBody()); +#endif var readBuffer = new byte[4096]; var result = await ctx.Request.Body.ReadAsync(readBuffer, 0, 4096); while (result != 0) @@ -515,6 +520,9 @@ private async Task WaitForAppToStartShuttingDown(HttpContext ctx) private async Task ReadFullBody(HttpContext ctx) { +#if !FORWARDCOMPAT + Assert.True(ctx.Request.CanHaveBody()); +#endif await ReadRequestBody(ctx); ctx.Response.ContentLength = 9; await ctx.Response.WriteAsync("Completed"); @@ -530,6 +538,9 @@ private async Task WriteManyTimesToResponseBody(HttpContext ctx) private async Task ReadAndWriteEcho(HttpContext ctx) { +#if !FORWARDCOMPAT + Assert.True(ctx.Request.CanHaveBody()); +#endif var readBuffer = new byte[4096]; var result = await ctx.Request.Body.ReadAsync(readBuffer, 0, readBuffer.Length); while (result != 0) @@ -540,6 +551,9 @@ private async Task ReadAndWriteEcho(HttpContext ctx) } private async Task ReadAndFlushEcho(HttpContext ctx) { +#if !FORWARDCOMPAT + Assert.True(ctx.Request.CanHaveBody()); +#endif var readBuffer = new byte[4096]; var result = await ctx.Request.Body.ReadAsync(readBuffer, 0, readBuffer.Length); while (result != 0) @@ -552,6 +566,9 @@ private async Task ReadAndFlushEcho(HttpContext ctx) private async Task ReadAndWriteEchoLines(HttpContext ctx) { +#if !FORWARDCOMPAT + Assert.True(ctx.Request.CanHaveBody()); +#endif if (ctx.Request.Headers.TryGetValue("Response-Content-Type", out var contentType)) { ctx.Response.ContentType = contentType; @@ -581,6 +598,7 @@ private async Task ReadAndWriteEchoLinesNoBuffering(HttpContext ctx) #else var feature = ctx.Features.Get(); feature.DisableBuffering(); + Assert.True(ctx.Request.CanHaveBody()); #endif if (ctx.Request.Headers.TryGetValue("Response-Content-Type", out var contentType)) @@ -605,6 +623,9 @@ private async Task ReadAndWriteEchoLinesNoBuffering(HttpContext ctx) private async Task ReadPartialBody(HttpContext ctx) { +#if !FORWARDCOMPAT + Assert.True(ctx.Request.CanHaveBody()); +#endif var data = new byte[5]; var count = 0; do @@ -655,6 +676,9 @@ private async Task WriteResponseBodyAFewTimes(HttpContext ctx) private async Task ReadAndWriteCopyToAsync(HttpContext ctx) { +#if !FORWARDCOMPAT + Assert.True(ctx.Request.CanHaveBody()); +#endif await ctx.Request.Body.CopyToAsync(ctx.Response.Body); } @@ -1313,6 +1337,10 @@ public async Task Reset_DuringRequestBody_Resets(HttpContext httpContext) var feature = httpContext.Features.Get(); Assert.NotNull(feature); +#if !FORWARDCOMPAT + Assert.True(httpContext.Request.CanHaveBody()); +#endif + var read = await httpContext.Request.Body.ReadAsync(new byte[10], 0, 10); Assert.Equal(10, read); @@ -1454,6 +1482,46 @@ public async Task Reset_CompleteAsyncDuringRequestBody_Resets(HttpContext httpCo await Assert.ThrowsAsync(() => readTask); } + public Task Http2_MethodsRequestWithoutData_Success(HttpContext httpContext) + { + Assert.Equal("HTTP/2", httpContext.Request.Protocol); +#if !FORWARDCOMPAT + Assert.False(httpContext.Request.CanHaveBody()); +#endif + Assert.Null(httpContext.Request.ContentLength); + Assert.False(httpContext.Request.Headers.ContainsKey(HeaderNames.TransferEncoding)); + return Task.CompletedTask; + } + + public Task Http2_RequestWithDataAndContentLength_Success(HttpContext httpContext) + { + Assert.Equal("HTTP/2", httpContext.Request.Protocol); +#if !FORWARDCOMPAT + Assert.True(httpContext.Request.CanHaveBody()); +#endif + Assert.Equal(11, httpContext.Request.ContentLength); + Assert.False(httpContext.Request.Headers.ContainsKey(HeaderNames.TransferEncoding)); + return httpContext.Request.Body.CopyToAsync(httpContext.Response.Body); + } + + public Task Http2_RequestWithDataAndNoContentLength_Success(HttpContext httpContext) + { + Assert.Equal("HTTP/2", httpContext.Request.Protocol); +#if !FORWARDCOMPAT + Assert.True(httpContext.Request.CanHaveBody()); +#endif + Assert.Null(httpContext.Request.ContentLength); + // The client didn't send this header, Http.Sys added it for back compat with HTTP/1.1. + Assert.Equal("chunked", httpContext.Request.Headers[HeaderNames.TransferEncoding]); + return httpContext.Request.Body.CopyToAsync(httpContext.Response.Body); + } + + public Task Http2_ResponseWithData_Success(HttpContext httpContext) + { + Assert.Equal("HTTP/2", httpContext.Request.Protocol); + return httpContext.Response.WriteAsync("Hello World"); + } + public Task IncreaseRequestLimit(HttpContext httpContext) { var maxRequestBodySizeFeature = httpContext.Features.Get(); @@ -1508,5 +1576,5 @@ public Task OnCompletedThrows(HttpContext httpContext) HeaderNames.ContentEncoding, HeaderNames.ContentType, HeaderNames.ContentRange, HeaderNames.Trailer }; #endif + } } -} diff --git a/src/Servers/IIS/IISIntegration/src/Microsoft.AspNetCore.Server.IISIntegration.csproj b/src/Servers/IIS/IISIntegration/src/Microsoft.AspNetCore.Server.IISIntegration.csproj index addaf56ff283..0c1e8fb17175 100644 --- a/src/Servers/IIS/IISIntegration/src/Microsoft.AspNetCore.Server.IISIntegration.csproj +++ b/src/Servers/IIS/IISIntegration/src/Microsoft.AspNetCore.Server.IISIntegration.csproj @@ -9,6 +9,9 @@ aspnetcore;iis true false + + + $(NoWarn);CA1416 diff --git a/src/Servers/IIS/IntegrationTesting.IIS/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj b/src/Servers/IIS/IntegrationTesting.IIS/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj index d98aab50da23..148e9db98ef5 100644 --- a/src/Servers/IIS/IntegrationTesting.IIS/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj +++ b/src/Servers/IIS/IntegrationTesting.IIS/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj @@ -20,6 +20,8 @@ about this structure --> $(NoWarn);NU5100 + + $(NoWarn);CA1416 diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/Http1ContentLengthMessageBody.cs b/src/Servers/Kestrel/Core/src/Internal/Http/Http1ContentLengthMessageBody.cs index 728ce3337c30..04cfe0214d1e 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/Http1ContentLengthMessageBody.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/Http1ContentLengthMessageBody.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics; using System.IO.Pipelines; using System.Threading; using System.Threading.Tasks; @@ -9,6 +10,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { + using BadHttpRequestException = Microsoft.AspNetCore.Http.BadHttpRequestException; + internal sealed class Http1ContentLengthMessageBody : Http1MessageBody { private ReadResult _readResult; @@ -18,6 +21,7 @@ internal sealed class Http1ContentLengthMessageBody : Http1MessageBody private bool _isReading; private int _userCanceled; private bool _finalAdvanceCalled; + private bool _cannotResetInputPipe; public Http1ContentLengthMessageBody(bool keepAlive, long contentLength, Http1Connection context) : base(context) @@ -35,15 +39,19 @@ public override ValueTask ReadAsync(CancellationToken cancellationTo public override async ValueTask ReadAsyncInternal(CancellationToken cancellationToken = default) { - if (_isReading) - { - throw new InvalidOperationException("Reading is already in progress."); - } + VerifyIsNotReading(); if (_readCompleted) { _isReading = true; - return new ReadResult(_readResult.Buffer, Interlocked.Exchange(ref _userCanceled, 0) == 1, _readResult.IsCompleted); + return new ReadResult(_readResult.Buffer, Interlocked.Exchange(ref _userCanceled, 0) == 1, isCompleted: true); + } + + // The issue is that TryRead can get a canceled read result + // which is unknown to StartTimingReadAsync. + if (_context.RequestTimedOut) + { + KestrelBadHttpRequestException.Throw(RequestRejectionReason.RequestBodyTimeout); } TryStart(); @@ -54,12 +62,6 @@ public override async ValueTask ReadAsyncInternal(CancellationToken // We internally track an int for that. while (true) { - // The issue is that TryRead can get a canceled read result - // which is unknown to StartTimingReadAsync. - if (_context.RequestTimedOut) - { - KestrelBadHttpRequestException.Throw(RequestRejectionReason.RequestBodyTimeout); - } try { @@ -76,10 +78,14 @@ public override async ValueTask ReadAsyncInternal(CancellationToken void ResetReadingState() { - _isReading = false; // Reset the timing read here for the next call to read. StopTimingRead(0); - _context.Input.AdvanceTo(_readResult.Buffer.Start); + + if (!_cannotResetInputPipe) + { + _isReading = false; + _context.Input.AdvanceTo(_readResult.Buffer.Start); + } } if (_context.RequestTimedOut) @@ -95,7 +101,10 @@ void ResetReadingState() } // Ignore the canceled readResult if it wasn't canceled by the user. - if (!_readResult.IsCanceled || Interlocked.Exchange(ref _userCanceled, 0) == 1) + // Normally we do not return a canceled ReadResult unless CancelPendingRead was called on the request body PipeReader itself, + // but if the last call to AdvanceTo examined data it did not consume, we cannot reset the state of the Input pipe. + // https://github.com/dotnet/aspnetcore/issues/19476 + if (!_readResult.IsCanceled || Interlocked.Exchange(ref _userCanceled, 0) == 1 || _cannotResetInputPipe) { var returnedReadResultLength = CreateReadResultFromConnectionReadResult(); @@ -124,18 +133,20 @@ public override bool TryRead(out ReadResult readResult) public override bool TryReadInternal(out ReadResult readResult) { - if (_isReading) - { - throw new InvalidOperationException("Reading is already in progress."); - } + VerifyIsNotReading(); if (_readCompleted) { _isReading = true; - readResult = new ReadResult(_readResult.Buffer, Interlocked.Exchange(ref _userCanceled, 0) == 1, _readResult.IsCompleted); + readResult = new ReadResult(_readResult.Buffer, Interlocked.Exchange(ref _userCanceled, 0) == 1, isCompleted: true); return true; } + if (_context.RequestTimedOut) + { + KestrelBadHttpRequestException.Throw(RequestRejectionReason.RequestBodyTimeout); + } + TryStart(); // The while(true) because we don't want to return a canceled ReadResult if the user themselves didn't cancel it. @@ -147,7 +158,7 @@ public override bool TryReadInternal(out ReadResult readResult) return false; } - if (!_readResult.IsCanceled || Interlocked.Exchange(ref _userCanceled, 0) == 1) + if (!_readResult.IsCanceled || Interlocked.Exchange(ref _userCanceled, 0) == 1 || _cannotResetInputPipe) { break; } @@ -157,7 +168,15 @@ public override bool TryReadInternal(out ReadResult readResult) if (_readResult.IsCompleted) { - _context.Input.AdvanceTo(_readResult.Buffer.Start); + if (_cannotResetInputPipe) + { + _isReading = true; + } + else + { + _context.Input.AdvanceTo(_readResult.Buffer.Start); + } + ThrowUnexpectedEndOfRequestContent(); } @@ -214,7 +233,7 @@ public override void AdvanceTo(SequencePosition consumed, SequencePosition exami if (_readCompleted) { // If the old stored _readResult was canceled, it's already been observed. Do not store a canceled read result permanently. - _readResult = new ReadResult(_readResult.Buffer.Slice(consumed, _readResult.Buffer.End), isCanceled: false, _readCompleted); + _readResult = new ReadResult(_readResult.Buffer.Slice(consumed, _readResult.Buffer.End), isCanceled: false, isCompleted: true); if (!_finalAdvanceCalled && _readResult.Buffer.Length == 0) { @@ -226,6 +245,10 @@ public override void AdvanceTo(SequencePosition consumed, SequencePosition exami return; } + // If consumed != examined, we cannot reset _context.Input back to a non-reading state after the next call to ReadAsync + // simply by calling _context.Input.AdvanceTo(_readResult.Buffer.Start) because the DefaultPipeReader will complain that + // "The examined position cannot be less than the previously examined position." + _cannotResetInputPipe = !consumed.Equals(examined); _unexaminedInputLength -= TrackConsumedAndExaminedBytes(_readResult, consumed, examined); _context.Input.AdvanceTo(consumed, examined); } @@ -255,5 +278,29 @@ protected override Task OnStopAsync() Complete(null); return Task.CompletedTask; } + + [StackTraceHidden] + private void VerifyIsNotReading() + { + if (!_isReading) + { + return; + } + + if (_cannotResetInputPipe) + { + if (_readResult.IsCompleted) + { + KestrelBadHttpRequestException.Throw(RequestRejectionReason.UnexpectedEndOfRequestContent); + } + + if (_context.RequestTimedOut) + { + KestrelBadHttpRequestException.Throw(RequestRejectionReason.RequestBodyTimeout); + } + } + + throw new InvalidOperationException("Reading is already in progress."); + } } } diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/Http1MessageBody.cs b/src/Servers/Kestrel/Core/src/Internal/Http/Http1MessageBody.cs index d6d779419840..34427d3f561e 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/Http1MessageBody.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/Http1MessageBody.cs @@ -89,7 +89,7 @@ protected async Task OnConsumeAsyncAwaited() AdvanceTo(result.Buffer.End); } while (!result.IsCompleted); } - catch (Microsoft.AspNetCore.Http.BadHttpRequestException ex) + catch (BadHttpRequestException ex) { _context.SetBadRequestState(ex); } diff --git a/src/Servers/Kestrel/Core/src/PublicAPI.Shipped.txt b/src/Servers/Kestrel/Core/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Servers/Kestrel/Core/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Servers/Kestrel/Core/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Core/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..493e73f1a155 --- /dev/null +++ b/src/Servers/Kestrel/Core/src/PublicAPI.Unshipped.txt @@ -0,0 +1,252 @@ +#nullable enable +Microsoft.AspNetCore.Hosting.KestrelServerOptionsSystemdExtensions +Microsoft.AspNetCore.Hosting.ListenOptionsConnectionLoggingExtensions +Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions +Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException +Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.StatusCode.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IConnectionTimeoutFeature +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IConnectionTimeoutFeature.CancelTimeout() -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IConnectionTimeoutFeature.ResetTimeout(System.TimeSpan timeSpan) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IConnectionTimeoutFeature.SetTimeout(System.TimeSpan timeSpan) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IDecrementConcurrentConnectionCountFeature +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IDecrementConcurrentConnectionCountFeature.ReleaseConnection() -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttp2StreamIdFeature +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttp2StreamIdFeature.StreamId.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinRequestBodyDataRateFeature +Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinResponseDataRateFeature +Microsoft.AspNetCore.Server.Kestrel.Core.Features.ITlsApplicationProtocolFeature +Microsoft.AspNetCore.Server.Kestrel.Core.Features.ITlsApplicationProtocolFeature.ApplicationProtocol.get -> System.ReadOnlyMemory +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.HeaderTableSize.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.HeaderTableSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.Http2Limits() -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.InitialConnectionWindowSize.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.InitialConnectionWindowSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.InitialStreamWindowSize.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.InitialStreamWindowSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.KeepAlivePingDelay.get -> System.TimeSpan +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.KeepAlivePingDelay.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.KeepAlivePingTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.KeepAlivePingTimeout.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.MaxFrameSize.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.MaxFrameSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.MaxRequestHeaderFieldSize.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.MaxRequestHeaderFieldSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.MaxStreamsPerConnection.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits.MaxStreamsPerConnection.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http3Limits +Microsoft.AspNetCore.Server.Kestrel.Core.Http3Limits.HeaderTableSize.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Http3Limits.HeaderTableSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http3Limits.Http3Limits() -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Http3Limits.MaxRequestHeaderFieldSize.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Http3Limits.MaxRequestHeaderFieldSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols +Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1 = 1 -> Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols +Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2 = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1 | Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http2 -> Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols +Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2AndHttp3 = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2 | Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http3 -> Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols +Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http2 = 2 -> Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols +Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http3 = 4 -> Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols +Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.None = 0 -> Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Connect = 7 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Custom = 9 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Delete = 2 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Get = 0 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Head = 4 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.None = 255 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Options = 8 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Patch = 6 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Post = 3 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Put = 1 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Trace = 5 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpParser.HttpParser() -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpParser.HttpParser(bool showErrorDetails) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpScheme +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpScheme.Http = 0 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpScheme +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpScheme.Https = 1 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpScheme +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpScheme.Unknown = -1 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpScheme +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion.Http10 = 0 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion.Http11 = 1 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion.Http2 = 2 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion.Http3 = 3 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion.Unknown = -1 -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersionAndMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersionAndMethod.HttpVersionAndMethod(Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod method, int methodEnd) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersionAndMethod.Method.get -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersionAndMethod.MethodEnd.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersionAndMethod.Version.get -> Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersion +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersionAndMethod.Version.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpHeadersHandler +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpHeadersHandler.OnHeader(System.ReadOnlySpan name, System.ReadOnlySpan value) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpHeadersHandler.OnHeadersComplete(bool endStream) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpHeadersHandler.OnStaticIndexedHeader(int index) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpHeadersHandler.OnStaticIndexedHeader(int index, System.ReadOnlySpan value) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpRequestLineHandler +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpRequestLineHandler.OnStartLine(Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpVersionAndMethod versionAndMethod, Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.TargetOffsetPathLength targetPath, System.Span startLine) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.TargetOffsetPathLength +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.TargetOffsetPathLength.IsEncoded.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.TargetOffsetPathLength.Length.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.TargetOffsetPathLength.Offset.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.TargetOffsetPathLength.TargetOffsetPathLength(int offset, int length, bool isEncoded) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.Dispose() -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.KeepAliveTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.KeepAliveTimeout.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.KestrelServerLimits() -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxConcurrentConnections.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxConcurrentConnections.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxConcurrentUpgradedConnections.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxConcurrentUpgradedConnections.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestBodySize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestBodySize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestHeaderCount.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestHeaderCount.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestHeadersTotalSize.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestHeadersTotalSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestLineSize.get -> int +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxRequestLineSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxResponseBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MaxResponseBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.RequestHeadersTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.RequestHeadersTimeout.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AddServerHeader.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AddServerHeader.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowResponseHeaderCompression.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowResponseHeaderCompression.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowSynchronousIO.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowSynchronousIO.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.DisableStringReuse.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.DisableStringReuse.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.EnableAltSvc.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.EnableAltSvc.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.KestrelServerOptions() -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenAnyIP(int port) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenHandle(ulong handle) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenLocalhost(int port) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.FileHandle.get -> ulong +Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.Protocols.get -> Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols +Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.Protocols.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.MinDataRate +Microsoft.AspNetCore.Server.Kestrel.Core.MinDataRate.BytesPerSecond.get -> double +Microsoft.AspNetCore.Server.Kestrel.Core.MinDataRate.GracePeriod.get -> System.TimeSpan +Microsoft.AspNetCore.Server.Kestrel.Core.MinDataRate.MinDataRate(double bytesPerSecond, System.TimeSpan gracePeriod) -> void +Microsoft.AspNetCore.Server.Kestrel.EndpointConfiguration +Microsoft.AspNetCore.Server.Kestrel.EndpointConfiguration.IsHttps.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Https.CertificateLoader +Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode +Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode.AllowCertificate = 1 -> Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode +Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode.NoCertificate = 0 -> Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode +Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode.RequireCertificate = 2 -> Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.AllowAnyClientCertificate() -> void +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.CheckCertificateRevocation.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.CheckCertificateRevocation.set -> void +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.ClientCertificateMode.get -> Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.ClientCertificateMode.set -> void +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.HandshakeTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.HandshakeTimeout.set -> void +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.HttpsConnectionAdapterOptions() -> void +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.SslProtocols.get -> System.Security.Authentication.SslProtocols +Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.SslProtocols.set -> void +Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Load() -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinRequestBodyDataRateFeature.MinDataRate.get -> Microsoft.AspNetCore.Server.Kestrel.Core.MinDataRate +~Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinRequestBodyDataRateFeature.MinDataRate.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinResponseDataRateFeature.MinDataRate.get -> Microsoft.AspNetCore.Server.Kestrel.Core.MinDataRate +~Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinResponseDataRateFeature.MinDataRate.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpParser +~Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpParser.ParseHeaders(TRequestHandler handler, ref System.Buffers.SequenceReader reader) -> bool +~Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpParser.ParseRequestLine(TRequestHandler handler, ref System.Buffers.SequenceReader reader) -> bool +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.Features.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.KestrelServer(Microsoft.Extensions.Options.IOptions options, System.Collections.Generic.IEnumerable transportFactories, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.Options.get -> Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StartAsync(Microsoft.AspNetCore.Hosting.Server.IHttpApplication application, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StopAsync(System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.Http2.get -> Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.Http3.get -> Microsoft.AspNetCore.Server.Kestrel.Core.Http3Limits +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MinRequestBodyDataRate.get -> Microsoft.AspNetCore.Server.Kestrel.Core.MinDataRate +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MinRequestBodyDataRate.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MinResponseDataRate.get -> Microsoft.AspNetCore.Server.Kestrel.Core.MinDataRate +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits.MinResponseDataRate.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ApplicationServices.get -> System.IServiceProvider +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ApplicationServices.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ConfigurationLoader.get -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ConfigurationLoader.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Configure() -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Configure(Microsoft.Extensions.Configuration.IConfiguration config) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Configure(Microsoft.Extensions.Configuration.IConfiguration config, bool reloadOnChange) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ConfigureEndpointDefaults(System.Action configureOptions) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ConfigureHttpsDefaults(System.Action configureOptions) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Limits.get -> Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerLimits +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Listen(System.Net.EndPoint endPoint) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Listen(System.Net.EndPoint endPoint, System.Action configure) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Listen(System.Net.IPAddress address, int port) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Listen(System.Net.IPAddress address, int port, System.Action configure) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Listen(System.Net.IPEndPoint endPoint) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.Listen(System.Net.IPEndPoint endPoint, System.Action configure) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenAnyIP(int port, System.Action configure) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenHandle(ulong handle, System.Action configure) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenLocalhost(int port, System.Action configure) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenUnixSocket(string socketPath) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenUnixSocket(string socketPath, System.Action configure) -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.RequestHeaderEncodingSelector.get -> System.Func +~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.RequestHeaderEncodingSelector.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.ApplicationServices.get -> System.IServiceProvider +~Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.Build() -> Microsoft.AspNetCore.Connections.ConnectionDelegate +~Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.EndPoint.get -> System.Net.EndPoint +~Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.IPEndPoint.get -> System.Net.IPEndPoint +~Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.KestrelServerOptions.get -> Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions +~Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.SocketPath.get -> string +~Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.Use(System.Func middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder +~Microsoft.AspNetCore.Server.Kestrel.EndpointConfiguration.ConfigSection.get -> Microsoft.Extensions.Configuration.IConfigurationSection +~Microsoft.AspNetCore.Server.Kestrel.EndpointConfiguration.HttpsOptions.get -> Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions +~Microsoft.AspNetCore.Server.Kestrel.EndpointConfiguration.ListenOptions.get -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.ClientCertificateValidation.get -> System.Func +~Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.ClientCertificateValidation.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.OnAuthenticate.get -> System.Action +~Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.OnAuthenticate.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.ServerCertificate.get -> System.Security.Cryptography.X509Certificates.X509Certificate2 +~Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.ServerCertificate.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.ServerCertificateSelector.get -> System.Func +~Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions.ServerCertificateSelector.set -> void +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.AnyIPEndpoint(int port) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.AnyIPEndpoint(int port, System.Action configure) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Configuration.get -> Microsoft.Extensions.Configuration.IConfiguration +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Endpoint(System.Net.IPAddress address, int port) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Endpoint(System.Net.IPAddress address, int port, System.Action configure) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Endpoint(System.Net.IPEndPoint endPoint) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Endpoint(System.Net.IPEndPoint endPoint, System.Action configure) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Endpoint(string name, System.Action configureOptions) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.HandleEndpoint(ulong handle) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.HandleEndpoint(ulong handle, System.Action configure) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.LocalhostEndpoint(int port) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.LocalhostEndpoint(int port, System.Action configure) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Options.get -> Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.UnixSocketEndpoint(string socketPath) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.UnixSocketEndpoint(string socketPath, System.Action configure) -> Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader +~override Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.ToString() -> string +~static Microsoft.AspNetCore.Hosting.KestrelServerOptionsSystemdExtensions.UseSystemd(this Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions options) -> Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions +~static Microsoft.AspNetCore.Hosting.KestrelServerOptionsSystemdExtensions.UseSystemd(this Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions options, System.Action configure) -> Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsConnectionLoggingExtensions.UseConnectionLogging(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsConnectionLoggingExtensions.UseConnectionLogging(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, string loggerName) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, Microsoft.AspNetCore.Server.Kestrel.Https.HttpsConnectionAdapterOptions httpsOptions) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, System.Action configureOptions) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, System.Net.Security.ServerOptionsSelectionCallback serverOptionsSelectionCallback, object state) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, System.Net.Security.ServerOptionsSelectionCallback serverOptionsSelectionCallback, object state, System.TimeSpan handshakeTimeout) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, System.Security.Cryptography.X509Certificates.StoreName storeName, string subject) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, System.Security.Cryptography.X509Certificates.StoreName storeName, string subject, bool allowInvalid) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, System.Security.Cryptography.X509Certificates.StoreName storeName, string subject, bool allowInvalid, System.Security.Cryptography.X509Certificates.StoreLocation location) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, System.Security.Cryptography.X509Certificates.StoreName storeName, string subject, bool allowInvalid, System.Security.Cryptography.X509Certificates.StoreLocation location, System.Action configureOptions) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, System.Security.Cryptography.X509Certificates.X509Certificate2 serverCertificate) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, System.Security.Cryptography.X509Certificates.X509Certificate2 serverCertificate, System.Action configureOptions) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, string fileName) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, string fileName, string password) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(this Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions listenOptions, string fileName, string password, System.Action configureOptions) -> Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions +~static Microsoft.AspNetCore.Server.Kestrel.Https.CertificateLoader.LoadFromStoreCert(string subject, string storeName, System.Security.Cryptography.X509Certificates.StoreLocation storeLocation, bool allowInvalid) -> System.Security.Cryptography.X509Certificates.X509Certificate2 diff --git a/src/Servers/Kestrel/Core/test/MessageBodyTests.cs b/src/Servers/Kestrel/Core/test/MessageBodyTests.cs index ff1280a3f4dc..e27445838630 100644 --- a/src/Servers/Kestrel/Core/test/MessageBodyTests.cs +++ b/src/Servers/Kestrel/Core/test/MessageBodyTests.cs @@ -1226,6 +1226,39 @@ public async Task UnexpectedEndOfRequestContentIsRepeatedlyThrownForContentLengt input.Application.Output.Complete(); +#pragma warning disable CS0618 // Type or member is obsolete + var ex0 = Assert.Throws(() => reader.TryRead(out var readResult)); + var ex1 = Assert.Throws(() => reader.TryRead(out var readResult)); + var ex2 = await Assert.ThrowsAsync(() => reader.ReadAsync().AsTask()); + var ex3 = await Assert.ThrowsAsync(() => reader.ReadAsync().AsTask()); +#pragma warning restore CS0618 // Type or member is obsolete + + Assert.Equal(RequestRejectionReason.UnexpectedEndOfRequestContent, ex0.Reason); + Assert.Equal(RequestRejectionReason.UnexpectedEndOfRequestContent, ex1.Reason); + Assert.Equal(RequestRejectionReason.UnexpectedEndOfRequestContent, ex2.Reason); + Assert.Equal(RequestRejectionReason.UnexpectedEndOfRequestContent, ex3.Reason); + + await body.StopAsync(); + } + } + + [Fact] + public async Task UnexpectedEndOfRequestContentIsRepeatedlyThrownForContentLengthBodyAfterExaminingButNotConsumingBytes() + { + using (var input = new TestInput()) + { + var body = Http1MessageBody.For(HttpVersion.Http11, new HttpRequestHeaders { HeaderContentLength = "5" }, input.Http1Connection); + var reader = new HttpRequestPipeReader(); + reader.StartAcceptingReads(body); + + await input.Application.Output.WriteAsync(new byte[] { 0 }); + + var readResult = await reader.ReadAsync(); + + reader.AdvanceTo(readResult.Buffer.Start, readResult.Buffer.End); + + input.Application.Output.Complete(); + #pragma warning disable CS0618 // Type or member is obsolete var ex0 = Assert.Throws(() => reader.TryRead(out var readResult)); var ex1 = Assert.Throws(() => reader.TryRead(out var readResult)); diff --git a/src/Servers/Kestrel/Kestrel/src/PublicAPI.Shipped.txt b/src/Servers/Kestrel/Kestrel/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Servers/Kestrel/Kestrel/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Servers/Kestrel/Kestrel/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Kestrel/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..18ac43fdc4bd --- /dev/null +++ b/src/Servers/Kestrel/Kestrel/src/PublicAPI.Unshipped.txt @@ -0,0 +1,7 @@ +#nullable enable +Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions +~static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.ConfigureKestrel(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder, System.Action configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.ConfigureKestrel(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder, System.Action options) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrel(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrel(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder, System.Action configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrel(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder, System.Action options) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder diff --git a/src/Servers/Kestrel/Transport.Libuv/src/PublicAPI.Shipped.txt b/src/Servers/Kestrel/Transport.Libuv/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Servers/Kestrel/Transport.Libuv/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Servers/Kestrel/Transport.Libuv/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Transport.Libuv/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..9e4123d9f5e1 --- /dev/null +++ b/src/Servers/Kestrel/Transport.Libuv/src/PublicAPI.Unshipped.txt @@ -0,0 +1,16 @@ +#nullable enable +Microsoft.AspNetCore.Hosting.WebHostBuilderLibuvExtensions +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.Backlog.get -> int +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.Backlog.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.LibuvTransportOptions() -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.MaxReadBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.MaxReadBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.MaxWriteBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.MaxWriteBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.NoDelay.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.NoDelay.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.ThreadCount.get -> int +Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransportOptions.ThreadCount.set -> void +~static Microsoft.AspNetCore.Hosting.WebHostBuilderLibuvExtensions.UseLibuv(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Hosting.WebHostBuilderLibuvExtensions.UseLibuv(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder, System.Action configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder diff --git a/src/Servers/Kestrel/Transport.Quic/src/PublicAPI.Shipped.txt b/src/Servers/Kestrel/Transport.Quic/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Servers/Kestrel/Transport.Quic/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Servers/Kestrel/Transport.Quic/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Transport.Quic/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..346fbadf7725 --- /dev/null +++ b/src/Servers/Kestrel/Transport.Quic/src/PublicAPI.Unshipped.txt @@ -0,0 +1,24 @@ +#nullable enable +Microsoft.AspNetCore.Hosting.WebHostBuilderMsQuicExtensions +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.IdleTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.IdleTimeout.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.MaxBidirectionalStreamCount.get -> ushort +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.MaxBidirectionalStreamCount.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.MaxReadBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.MaxReadBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.MaxUnidirectionalStreamCount.get -> ushort +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.MaxUnidirectionalStreamCount.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.MaxWriteBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.MaxWriteBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.QuicTransportOptions() -> void +~Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.Alpn.get -> string +~Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.Alpn.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.Certificate.get -> System.Security.Cryptography.X509Certificates.X509Certificate2 +~Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.Certificate.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.CertificateFilePath.get -> string +~Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.CertificateFilePath.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.PrivateKeyFilePath.get -> string +~Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic.QuicTransportOptions.PrivateKeyFilePath.set -> void +~static Microsoft.AspNetCore.Hosting.WebHostBuilderMsQuicExtensions.UseQuic(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Hosting.WebHostBuilderMsQuicExtensions.UseQuic(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder, System.Action configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder diff --git a/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Shipped.txt b/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..f0fc2fa03cbe --- /dev/null +++ b/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Unshipped.txt @@ -0,0 +1,23 @@ +#nullable enable +Microsoft.AspNetCore.Hosting.WebHostBuilderSocketExtensions +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.Backlog.get -> int +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.Backlog.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.IOQueueCount.get -> int +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.IOQueueCount.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.MaxReadBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.MaxReadBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.MaxWriteBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.MaxWriteBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.NoDelay.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.NoDelay.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.SocketTransportOptions() -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.UnsafePreferInlineScheduling.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.UnsafePreferInlineScheduling.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.WaitForDataBeforeAllocatingBuffer.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.WaitForDataBeforeAllocatingBuffer.set -> void +~Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(System.Net.EndPoint endpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +~Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.SocketTransportFactory(Microsoft.Extensions.Options.IOptions options, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void +~static Microsoft.AspNetCore.Hosting.WebHostBuilderSocketExtensions.UseSockets(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder +~static Microsoft.AspNetCore.Hosting.WebHostBuilderSocketExtensions.UseSockets(this Microsoft.AspNetCore.Hosting.IWebHostBuilder hostBuilder, System.Action configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder diff --git a/src/Servers/Kestrel/shared/test/TransportTestHelpers/TestServer.cs b/src/Servers/Kestrel/shared/test/TransportTestHelpers/TestServer.cs index f24b116ae97e..a95568d28b3c 100644 --- a/src/Servers/Kestrel/shared/test/TransportTestHelpers/TestServer.cs +++ b/src/Servers/Kestrel/shared/test/TransportTestHelpers/TestServer.cs @@ -101,6 +101,13 @@ public TestServer(RequestDelegate app, TestServiceContext context, Action { app.Run(_app); }); }) + .ConfigureServices(services => + { + services.Configure(option => + { + option.ShutdownTimeout = TestConstants.DefaultTimeout; + }); + }) .Build(); _host.Start(); diff --git a/src/Servers/Kestrel/stress/Program.cs b/src/Servers/Kestrel/stress/Program.cs index c962d5bfd78d..2a07813d7158 100644 --- a/src/Servers/Kestrel/stress/Program.cs +++ b/src/Servers/Kestrel/stress/Program.cs @@ -646,7 +646,7 @@ protected override async Task SerializeToStreamAsync(Stream stream, TransportCon { await stream.WriteAsync(new byte[] { 1, 2, 3 }); - var tcs = new TaskCompletionSource(TaskContinuationOptions.RunContinuationsAsynchronously); + var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); using (_cancellationToken.Register(() => tcs.SetResult(true))) { await tcs.Task.ConfigureAwait(false); diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/ResponseTests.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/ResponseTests.cs index f68686525348..ec1d90072ad5 100644 --- a/src/Servers/Kestrel/test/InMemory.FunctionalTests/ResponseTests.cs +++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/ResponseTests.cs @@ -2555,24 +2555,27 @@ await connection.Send( [Fact] [QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/24164")] + [Repeat(100)] public async Task AppAbortViaIConnectionLifetimeFeatureIsLogged() { var testContext = new TestServiceContext(LoggerFactory); - await using (var server = new TestServer(httpContext => + var closeTaskTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + + await using (var server = new TestServer(async httpContext => { + var closeTask = await closeTaskTcs.Task.DefaultTimeout(); var feature = httpContext.Features.Get(); feature.Abort(); // Ensure the response doesn't get flush before the abort is observed. - var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - feature.ConnectionClosed.Register(() => tcs.TrySetResult()); - - return tcs.Task; + await closeTask; }, testContext)) { using (var connection = server.CreateConnection()) { + closeTaskTcs.SetResult(connection.TransportConnection.WaitForCloseTask); + await connection.Send( "GET / HTTP/1.1", "Host:", diff --git a/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs b/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs index 2e2857ba418a..2432af6ee21a 100644 --- a/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs +++ b/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs @@ -131,6 +131,8 @@ protected override void Dispose(bool disposing) { SetAllBlocksReturned(); } + + _pool.Dispose(); } } diff --git a/src/Shared/CertificateGeneration/CertificateManager.cs b/src/Shared/CertificateGeneration/CertificateManager.cs index b5c0d0088eb1..8ad2e14749f2 100644 --- a/src/Shared/CertificateGeneration/CertificateManager.cs +++ b/src/Shared/CertificateGeneration/CertificateManager.cs @@ -28,7 +28,9 @@ internal abstract class CertificateManager public const int RSAMinimumKeySizeInBits = 2048; public static CertificateManager Instance { get; } = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? +#pragma warning disable CA1416 // Validate platform compatibility new WindowsCertificateManager() : +#pragma warning restore CA1416 // Validate platform compatibility RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? new MacOSCertificateManager() as CertificateManager : new UnixCertificateManager(); diff --git a/src/Shared/CertificateGeneration/WindowsCertificateManager.cs b/src/Shared/CertificateGeneration/WindowsCertificateManager.cs index cbeed665d24f..e9fe0ef2e111 100644 --- a/src/Shared/CertificateGeneration/WindowsCertificateManager.cs +++ b/src/Shared/CertificateGeneration/WindowsCertificateManager.cs @@ -1,11 +1,13 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Versioning; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; namespace Microsoft.AspNetCore.Certificates.Generation { + [SupportedOSPlatform("windows")] internal class WindowsCertificateManager : CertificateManager { private const int UserCancelledErrorCode = 1223; diff --git a/src/Shared/PlatformAttributes.cs b/src/Shared/PlatformAttributes.cs new file mode 100644 index 000000000000..253014480dda --- /dev/null +++ b/src/Shared/PlatformAttributes.cs @@ -0,0 +1,103 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Copied from https://raw.githubusercontent.com/dotnet/runtime/b45ee9d37afec0c88141053e86ccf71c6f283000/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/PlatformAttributes.cs + +#nullable enable +namespace System.Runtime.Versioning +{ + /// + /// Base type for all platform-specific API attributes. + /// +#pragma warning disable CS3015 // Type has no accessible constructors which use only CLS-compliant types +#if SYSTEM_PRIVATE_CORELIB + public +#else + internal +#endif + abstract class OSPlatformAttribute : Attribute +#pragma warning restore CS3015 + { + private protected OSPlatformAttribute(string platformName) + { + PlatformName = platformName; + } + public string PlatformName { get; } + } + + /// + /// Records the platform that the project targeted. + /// + [AttributeUsage(AttributeTargets.Assembly, + AllowMultiple = false, Inherited = false)] +#if SYSTEM_PRIVATE_CORELIB + public +#else + internal +#endif + sealed class TargetPlatformAttribute : OSPlatformAttribute + { + public TargetPlatformAttribute(string platformName) : base(platformName) + { + } + } + + /// + /// Records the operating system (and minimum version) that supports an API. Multiple attributes can be + /// applied to indicate support on multiple operating systems. + /// + /// + /// Callers can apply a + /// or use guards to prevent calls to APIs on unsupported operating systems. + /// + /// A given platform should only be specified once. + /// + [AttributeUsage(AttributeTargets.Assembly | + AttributeTargets.Class | + AttributeTargets.Constructor | + AttributeTargets.Enum | + AttributeTargets.Event | + AttributeTargets.Field | + AttributeTargets.Method | + AttributeTargets.Module | + AttributeTargets.Property | + AttributeTargets.Struct, + AllowMultiple = true, Inherited = false)] +#if SYSTEM_PRIVATE_CORELIB + public +#else + internal +#endif + sealed class SupportedOSPlatformAttribute : OSPlatformAttribute + { + public SupportedOSPlatformAttribute (string platformName) : base(platformName) + { + } + } + + /// + /// Marks APIs that were removed in a given operating system version. + /// + [AttributeUsage(AttributeTargets.Assembly | + AttributeTargets.Class | + AttributeTargets.Constructor | + AttributeTargets.Enum | + AttributeTargets.Event | + AttributeTargets.Field | + AttributeTargets.Method | + AttributeTargets.Module | + AttributeTargets.Property | + AttributeTargets.Struct, + AllowMultiple = true, Inherited = false)] +#if SYSTEM_PRIVATE_CORELIB + public +#else + internal +#endif + sealed class UnsupportedOSPlatformAttribute : OSPlatformAttribute + { + public UnsupportedOSPlatformAttribute(string platformName) : base(platformName) + { + } + } +} \ No newline at end of file diff --git a/src/Shared/test/Shared.Tests/runtime/Http2/HPackIntegerTest.cs b/src/Shared/test/Shared.Tests/runtime/Http2/HPackIntegerTest.cs index 98938a776bab..704dad8ac43d 100644 --- a/src/Shared/test/Shared.Tests/runtime/Http2/HPackIntegerTest.cs +++ b/src/Shared/test/Shared.Tests/runtime/Http2/HPackIntegerTest.cs @@ -55,12 +55,13 @@ public void HPack_IntegerDecode(int expectedResult, int bits, byte[] encoded) public void IntegerEncoderDecoderRoundtrips() { IntegerDecoder decoder = new IntegerDecoder(); + Span integerBytes = stackalloc byte[5]; for (int i = 0; i < 2048; ++i) { for (int prefixLength = 1; prefixLength <= 8; ++prefixLength) { - Span integerBytes = stackalloc byte[5]; + integerBytes.Clear(); Assert.True(IntegerEncoder.Encode(i, prefixLength, integerBytes, out int length)); bool decodeResult = decoder.BeginTryDecode(integerBytes[0], prefixLength, out int intResult); diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsync.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsync.cs index f8d2a0ddb762..5d9a263470d7 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsync.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsync.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -19,6 +20,7 @@ public partial class HubConnectionExtensions /// The name of the server method to invoke. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, Array.Empty(), cancellationToken); @@ -32,6 +34,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The first argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1 }, cancellationToken); @@ -46,6 +49,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The second argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2 }, cancellationToken); @@ -61,6 +65,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The third argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3 }, cancellationToken); @@ -77,6 +82,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The fourth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4 }, cancellationToken); @@ -94,6 +100,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The fifth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5 }, cancellationToken); @@ -112,6 +119,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The sixth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6 }, cancellationToken); @@ -131,6 +139,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The seventh argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7 }, cancellationToken); @@ -151,6 +160,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The eighth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 }, cancellationToken); @@ -172,6 +182,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The ninth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 }, cancellationToken); @@ -194,6 +205,7 @@ public static Task InvokeAsync(this HubConnection hubConnection, string methodNa /// The tenth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 }, cancellationToken); diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsyncGeneric.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsyncGeneric.cs index 5d5df546a6ce..ef1ddfcff33a 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsyncGeneric.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsyncGeneric.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -23,6 +24,7 @@ public static partial class HubConnectionExtensions /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, Array.Empty(), cancellationToken); @@ -40,6 +42,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1 }, cancellationToken); @@ -58,6 +61,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2 }, cancellationToken); @@ -77,6 +81,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3 }, cancellationToken); @@ -97,6 +102,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4 }, cancellationToken); @@ -118,6 +124,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5 }, cancellationToken); @@ -140,6 +147,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6 }, cancellationToken); @@ -163,6 +171,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7 }, cancellationToken); @@ -187,6 +196,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 }, cancellationToken); @@ -212,6 +222,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 }, cancellationToken); @@ -238,6 +249,7 @@ public static Task InvokeAsync(this HubConnection hubConnectio /// A that represents the asynchronous invoke. /// The property returns a for the hub method return value. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task InvokeAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, CancellationToken cancellationToken = default) { return hubConnection.InvokeCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 }, cancellationToken); diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.SendAsync.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.SendAsync.cs index ea41429607a6..eaeb03d88d4d 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.SendAsync.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.SendAsync.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -20,6 +21,7 @@ public static partial class HubConnectionExtensions /// The name of the server method to invoke. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, Array.Empty(), cancellationToken); @@ -34,6 +36,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The first argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1 }, cancellationToken); @@ -49,6 +52,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The second argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1, arg2 }, cancellationToken); @@ -65,6 +69,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The third argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1, arg2, arg3 }, cancellationToken); @@ -82,6 +87,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The fourth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4 }, cancellationToken); @@ -100,6 +106,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The fifth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5 }, cancellationToken); @@ -119,6 +126,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The sixth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6 }, cancellationToken); @@ -139,6 +147,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The seventh argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7 }, cancellationToken); @@ -160,6 +169,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The eighth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 }, cancellationToken); @@ -182,6 +192,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The ninth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 }, cancellationToken); @@ -205,6 +216,7 @@ public static Task SendAsync(this HubConnection hubConnection, string methodName /// The tenth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, CancellationToken cancellationToken = default) { return hubConnection.SendCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 }, cancellationToken); diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsChannelAsync.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsChannelAsync.cs index b4095d1dc092..533c8dc0a94a 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsChannelAsync.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsChannelAsync.cs @@ -5,6 +5,7 @@ using System.Threading; using System.Threading.Tasks; using System.Threading.Channels; +using System.Diagnostics.CodeAnalysis; namespace Microsoft.AspNetCore.SignalR.Client { @@ -24,6 +25,7 @@ public static partial class HubConnectionExtensions /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, Array.Empty(), cancellationToken); @@ -41,6 +43,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1 }, cancellationToken); @@ -59,6 +62,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1, arg2 }, cancellationToken); @@ -78,6 +82,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1, arg2, arg3 }, cancellationToken); @@ -98,6 +103,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4 }, cancellationToken); @@ -119,6 +125,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5 }, cancellationToken); @@ -141,6 +148,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6 }, cancellationToken); @@ -164,6 +172,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7 }, cancellationToken); @@ -188,6 +197,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 }, cancellationToken); @@ -213,6 +223,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 }, cancellationToken); @@ -239,6 +250,7 @@ public static Task> StreamAsChannelAsync(this Hu /// A that represents the asynchronous invoke. /// The property returns a for the streamed hub method values. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task> StreamAsChannelAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, CancellationToken cancellationToken = default) { return hubConnection.StreamAsChannelCoreAsync(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 }, cancellationToken); diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsync.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsync.cs index 9448948f6acb..c11429a9a0a2 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsync.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsync.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using System.Threading.Channels; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; namespace Microsoft.AspNetCore.SignalR.Client { @@ -24,6 +25,7 @@ public static partial class HubConnectionExtensions /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, Array.Empty(), cancellationToken); @@ -40,6 +42,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1 }, cancellationToken); @@ -57,6 +60,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1, arg2 }, cancellationToken); @@ -75,6 +79,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1, arg2, arg3 }, cancellationToken); @@ -94,6 +99,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1, arg2, arg3, arg4 }, cancellationToken); @@ -114,6 +120,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1, arg2, arg3, arg4, arg5 }, cancellationToken); @@ -135,6 +142,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6 }, cancellationToken); @@ -157,6 +165,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7 }, cancellationToken); @@ -180,6 +189,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 }, cancellationToken); @@ -204,6 +214,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 }, cancellationToken); @@ -229,6 +240,7 @@ public static IAsyncEnumerable StreamAsync(this HubConnection /// /// A that represents the stream. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static IAsyncEnumerable StreamAsync(this HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, CancellationToken cancellationToken = default) { return hubConnection.StreamAsyncCore(methodName, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 }, cancellationToken); diff --git a/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Shipped.txt b/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Unshipped.txt b/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..589e965a9ff2 --- /dev/null +++ b/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Unshipped.txt @@ -0,0 +1,135 @@ +#nullable enable +Microsoft.AspNetCore.SignalR.Client.HubConnection +Microsoft.AspNetCore.SignalR.Client.HubConnection.Closed -> System.Func +Microsoft.AspNetCore.SignalR.Client.HubConnection.DisposeAsync() -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.SignalR.Client.HubConnection.HandshakeTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.SignalR.Client.HubConnection.HandshakeTimeout.set -> void +Microsoft.AspNetCore.SignalR.Client.HubConnection.KeepAliveInterval.get -> System.TimeSpan +Microsoft.AspNetCore.SignalR.Client.HubConnection.KeepAliveInterval.set -> void +Microsoft.AspNetCore.SignalR.Client.HubConnection.Reconnected -> System.Func +Microsoft.AspNetCore.SignalR.Client.HubConnection.Reconnecting -> System.Func +Microsoft.AspNetCore.SignalR.Client.HubConnection.ServerTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.SignalR.Client.HubConnection.ServerTimeout.set -> void +Microsoft.AspNetCore.SignalR.Client.HubConnection.State.get -> Microsoft.AspNetCore.SignalR.Client.HubConnectionState +Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder +Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder.HubConnectionBuilder() -> void +Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions +Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions +Microsoft.AspNetCore.SignalR.Client.HubConnectionState +Microsoft.AspNetCore.SignalR.Client.HubConnectionState.Connected = 1 -> Microsoft.AspNetCore.SignalR.Client.HubConnectionState +Microsoft.AspNetCore.SignalR.Client.HubConnectionState.Connecting = 2 -> Microsoft.AspNetCore.SignalR.Client.HubConnectionState +Microsoft.AspNetCore.SignalR.Client.HubConnectionState.Disconnected = 0 -> Microsoft.AspNetCore.SignalR.Client.HubConnectionState +Microsoft.AspNetCore.SignalR.Client.HubConnectionState.Reconnecting = 3 -> Microsoft.AspNetCore.SignalR.Client.HubConnectionState +Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +Microsoft.AspNetCore.SignalR.Client.IRetryPolicy +Microsoft.AspNetCore.SignalR.Client.RetryContext +Microsoft.AspNetCore.SignalR.Client.RetryContext.ElapsedTime.get -> System.TimeSpan +Microsoft.AspNetCore.SignalR.Client.RetryContext.ElapsedTime.set -> void +Microsoft.AspNetCore.SignalR.Client.RetryContext.PreviousRetryCount.get -> long +Microsoft.AspNetCore.SignalR.Client.RetryContext.PreviousRetryCount.set -> void +Microsoft.AspNetCore.SignalR.Client.RetryContext.RetryContext() -> void +override Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder.GetHashCode() -> int +static readonly Microsoft.AspNetCore.SignalR.Client.HubConnection.DefaultHandshakeTimeout -> System.TimeSpan +static readonly Microsoft.AspNetCore.SignalR.Client.HubConnection.DefaultKeepAliveInterval -> System.TimeSpan +static readonly Microsoft.AspNetCore.SignalR.Client.HubConnection.DefaultServerTimeout -> System.TimeSpan +~Microsoft.AspNetCore.SignalR.Client.HubConnection.ConnectionId.get -> string +~Microsoft.AspNetCore.SignalR.Client.HubConnection.HubConnection(Microsoft.AspNetCore.Connections.IConnectionFactory connectionFactory, Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol protocol, System.Net.EndPoint endPoint, System.IServiceProvider serviceProvider, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void +~Microsoft.AspNetCore.SignalR.Client.HubConnection.HubConnection(Microsoft.AspNetCore.Connections.IConnectionFactory connectionFactory, Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol protocol, System.Net.EndPoint endPoint, System.IServiceProvider serviceProvider, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Microsoft.AspNetCore.SignalR.Client.IRetryPolicy reconnectPolicy) -> void +~Microsoft.AspNetCore.SignalR.Client.HubConnection.InvokeCoreAsync(string methodName, System.Type returnType, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.SignalR.Client.HubConnection.On(string methodName, System.Type[] parameterTypes, System.Func handler, object state) -> System.IDisposable +~Microsoft.AspNetCore.SignalR.Client.HubConnection.Remove(string methodName) -> void +~Microsoft.AspNetCore.SignalR.Client.HubConnection.SendCoreAsync(string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.SignalR.Client.HubConnection.StopAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.SignalR.Client.HubConnection.StreamAsChannelCoreAsync(string methodName, System.Type returnType, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~Microsoft.AspNetCore.SignalR.Client.HubConnection.StreamAsyncCore(string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder.Build() -> Microsoft.AspNetCore.SignalR.Client.HubConnection +~Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder.GetType() -> System.Type +~Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection +~Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder.Build() -> Microsoft.AspNetCore.SignalR.Client.HubConnection +~Microsoft.AspNetCore.SignalR.Client.IRetryPolicy.NextRetryDelay(Microsoft.AspNetCore.SignalR.Client.RetryContext retryContext) -> System.TimeSpan? +~Microsoft.AspNetCore.SignalR.Client.RetryContext.RetryReason.get -> System.Exception +~Microsoft.AspNetCore.SignalR.Client.RetryContext.RetryReason.set -> void +~override Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder.Equals(object obj) -> bool +~override Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder.ToString() -> string +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.ConfigureLogging(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, System.Action configureLogging) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithAutomaticReconnect(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithAutomaticReconnect(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, Microsoft.AspNetCore.SignalR.Client.IRetryPolicy retryPolicy) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithAutomaticReconnect(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, System.TimeSpan[] reconnectDelays) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeCoreAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeCoreAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Action handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Type[] parameterTypes, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Action handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Action handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Action handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Action handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Action handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Action handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Action handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Action handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.On(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Func handler) -> System.IDisposable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsChannelCoreAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task> +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.StreamAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection hubConnection, string methodName, object arg1, object arg2, object arg3, object arg4, object arg5, object arg6, object arg7, object arg8, object arg9, object arg10, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Collections.Generic.IAsyncEnumerable diff --git a/src/SignalR/clients/csharp/Client/src/PublicAPI.Shipped.txt b/src/SignalR/clients/csharp/Client/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/clients/csharp/Client/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/clients/csharp/Client/src/PublicAPI.Unshipped.txt b/src/SignalR/clients/csharp/Client/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..32486f22b034 --- /dev/null +++ b/src/SignalR/clients/csharp/Client/src/PublicAPI.Unshipped.txt @@ -0,0 +1,10 @@ +#nullable enable +Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, System.Uri url) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, System.Uri url, Microsoft.AspNetCore.Http.Connections.HttpTransportType transports) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, System.Uri url, Microsoft.AspNetCore.Http.Connections.HttpTransportType transports, System.Action configureHttpConnection) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, System.Uri url, System.Action configureHttpConnection) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, string url) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, string url, Microsoft.AspNetCore.Http.Connections.HttpTransportType transports) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, string url, Microsoft.AspNetCore.Http.Connections.HttpTransportType transports, System.Action configureHttpConnection) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder +~static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder hubConnectionBuilder, string url, System.Action configureHttpConnection) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder diff --git a/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs b/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs index 1e1de9abe406..17e41b4db981 100644 --- a/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs +++ b/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs @@ -1349,7 +1349,11 @@ public async Task ServerLogsErrorIfClientInvokeCannotBeSerialized(string protoco }; var protocol = HubProtocols[protocolName]; - await using (var server = await StartServer(write => write.EventId.Name == "FailedWritingMessage")) + await using (var server = await StartServer(write => + { + return write.EventId.Name == "FailedWritingMessage" || write.EventId.Name == "ReceivedCloseWithError" + || write.EventId.Name == "ShutdownWithError"; + })) { var connection = CreateHubConnection(server.Url, "/default", HttpTransportType.WebSockets, protocol, LoggerFactory); var closedTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); @@ -1361,9 +1365,12 @@ public async Task ServerLogsErrorIfClientInvokeCannotBeSerialized(string protoco var result = connection.InvokeAsync(nameof(TestHub.CallWithUnserializableObject)); // The connection should close. - Assert.Null(await closedTcs.Task.OrTimeout()); + var exception = await closedTcs.Task.OrTimeout(); + Assert.Contains("Connection closed with an error.", exception.Message); - await Assert.ThrowsAsync(() => result).OrTimeout(); + var hubException = await Assert.ThrowsAsync(() => result).OrTimeout(); + Assert.Contains("Connection closed with an error.", hubException.Message); + Assert.Contains(exceptionSubstring, hubException.Message); } catch (Exception ex) { @@ -1396,7 +1403,11 @@ public async Task ServerLogsErrorIfReturnValueCannotBeSerialized(string protocol }; var protocol = HubProtocols[protocolName]; - await using (var server = await StartServer(write => write.EventId.Name == "FailedWritingMessage")) + await using (var server = await StartServer(write => + { + return write.EventId.Name == "FailedWritingMessage" || write.EventId.Name == "ReceivedCloseWithError" + || write.EventId.Name == "ShutdownWithError"; + })) { var connection = CreateHubConnection(server.Url, "/default", HttpTransportType.LongPolling, protocol, LoggerFactory); var closedTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); @@ -1408,9 +1419,12 @@ public async Task ServerLogsErrorIfReturnValueCannotBeSerialized(string protocol var result = connection.InvokeAsync(nameof(TestHub.GetUnserializableObject)).OrTimeout(); // The connection should close. - Assert.Null(await closedTcs.Task.OrTimeout()); + var exception = await closedTcs.Task.OrTimeout(); + Assert.Contains("Connection closed with an error.", exception.Message); - await Assert.ThrowsAsync(() => result).OrTimeout(); + var hubException = await Assert.ThrowsAsync(() => result).OrTimeout(); + Assert.Contains("Connection closed with an error.", hubException.Message); + Assert.Contains(exceptionSubstring, hubException.Message); } catch (Exception ex) { @@ -1721,6 +1735,34 @@ public async Task WebSocketOptionsAreApplied() } } + [ConditionalFact] + [WebSocketsSupportedCondition] + public async Task CookiesFromNegotiateAreAppliedToWebSockets() + { + await using (var server = await StartServer()) + { + var hubConnection = new HubConnectionBuilder() + .WithLoggerFactory(LoggerFactory) + .WithUrl(server.Url + "/default", HttpTransportType.WebSockets) + .Build(); + try + { + await hubConnection.StartAsync().OrTimeout(); + var cookieValue = await hubConnection.InvokeAsync(nameof(TestHub.GetCookieValue), "fromNegotiate").OrTimeout(); + Assert.Equal("a value", cookieValue); + } + catch (Exception ex) + { + LoggerFactory.CreateLogger().LogError(ex, "{ExceptionType} from test", ex.GetType().FullName); + throw; + } + finally + { + await hubConnection.DisposeAsync().OrTimeout(); + } + } + } + [Fact] public async Task CheckHttpConnectionFeatures() { diff --git a/src/SignalR/clients/csharp/Client/test/FunctionalTests/Startup.cs b/src/SignalR/clients/csharp/Client/test/FunctionalTests/Startup.cs index 14a7d7016f19..23bf2e30353b 100644 --- a/src/SignalR/clients/csharp/Client/test/FunctionalTests/Startup.cs +++ b/src/SignalR/clients/csharp/Client/test/FunctionalTests/Startup.cs @@ -65,6 +65,18 @@ public void Configure(IApplicationBuilder app) app.UseAuthentication(); app.UseAuthorization(); + app.Use(next => + { + return context => + { + if (context.Request.Path.Value.EndsWith("/negotiate")) + { + context.Response.Cookies.Append("fromNegotiate", "a value"); + } + return next(context); + }; + }); + app.UseEndpoints(endpoints => { endpoints.MapHub("/default"); diff --git a/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.Log.cs b/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.Log.cs index 74b3de2e7133..9169f5f745a5 100644 --- a/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.Log.cs +++ b/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.Log.cs @@ -69,6 +69,9 @@ private static class Log private static readonly Action _serverSentEventsNotSupportedByBrowser = LoggerMessage.Define(LogLevel.Debug, new EventId(19, "ServerSentEventsNotSupportedByBrowser"), "Skipping ServerSentEvents because they are not supported by the browser."); + private static readonly Action _cookiesNotSupported = + LoggerMessage.Define(LogLevel.Trace, new EventId(20, "CookiesNotSupported"), "Cookies are not supported on this platform."); + public static void Starting(ILogger logger) { _starting(logger, null); @@ -175,6 +178,11 @@ public static void ServerSentEventsNotSupportedByBrowser(ILogger logger) { _serverSentEventsNotSupportedByBrowser(logger, null); } + + public static void CookiesNotSupported(ILogger logger) + { + _cookiesNotSupported(logger, null); + } } } } diff --git a/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs b/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs index 71fd3d0f2acf..1af8f917f82d 100644 --- a/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs +++ b/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.IO.Pipelines; using System.Linq; using System.Net.Http; @@ -153,7 +154,6 @@ public HttpConnection(HttpConnectionOptions httpConnectionOptions, ILoggerFactor _isRunningInBrowser = Utils.IsRunningInBrowser(); - if (httpConnectionOptions.Transports == HttpTransportType.ServerSentEvents && _isRunningInBrowser) { throw new ArgumentException("ServerSentEvents can not be the only transport specified when running in the browser.", nameof(httpConnectionOptions)); @@ -181,6 +181,7 @@ internal HttpConnection(HttpConnectionOptions httpConnectionOptions, ILoggerFact /// A connection cannot be restarted after it has stopped. To restart a connection /// a new instance should be created using the same options. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public Task StartAsync(CancellationToken cancellationToken = default) { return StartAsync(_httpConnectionOptions.DefaultTransferFormat, cancellationToken); @@ -196,6 +197,7 @@ public Task StartAsync(CancellationToken cancellationToken = default) /// A connection cannot be restarted after it has stopped. To restart a connection /// a new instance should be created using the same options. /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public async Task StartAsync(TransferFormat transferFormat, CancellationToken cancellationToken = default) { using (_logger.BeginScope(_logScope)) @@ -534,13 +536,21 @@ private HttpClient CreateHttpClient() httpClientHandler.Proxy = _httpConnectionOptions.Proxy; } - // Only access HttpClientHandler.ClientCertificates and HttpClientHandler.CookieContainer - // if the user has configured those options - // Some variants of Mono do not support client certs or cookies and will throw NotImplementedException - if (_httpConnectionOptions.Cookies.Count > 0) + try { + // On supported platforms, we need to pass the cookie container to the http client + // so that we can capture any cookies from the negotiate response and give them to WebSockets. httpClientHandler.CookieContainer = _httpConnectionOptions.Cookies; } + // Some variants of Mono do not support client certs or cookies and will throw NotImplementedException or NotSupportedException + // Also WASM doesn't support some settings in the browser + catch (Exception ex) when (ex is NotSupportedException || ex is NotImplementedException) + { + Log.CookiesNotSupported(_logger); + } + + // Only access HttpClientHandler.ClientCertificates + // if the user has configured those options // https://github.com/aspnet/SignalR/issues/2232 var clientCertificates = _httpConnectionOptions.ClientCertificates; if (clientCertificates?.Count > 0) diff --git a/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Shipped.txt b/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Unshipped.txt b/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..4435fdeb5c9d --- /dev/null +++ b/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Unshipped.txt @@ -0,0 +1,54 @@ +#nullable enable +Microsoft.AspNetCore.Http.Connections.Client.HttpConnection +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.CloseTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.CloseTimeout.set -> void +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.DefaultTransferFormat.get -> Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.DefaultTransferFormat.set -> void +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.HttpConnectionOptions() -> void +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.SkipNegotiation.get -> bool +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.SkipNegotiation.set -> void +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Transports.get -> Microsoft.AspNetCore.Http.Connections.HttpTransportType +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Transports.set -> void +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.UseDefaultCredentials.get -> bool? +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.UseDefaultCredentials.set -> void +Microsoft.AspNetCore.Http.Connections.Client.NoTransportSupportedException +Microsoft.AspNetCore.Http.Connections.Client.TransportFailedException +override Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.DisposeAsync() -> System.Threading.Tasks.ValueTask +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.HttpConnection(Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions httpConnectionOptions, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.HttpConnection(System.Uri url) -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.HttpConnection(System.Uri url, Microsoft.AspNetCore.Http.Connections.HttpTransportType transports) -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.HttpConnection(System.Uri url, Microsoft.AspNetCore.Http.Connections.HttpTransportType transports, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsync(Microsoft.AspNetCore.Connections.TransferFormat transferFormat, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync(System.Net.EndPoint endPoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.HttpConnectionFactory(Microsoft.Extensions.Options.IOptions options, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.AccessTokenProvider.get -> System.Func> +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.AccessTokenProvider.set -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.ClientCertificates.get -> System.Security.Cryptography.X509Certificates.X509CertificateCollection +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.ClientCertificates.set -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Cookies.get -> System.Net.CookieContainer +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Cookies.set -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Credentials.get -> System.Net.ICredentials +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Credentials.set -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Headers.get -> System.Collections.Generic.IDictionary +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Headers.set -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.HttpMessageHandlerFactory.get -> System.Func +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.HttpMessageHandlerFactory.set -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Proxy.get -> System.Net.IWebProxy +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Proxy.set -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Url.get -> System.Uri +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Url.set -> void +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.WebSocketConfiguration.get -> System.Action +~Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.WebSocketConfiguration.set -> void +~Microsoft.AspNetCore.Http.Connections.Client.NoTransportSupportedException.NoTransportSupportedException(string message) -> void +~Microsoft.AspNetCore.Http.Connections.Client.TransportFailedException.TransportFailedException(string transportType, string message, System.Exception innerException = null) -> void +~Microsoft.AspNetCore.Http.Connections.Client.TransportFailedException.TransportType.get -> string +~override Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.ConnectionId.get -> string +~override Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.ConnectionId.set -> void +~override Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.Features.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection +~override Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.Items.get -> System.Collections.Generic.IDictionary +~override Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.Items.set -> void +~override Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.Transport.get -> System.IO.Pipelines.IDuplexPipe +~override Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.Transport.set -> void diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java index e67bdacc8867..8ff26762f6cd 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java @@ -223,7 +223,11 @@ Transport getTransport() { List handlers = this.handlers.get(invocationMessage.getTarget()); if (handlers != null) { for (InvocationHandler handler : handlers) { - handler.getAction().invoke(invocationMessage.getArguments()); + try { + handler.getAction().invoke(invocationMessage.getArguments()); + } catch (Exception e) { + logger.error("Invoking client side method '{}' failed:", invocationMessage.getTarget(), e); + } } } else { logger.warn("Failed to find handler for '{}' method.", invocationMessage.getTarget()); @@ -751,12 +755,7 @@ private Single invoke(Type returnType, Class returnClass, String metho // run continuations on a separate thread Subject pendingCall = irq.getPendingCall(); pendingCall.subscribe(result -> { - // Primitive types can't be cast with the Class cast function - if (returnClass.isPrimitive()) { - subject.onSuccess((T)result); - } else { - subject.onSuccess((T)returnClass.cast(result)); - } + subject.onSuccess(Utils.cast(returnClass, result)); }, error -> subject.onError(error)); // Make sure the actual send is after setting up the callbacks otherwise there is a race @@ -813,12 +812,7 @@ private Observable stream(Type returnType, Class returnClass, String m ReplaySubject subject = ReplaySubject.create(); Subject pendingCall = irq.getPendingCall(); pendingCall.subscribe(result -> { - // Primitive types can't be cast with the Class cast function - if (returnClass.isPrimitive()) { - subject.onNext((T)result); - } else { - subject.onNext((T)returnClass.cast(result)); - } + subject.onNext(Utils.cast(returnClass, result)); }, error -> subject.onError(error), () -> subject.onComplete()); @@ -907,7 +901,7 @@ public Subscription on(String target, Action callback) { * @return A {@link Subscription} that can be disposed to unsubscribe from the hub method. */ public Subscription on(String target, Action1 callback, Class param1) { - ActionBase action = params -> callback.invoke(param1.cast(params[0])); + ActionBase action = params -> callback.invoke(Utils.cast(param1, params[0])); return registerHandler(target, action, param1); } @@ -926,7 +920,7 @@ public Subscription on(String target, Action1 callback, Class param */ public Subscription on(String target, Action2 callback, Class param1, Class param2) { ActionBase action = params -> { - callback.invoke(param1.cast(params[0]), param2.cast(params[1])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1])); }; return registerHandler(target, action, param1, param2); } @@ -948,7 +942,7 @@ public Subscription on(String target, Action2 callback, Class Subscription on(String target, Action3 callback, Class param1, Class param2, Class param3) { ActionBase action = params -> { - callback.invoke(param1.cast(params[0]), param2.cast(params[1]), param3.cast(params[2])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2])); }; return registerHandler(target, action, param1, param2, param3); } @@ -972,7 +966,8 @@ public Subscription on(String target, Action3 callback, public Subscription on(String target, Action4 callback, Class param1, Class param2, Class param3, Class param4) { ActionBase action = params -> { - callback.invoke(param1.cast(params[0]), param2.cast(params[1]), param3.cast(params[2]), param4.cast(params[3])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3])); }; return registerHandler(target, action, param1, param2, param3, param4); } @@ -998,8 +993,8 @@ public Subscription on(String target, Action4 c public Subscription on(String target, Action5 callback, Class param1, Class param2, Class param3, Class param4, Class param5) { ActionBase action = params -> { - callback.invoke(param1.cast(params[0]), param2.cast(params[1]), param3.cast(params[2]), param4.cast(params[3]), - param5.cast(params[4])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3]), Utils.cast(param5, params[4])); }; return registerHandler(target, action, param1, param2, param3, param4, param5); } @@ -1027,8 +1022,8 @@ public Subscription on(String target, Action5 Subscription on(String target, Action6 callback, Class param1, Class param2, Class param3, Class param4, Class param5, Class param6) { ActionBase action = params -> { - callback.invoke(param1.cast(params[0]), param2.cast(params[1]), param3.cast(params[2]), param4.cast(params[3]), - param5.cast(params[4]), param6.cast(params[5])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3]), Utils.cast(param5, params[4]), Utils.cast(param6, params[5])); }; return registerHandler(target, action, param1, param2, param3, param4, param5, param6); } @@ -1058,8 +1053,8 @@ public Subscription on(String target, Action6 Subscription on(String target, Action7 callback, Class param1, Class param2, Class param3, Class param4, Class param5, Class param6, Class param7) { ActionBase action = params -> { - callback.invoke(param1.cast(params[0]), param2.cast(params[1]), param3.cast(params[2]), param4.cast(params[3]), - param5.cast(params[4]), param6.cast(params[5]), param7.cast(params[6])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3]), Utils.cast(param5, params[4]), Utils.cast(param6, params[5]), Utils.cast(param7, params[6])); }; return registerHandler(target, action, param1, param2, param3, param4, param5, param6, param7); } @@ -1091,8 +1086,9 @@ public Subscription on(String target, Action7 Subscription on(String target, Action8 callback, Class param1, Class param2, Class param3, Class param4, Class param5, Class param6, Class param7, Class param8) { ActionBase action = params -> { - callback.invoke(param1.cast(params[0]), param2.cast(params[1]), param3.cast(params[2]), param4.cast(params[3]), - param5.cast(params[4]), param6.cast(params[5]), param7.cast(params[6]), param8.cast(params[7])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3]), Utils.cast(param5, params[4]), Utils.cast(param6, params[5]), Utils.cast(param7, params[6]), + Utils.cast(param8, params[7])); }; return registerHandler(target, action, param1, param2, param3, param4, param5, param6, param7, param8); } @@ -1108,9 +1104,10 @@ public Subscription on(String target, Action8 The first argument type. * @return A {@link Subscription} that can be disposed to unsubscribe from the hub method. */ - @SuppressWarnings("unchecked") public Subscription on(String target, Action1 callback, Type param1) { - ActionBase action = params -> callback.invoke((T1)Utils.typeToClass(param1).cast(params[0])); + ActionBase action = params -> { + callback.invoke(Utils.cast(param1, params[0])); + }; return registerHandler(target, action, param1); } @@ -1127,10 +1124,9 @@ public Subscription on(String target, Action1 callback, Type param1) { * @param The second parameter type. * @return A {@link Subscription} that can be disposed to unsubscribe from the hub method. */ - @SuppressWarnings("unchecked") public Subscription on(String target, Action2 callback, Type param1, Type param2) { ActionBase action = params -> { - callback.invoke((T1)Utils.typeToClass(param1).cast(params[0]), (T2)Utils.typeToClass(param2).cast(params[1])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1])); }; return registerHandler(target, action, param1, param2); } @@ -1150,12 +1146,10 @@ public Subscription on(String target, Action2 callback, Type pa * @param The third parameter type. * @return A {@link Subscription} that can be disposed to unsubscribe from the hub method. */ - @SuppressWarnings("unchecked") public Subscription on(String target, Action3 callback, Type param1, Type param2, Type param3) { ActionBase action = params -> { - callback.invoke((T1)Utils.typeToClass(param1).cast(params[0]), (T2)Utils.typeToClass(param2).cast(params[1]), - (T3)Utils.typeToClass(param3).cast(params[2])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2])); }; return registerHandler(target, action, param1, param2, param3); } @@ -1177,12 +1171,11 @@ public Subscription on(String target, Action3 callback, * @param The fourth parameter type. * @return A {@link Subscription} that can be disposed to unsubscribe from the hub method. */ - @SuppressWarnings("unchecked") public Subscription on(String target, Action4 callback, Type param1, Type param2, Type param3, Type param4) { ActionBase action = params -> { - callback.invoke((T1)Utils.typeToClass(param1).cast(params[0]), (T2)Utils.typeToClass(param2).cast(params[1]), - (T3)Utils.typeToClass(param3).cast(params[2]), (T4)Utils.typeToClass(param4).cast(params[3])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3])); }; return registerHandler(target, action, param1, param2, param3, param4); } @@ -1206,13 +1199,11 @@ public Subscription on(String target, Action4 c * @param The fifth parameter type. * @return A {@link Subscription} that can be disposed to unsubscribe from the hub method. */ - @SuppressWarnings("unchecked") public Subscription on(String target, Action5 callback, Type param1, Type param2, Type param3, Type param4, Type param5) { ActionBase action = params -> { - callback.invoke((T1)Utils.typeToClass(param1).cast(params[0]), (T2)Utils.typeToClass(param2).cast(params[1]), - (T3)Utils.typeToClass(param3).cast(params[2]), (T4)Utils.typeToClass(param4).cast(params[3]), - (T5)Utils.typeToClass(param5).cast(params[4])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3]), Utils.cast(param5, params[4])); }; return registerHandler(target, action, param1, param2, param3, param4, param5); } @@ -1238,13 +1229,11 @@ public Subscription on(String target, Action5 The sixth parameter type. * @return A {@link Subscription} that can be disposed to unsubscribe from the hub method. */ - @SuppressWarnings("unchecked") public Subscription on(String target, Action6 callback, Type param1, Type param2, Type param3, Type param4, Type param5, Type param6) { ActionBase action = params -> { - callback.invoke((T1)Utils.typeToClass(param1).cast(params[0]), (T2)Utils.typeToClass(param2).cast(params[1]), - (T3)Utils.typeToClass(param3).cast(params[2]), (T4)Utils.typeToClass(param4).cast(params[3]), - (T5)Utils.typeToClass(param5).cast(params[4]), (T6)Utils.typeToClass(param6).cast(params[5])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3]), Utils.cast(param5, params[4]), Utils.cast(param6, params[5])); }; return registerHandler(target, action, param1, param2, param3, param4, param5, param6); } @@ -1272,14 +1261,11 @@ public Subscription on(String target, Action6 The seventh parameter type. * @return A {@link Subscription} that can be disposed to unsubscribe from the hub method. */ - @SuppressWarnings("unchecked") public Subscription on(String target, Action7 callback, Type param1, Type param2, Type param3, Type param4, Type param5, Type param6, Type param7) { ActionBase action = params -> { - callback.invoke((T1)Utils.typeToClass(param1).cast(params[0]), (T2)Utils.typeToClass(param2).cast(params[1]), - (T3)Utils.typeToClass(param3).cast(params[2]), (T4)Utils.typeToClass(param4).cast(params[3]), - (T5)Utils.typeToClass(param5).cast(params[4]), (T6)Utils.typeToClass(param6).cast(params[5]), - (T7)Utils.typeToClass(param7).cast(params[6])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3]), Utils.cast(param5, params[4]), Utils.cast(param6, params[5]), Utils.cast(param7, params[6])); }; return registerHandler(target, action, param1, param2, param3, param4, param5, param6, param7); } @@ -1309,15 +1295,13 @@ public Subscription on(String target, Action7 The eighth parameter type. * @return A {@link Subscription} that can be disposed to unsubscribe from the hub method. */ - @SuppressWarnings("unchecked") public Subscription on(String target, Action8 callback, Type param1, Type param2, Type param3, Type param4, Type param5, Type param6, Type param7, Type param8) { ActionBase action = params -> { - callback.invoke((T1)Utils.typeToClass(param1).cast(params[0]), (T2)Utils.typeToClass(param2).cast(params[1]), - (T3)Utils.typeToClass(param3).cast(params[2]), (T4)Utils.typeToClass(param4).cast(params[3]), - (T5)Utils.typeToClass(param5).cast(params[4]), (T6)Utils.typeToClass(param6).cast(params[5]), - (T7)Utils.typeToClass(param7).cast(params[6]), (T8)Utils.typeToClass(param8).cast(params[7])); + callback.invoke(Utils.cast(param1, params[0]), Utils.cast(param2, params[1]), Utils.cast(param3, params[2]), + Utils.cast(param4, params[3]), Utils.cast(param5, params[4]), Utils.cast(param6, params[5]), Utils.cast(param7, params[6]), + Utils.cast(param8, params[7])); }; return registerHandler(target, action, param1, param2, param3, param4, param5, param6, param7, param8); } diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/TypeReference.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/TypeReference.java index 24213e663bc6..4bbe32e929cf 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/TypeReference.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/TypeReference.java @@ -3,36 +3,48 @@ package com.microsoft.signalr; +import java.lang.ClassCastException; import java.lang.reflect.Type; import java.lang.reflect.ParameterizedType; + /** - * A utility for getting a Java Type from a literal Class. + * A utility for getting a Java Type from a literal generic Class. */ -public class TypeReference { +public abstract class TypeReference { private final Type type; /** * Creates a new instance of {@link TypeReference}. * - * To get the Type of Class Foo, use the following syntax: + * This class implements Super Type Tokens (Gafter's Gadget) as a way to get a reference to generic types in + * spite of type erasure since, sadly, {@code Foo.class} is not valid Java. + * + * To get the Type of Class {@code Foo}, use the following syntax: *
{@code
-     * Type fooType = (new TypeReference() { }).getType();
+     * Type fooBarType = (new TypeReference>() { }).getType();
      * }
+ * + * To get the Type of class Foo, use a regular Type Token: + *
{@code
+     * Type fooType = Foo.class;
+     * }
+ * + * @see Super Type Tokens */ public TypeReference() { - Type superclass = getClass().getGenericSuperclass(); - if (superclass instanceof Class) { - throw new RuntimeException("Missing type parameter."); + try { + this.type = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + } catch (ClassCastException ex) { + throw new RuntimeException("TypeReference must be instantiated with a type parameter such as (new TypeReference>() {})."); } - this.type = ((ParameterizedType) superclass).getActualTypeArguments()[0]; } /** * Gets the referenced type. * @return The Type encapsulated by this TypeReference - */ + */ public Type getType() { return this.type; } diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/Utils.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/Utils.java index 45fc99d32f35..6bbfd288e613 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/Utils.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/Utils.java @@ -43,4 +43,18 @@ public static Class typeToClass(Type type) { throw new UnsupportedOperationException("Cannot handle type class: " + type.getClass()); } } + + @SuppressWarnings("unchecked") + public static T cast(Class returnClass, Object obj) { + // Primitive types can't be cast with the Class cast function + if (returnClass.isPrimitive()) { + return (T) obj; + } else { + return (T)returnClass.cast(obj); + } + } + + public static T cast(Type returnType, Object obj) { + return cast(typeToClass(returnType), obj); + } } \ No newline at end of file diff --git a/src/SignalR/clients/java/signalr/test/build.gradle b/src/SignalR/clients/java/signalr/test/build.gradle index 75a451b92986..2fefd54f6481 100644 --- a/src/SignalR/clients/java/signalr/test/build.gradle +++ b/src/SignalR/clients/java/signalr/test/build.gradle @@ -5,7 +5,7 @@ dependencies { compile 'org.junit.jupiter:junit-jupiter-params:5.3.1' runtime 'org.junit.jupiter:junit-jupiter-engine:5.3.1' implementation 'com.google.code.gson:gson:2.8.5' - testCompile 'org.slf4j:slf4j-jdk14:1.7.25' + compile 'ch.qos.logback:logback-classic:1.2.3' implementation project(':core') implementation project(':messagepack') compile project(':messagepack') diff --git a/src/SignalR/clients/java/signalr/test/signalr.client.java.Tests.javaproj b/src/SignalR/clients/java/signalr/test/signalr.client.java.Tests.javaproj index a3f8bee075f5..3962aeb47b60 100644 --- a/src/SignalR/clients/java/signalr/test/signalr.client.java.Tests.javaproj +++ b/src/SignalR/clients/java/signalr/test/signalr.client.java.Tests.javaproj @@ -6,8 +6,6 @@ true true - - false $(OutputPath) true @@ -37,8 +35,7 @@ - - + @@ -52,8 +49,8 @@ - - + + diff --git a/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java index 655bd807c01f..5839dd2f6633 100644 --- a/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java +++ b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java @@ -18,6 +18,7 @@ import org.junit.jupiter.api.Test; +import ch.qos.logback.classic.spi.ILoggingEvent; import io.reactivex.Completable; import io.reactivex.Observable; import io.reactivex.Single; @@ -1959,7 +1960,7 @@ public void sendWithTwoParamsTriggersOnHandler() { value1.set(param1); value2.set(param2); - }, String.class, Double.class); + }, String.class, double.class); hubConnection.start().timeout(30, TimeUnit.SECONDS).blockingAwait(); mockTransport.receiveMessage("{\"type\":1,\"target\":\"inc\",\"arguments\":[\"Hello World\", 12]}" + RECORD_SEPARATOR); @@ -1967,7 +1968,7 @@ public void sendWithTwoParamsTriggersOnHandler() { // Confirming that our handler was called and the correct message was passed in. assertEquals("Hello World", value1.get()); - assertEquals(Double.valueOf(12), value2.get()); + assertEquals(12d, value2.get().doubleValue()); } @Test @@ -2054,7 +2055,7 @@ public void sendWithFiveParamsTriggersOnHandler() { value3.set(param3); value4.set(param4); value5.set(param5); - }, String.class, String.class, String.class, Boolean.class, Double.class); + }, String.class, String.class, String.class, boolean.class, double.class); hubConnection.start().timeout(30, TimeUnit.SECONDS).blockingAwait(); mockTransport.receiveMessage("{\"type\":1,\"target\":\"inc\",\"arguments\":[\"A\", \"B\", \"C\",true,12 ]}" + RECORD_SEPARATOR); @@ -2063,8 +2064,8 @@ public void sendWithFiveParamsTriggersOnHandler() { assertEquals("A", value1.get()); assertEquals("B", value2.get()); assertEquals("C", value3.get()); - assertTrue(value4.get()); - assertEquals(Double.valueOf(12), value5.get()); + assertTrue(value4.get().booleanValue()); + assertEquals(12d, value5.get().doubleValue()); } @Test @@ -2093,7 +2094,7 @@ public void sendWithSixParamsTriggersOnHandler() { value4.set(param4); value5.set(param5); value6.set(param6); - }, String.class, String.class, String.class, Boolean.class, Double.class, String.class); + }, String.class, String.class, String.class, boolean.class, double.class, String.class); hubConnection.start().timeout(30, TimeUnit.SECONDS).blockingAwait(); mockTransport.receiveMessage("{\"type\":1,\"target\":\"inc\",\"arguments\":[\"A\", \"B\", \"C\",true,12,\"D\"]}" + RECORD_SEPARATOR); @@ -2102,8 +2103,8 @@ public void sendWithSixParamsTriggersOnHandler() { assertEquals("A", value1.get()); assertEquals("B", value2.get()); assertEquals("C", value3.get()); - assertTrue(value4.get()); - assertEquals(Double.valueOf(12), value5.get()); + assertTrue(value4.get().booleanValue()); + assertEquals(12d, value5.get().doubleValue()); assertEquals("D", value6.get()); } @@ -2136,7 +2137,7 @@ public void sendWithSevenParamsTriggersOnHandler() { value5.set(param5); value6.set(param6); value7.set(param7); - }, String.class, String.class, String.class, Boolean.class, Double.class, String.class, String.class); + }, String.class, String.class, String.class, boolean.class, double.class, String.class, String.class); hubConnection.start().timeout(30, TimeUnit.SECONDS).blockingAwait(); mockTransport.receiveMessage("{\"type\":1,\"target\":\"inc\",\"arguments\":[\"A\", \"B\", \"C\",true,12,\"D\",\"E\"]}" + RECORD_SEPARATOR); @@ -2145,8 +2146,8 @@ public void sendWithSevenParamsTriggersOnHandler() { assertEquals("A", value1.get()); assertEquals("B", value2.get()); assertEquals("C", value3.get()); - assertTrue(value4.get()); - assertEquals(Double.valueOf(12), value5.get()); + assertTrue(value4.get().booleanValue()); + assertEquals(12d, value5.get().doubleValue()); assertEquals("D", value6.get()); assertEquals("E", value7.get()); } @@ -2183,7 +2184,7 @@ public void sendWithEightParamsTriggersOnHandler() { value6.set(param6); value7.set(param7); value8.set(param8); - }, String.class, String.class, String.class, Boolean.class, Double.class, String.class, String.class, String.class); + }, String.class, String.class, String.class, boolean.class, double.class, String.class, String.class, String.class); hubConnection.start().timeout(30, TimeUnit.SECONDS).blockingAwait(); mockTransport.receiveMessage("{\"type\":1,\"target\":\"inc\",\"arguments\":[\"A\", \"B\", \"C\",true,12,\"D\",\"E\",\"F\"]}" + RECORD_SEPARATOR); @@ -2191,8 +2192,8 @@ public void sendWithEightParamsTriggersOnHandler() { assertEquals("A", value1.get()); assertEquals("B", value2.get()); assertEquals("C", value3.get()); - assertTrue(value4.get()); - assertEquals(Double.valueOf(12), value5.get()); + assertTrue(value4.get().booleanValue()); + assertEquals(12d, value5.get().doubleValue()); assertEquals("D", value6.get()); assertEquals("E", value7.get()); assertEquals("F", value8.get()); @@ -2565,6 +2566,37 @@ public void sendWithCustomObjectTriggersOnHandlerWithMessagePack() { assertEquals((short) 5, (short) person.getT()); } + @Test + public void throwFromOnHandlerRunsAllHandlers() { + AtomicReference value1 = new AtomicReference<>(); + AtomicReference value2 = new AtomicReference<>(); + + try (TestLogger logger = new TestLogger()) { + MockTransport mockTransport = new MockTransport(); + HubConnection hubConnection = TestUtils.createHubConnection("http://example.com", mockTransport); + + hubConnection.on("inc", (param1) -> { + value1.set(param1); + throw new RuntimeException("throw from on handler"); + }, String.class); + hubConnection.on("inc", (param1) -> { + value2.set(param1); + }, String.class); + + hubConnection.start().timeout(1, TimeUnit.SECONDS).blockingAwait(); + mockTransport.receiveMessage("{\"type\":1,\"target\":\"inc\",\"arguments\":[\"Hello World\"]}" + RECORD_SEPARATOR); + + // Confirming that our handler was called and the correct message was passed in. + assertEquals("Hello World", value1.get()); + assertEquals("Hello World", value2.get()); + + hubConnection.stop().timeout(1, TimeUnit.SECONDS).blockingAwait(); + + ILoggingEvent log = logger.assertLog("Invoking client side method 'inc' failed:"); + assertEquals("throw from on handler", log.getThrowableProxy().getMessage()); + } + } + @Test public void receiveHandshakeResponseAndMessage() { AtomicReference value = new AtomicReference(0.0); diff --git a/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/TestLogger.java b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/TestLogger.java new file mode 100644 index 000000000000..2bc1a58eae66 --- /dev/null +++ b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/TestLogger.java @@ -0,0 +1,45 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +package com.microsoft.signalr; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.slf4j.LoggerFactory; + +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.read.ListAppender; + +class TestLogger implements AutoCloseable { + private Logger logger; + private ListAppender appender; + + public TestLogger() { + this("com.microsoft.signalr.HubConnection"); + } + + public TestLogger(String category) { + this.logger = (Logger)LoggerFactory.getLogger(category); + this.appender = new ListAppender(); + this.appender.start(); + this.logger.addAppender(this.appender); + } + + public ILoggingEvent assertLog(String logMessage) { + for (ILoggingEvent log : appender.list) { + if (log.getFormattedMessage().startsWith(logMessage)) { + return log; + } + } + + assertTrue(false, String.format("Log message '%s' not found", logMessage)); + return null; + } + + @Override + public void close() { + this.logger.detachAppender(this.appender); + } + +} \ No newline at end of file diff --git a/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Shipped.txt b/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Unshipped.txt b/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..049d88f7fa31 --- /dev/null +++ b/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Unshipped.txt @@ -0,0 +1,34 @@ +#nullable enable +Microsoft.AspNetCore.Http.Connections.AvailableTransport +Microsoft.AspNetCore.Http.Connections.AvailableTransport.AvailableTransport() -> void +Microsoft.AspNetCore.Http.Connections.HttpTransportType +Microsoft.AspNetCore.Http.Connections.HttpTransportType.LongPolling = 4 -> Microsoft.AspNetCore.Http.Connections.HttpTransportType +Microsoft.AspNetCore.Http.Connections.HttpTransportType.None = 0 -> Microsoft.AspNetCore.Http.Connections.HttpTransportType +Microsoft.AspNetCore.Http.Connections.HttpTransportType.ServerSentEvents = 2 -> Microsoft.AspNetCore.Http.Connections.HttpTransportType +Microsoft.AspNetCore.Http.Connections.HttpTransportType.WebSockets = 1 -> Microsoft.AspNetCore.Http.Connections.HttpTransportType +Microsoft.AspNetCore.Http.Connections.HttpTransports +Microsoft.AspNetCore.Http.Connections.NegotiateProtocol +Microsoft.AspNetCore.Http.Connections.NegotiationResponse +Microsoft.AspNetCore.Http.Connections.NegotiationResponse.NegotiationResponse() -> void +Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Version.get -> int +Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Version.set -> void +static readonly Microsoft.AspNetCore.Http.Connections.HttpTransports.All -> Microsoft.AspNetCore.Http.Connections.HttpTransportType +~Microsoft.AspNetCore.Http.Connections.AvailableTransport.TransferFormats.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Http.Connections.AvailableTransport.TransferFormats.set -> void +~Microsoft.AspNetCore.Http.Connections.AvailableTransport.Transport.get -> string +~Microsoft.AspNetCore.Http.Connections.AvailableTransport.Transport.set -> void +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.AccessToken.get -> string +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.AccessToken.set -> void +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.AvailableTransports.get -> System.Collections.Generic.IList +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.AvailableTransports.set -> void +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.ConnectionId.get -> string +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.ConnectionId.set -> void +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.ConnectionToken.get -> string +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.ConnectionToken.set -> void +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Error.get -> string +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Error.set -> void +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Url.get -> string +~Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Url.set -> void +~static Microsoft.AspNetCore.Http.Connections.NegotiateProtocol.ParseResponse(System.IO.Stream content) -> Microsoft.AspNetCore.Http.Connections.NegotiationResponse +~static Microsoft.AspNetCore.Http.Connections.NegotiateProtocol.ParseResponse(System.ReadOnlySpan content) -> Microsoft.AspNetCore.Http.Connections.NegotiationResponse +~static Microsoft.AspNetCore.Http.Connections.NegotiateProtocol.WriteResponse(Microsoft.AspNetCore.Http.Connections.NegotiationResponse response, System.Buffers.IBufferWriter output) -> void diff --git a/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionDispatcher.cs b/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionDispatcher.cs index d20503d63e4b..7134abc1f90d 100644 --- a/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionDispatcher.cs +++ b/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionDispatcher.cs @@ -580,7 +580,7 @@ private static void CloneUser(HttpContext newContext, HttpContext oldContext) if (oldContext.User.Identity is WindowsIdentity windowsIdentity) { var skipFirstIdentity = false; - if (oldContext.User is WindowsPrincipal) + if (OperatingSystem.IsWindows() && oldContext.User is WindowsPrincipal) { // We want to explicitly create a WindowsPrincipal instead of a ClaimsPrincipal // so methods that WindowsPrincipal overrides like 'IsInRole', work as expected. diff --git a/src/SignalR/common/Http.Connections/src/PublicAPI.Shipped.txt b/src/SignalR/common/Http.Connections/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/common/Http.Connections/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/common/Http.Connections/src/PublicAPI.Unshipped.txt b/src/SignalR/common/Http.Connections/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..58ac96dde9b1 --- /dev/null +++ b/src/SignalR/common/Http.Connections/src/PublicAPI.Unshipped.txt @@ -0,0 +1,51 @@ +#nullable enable +Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilder +Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilder.Add(System.Action! convention) -> void +Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilderExtensions +Microsoft.AspNetCore.Http.Connections.ConnectionOptions +Microsoft.AspNetCore.Http.Connections.ConnectionOptions.ConnectionOptions() -> void +Microsoft.AspNetCore.Http.Connections.ConnectionOptions.DisconnectTimeout.get -> System.TimeSpan? +Microsoft.AspNetCore.Http.Connections.ConnectionOptions.DisconnectTimeout.set -> void +Microsoft.AspNetCore.Http.Connections.ConnectionOptionsSetup +Microsoft.AspNetCore.Http.Connections.ConnectionOptionsSetup.Configure(Microsoft.AspNetCore.Http.Connections.ConnectionOptions! options) -> void +Microsoft.AspNetCore.Http.Connections.ConnectionOptionsSetup.ConnectionOptionsSetup() -> void +Microsoft.AspNetCore.Http.Connections.Features.IHttpContextFeature +Microsoft.AspNetCore.Http.Connections.Features.IHttpContextFeature.HttpContext.get -> Microsoft.AspNetCore.Http.HttpContext! +Microsoft.AspNetCore.Http.Connections.Features.IHttpContextFeature.HttpContext.set -> void +Microsoft.AspNetCore.Http.Connections.Features.IHttpTransportFeature +Microsoft.AspNetCore.Http.Connections.Features.IHttpTransportFeature.TransportType.get -> Microsoft.AspNetCore.Http.Connections.HttpTransportType +Microsoft.AspNetCore.Http.Connections.HttpConnectionContextExtensions +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.ApplicationMaxBufferSize.get -> long +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.ApplicationMaxBufferSize.set -> void +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.AuthorizationData.get -> System.Collections.Generic.IList! +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.HttpConnectionDispatcherOptions() -> void +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.LongPolling.get -> Microsoft.AspNetCore.Http.Connections.LongPollingOptions! +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.MinimumProtocolVersion.get -> int +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.MinimumProtocolVersion.set -> void +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.TransportMaxBufferSize.get -> long +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.TransportMaxBufferSize.set -> void +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.Transports.get -> Microsoft.AspNetCore.Http.Connections.HttpTransportType +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.Transports.set -> void +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.WebSockets.get -> Microsoft.AspNetCore.Http.Connections.WebSocketOptions! +Microsoft.AspNetCore.Http.Connections.LongPollingOptions +Microsoft.AspNetCore.Http.Connections.LongPollingOptions.LongPollingOptions() -> void +Microsoft.AspNetCore.Http.Connections.LongPollingOptions.PollTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Http.Connections.LongPollingOptions.PollTimeout.set -> void +Microsoft.AspNetCore.Http.Connections.NegotiateMetadata +Microsoft.AspNetCore.Http.Connections.NegotiateMetadata.NegotiateMetadata() -> void +Microsoft.AspNetCore.Http.Connections.WebSocketOptions +Microsoft.AspNetCore.Http.Connections.WebSocketOptions.CloseTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.Http.Connections.WebSocketOptions.CloseTimeout.set -> void +Microsoft.AspNetCore.Http.Connections.WebSocketOptions.SubProtocolSelector.get -> System.Func!, string!>? +Microsoft.AspNetCore.Http.Connections.WebSocketOptions.SubProtocolSelector.set -> void +Microsoft.AspNetCore.Http.Connections.WebSocketOptions.WebSocketOptions() -> void +Microsoft.Extensions.DependencyInjection.ConnectionsDependencyInjectionExtensions +static Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilderExtensions.MapConnectionHandler(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! pattern) -> Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilder! +static Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilderExtensions.MapConnectionHandler(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! pattern, System.Action? configureOptions) -> Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilder! +static Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilderExtensions.MapConnections(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! pattern, Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions! options, System.Action! configure) -> Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilder! +static Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilderExtensions.MapConnections(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! pattern, System.Action! configure) -> Microsoft.AspNetCore.Builder.ConnectionEndpointRouteBuilder! +static Microsoft.AspNetCore.Http.Connections.ConnectionOptionsSetup.DefaultDisconectTimeout -> System.TimeSpan +static Microsoft.AspNetCore.Http.Connections.HttpConnectionContextExtensions.GetHttpContext(this Microsoft.AspNetCore.Connections.ConnectionContext! connection) -> Microsoft.AspNetCore.Http.HttpContext? +static Microsoft.Extensions.DependencyInjection.ConnectionsDependencyInjectionExtensions.AddConnections(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.ConnectionsDependencyInjectionExtensions.AddConnections(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! options) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/SignalR/common/Protocols.Json/src/PublicAPI.Shipped.txt b/src/SignalR/common/Protocols.Json/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/common/Protocols.Json/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/common/Protocols.Json/src/PublicAPI.Unshipped.txt b/src/SignalR/common/Protocols.Json/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..17f714ed421c --- /dev/null +++ b/src/SignalR/common/Protocols.Json/src/PublicAPI.Unshipped.txt @@ -0,0 +1,18 @@ +#nullable enable +Microsoft.AspNetCore.SignalR.JsonHubProtocolOptions +Microsoft.AspNetCore.SignalR.JsonHubProtocolOptions.JsonHubProtocolOptions() -> void +Microsoft.AspNetCore.SignalR.JsonHubProtocolOptions.PayloadSerializerOptions.get -> System.Text.Json.JsonSerializerOptions! +Microsoft.AspNetCore.SignalR.JsonHubProtocolOptions.PayloadSerializerOptions.set -> void +Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol +Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.IsVersionSupported(int version) -> bool +Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.JsonHubProtocol() -> void +Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.TransferFormat.get -> Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.Version.get -> int +Microsoft.Extensions.DependencyInjection.JsonProtocolDependencyInjectionExtensions +static Microsoft.Extensions.DependencyInjection.JsonProtocolDependencyInjectionExtensions.AddJsonProtocol(this TBuilder builder) -> TBuilder +static Microsoft.Extensions.DependencyInjection.JsonProtocolDependencyInjectionExtensions.AddJsonProtocol(this TBuilder builder, System.Action! configure) -> TBuilder +~Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.GetMessageBytes(Microsoft.AspNetCore.SignalR.Protocol.HubMessage message) -> System.ReadOnlyMemory +~Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.JsonHubProtocol(Microsoft.Extensions.Options.IOptions options) -> void +~Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.Name.get -> string +~Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.TryParseMessage(ref System.Buffers.ReadOnlySequence input, Microsoft.AspNetCore.SignalR.IInvocationBinder binder, out Microsoft.AspNetCore.SignalR.Protocol.HubMessage message) -> bool +~Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.WriteMessage(Microsoft.AspNetCore.SignalR.Protocol.HubMessage message, System.Buffers.IBufferWriter output) -> void diff --git a/src/SignalR/common/Protocols.MessagePack/src/PublicAPI.Shipped.txt b/src/SignalR/common/Protocols.MessagePack/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/common/Protocols.MessagePack/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/common/Protocols.MessagePack/src/PublicAPI.Unshipped.txt b/src/SignalR/common/Protocols.MessagePack/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..fe7020d8615e --- /dev/null +++ b/src/SignalR/common/Protocols.MessagePack/src/PublicAPI.Unshipped.txt @@ -0,0 +1,18 @@ +#nullable enable +Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions +Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions.MessagePackHubProtocolOptions() -> void +Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions.SerializerOptions.get -> MessagePack.MessagePackSerializerOptions! +Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions.SerializerOptions.set -> void +Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol +Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol.IsVersionSupported(int version) -> bool +Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol.MessagePackHubProtocol() -> void +Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol.TransferFormat.get -> Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol.Version.get -> int +Microsoft.Extensions.DependencyInjection.MessagePackProtocolDependencyInjectionExtensions +static Microsoft.Extensions.DependencyInjection.MessagePackProtocolDependencyInjectionExtensions.AddMessagePackProtocol(this TBuilder builder) -> TBuilder +static Microsoft.Extensions.DependencyInjection.MessagePackProtocolDependencyInjectionExtensions.AddMessagePackProtocol(this TBuilder builder, System.Action! configure) -> TBuilder +~Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol.GetMessageBytes(Microsoft.AspNetCore.SignalR.Protocol.HubMessage message) -> System.ReadOnlyMemory +~Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol.MessagePackHubProtocol(Microsoft.Extensions.Options.IOptions options) -> void +~Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol.Name.get -> string +~Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol.TryParseMessage(ref System.Buffers.ReadOnlySequence input, Microsoft.AspNetCore.SignalR.IInvocationBinder binder, out Microsoft.AspNetCore.SignalR.Protocol.HubMessage message) -> bool +~Microsoft.AspNetCore.SignalR.Protocol.MessagePackHubProtocol.WriteMessage(Microsoft.AspNetCore.SignalR.Protocol.HubMessage message, System.Buffers.IBufferWriter output) -> void diff --git a/src/SignalR/common/Protocols.NewtonsoftJson/src/PublicAPI.Shipped.txt b/src/SignalR/common/Protocols.NewtonsoftJson/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/common/Protocols.NewtonsoftJson/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/common/Protocols.NewtonsoftJson/src/PublicAPI.Unshipped.txt b/src/SignalR/common/Protocols.NewtonsoftJson/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..e9547db187f0 --- /dev/null +++ b/src/SignalR/common/Protocols.NewtonsoftJson/src/PublicAPI.Unshipped.txt @@ -0,0 +1,19 @@ +#nullable enable +Microsoft.AspNetCore.SignalR.NewtonsoftJsonHubProtocolOptions +Microsoft.AspNetCore.SignalR.NewtonsoftJsonHubProtocolOptions.NewtonsoftJsonHubProtocolOptions() -> void +Microsoft.AspNetCore.SignalR.NewtonsoftJsonHubProtocolOptions.PayloadSerializerSettings.get -> Newtonsoft.Json.JsonSerializerSettings! +Microsoft.AspNetCore.SignalR.NewtonsoftJsonHubProtocolOptions.PayloadSerializerSettings.set -> void +Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol +Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.IsVersionSupported(int version) -> bool +Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.NewtonsoftJsonHubProtocol() -> void +Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.TransferFormat.get -> Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.Version.get -> int +Microsoft.Extensions.DependencyInjection.NewtonsoftJsonProtocolDependencyInjectionExtensions +static Microsoft.Extensions.DependencyInjection.NewtonsoftJsonProtocolDependencyInjectionExtensions.AddNewtonsoftJsonProtocol(this TBuilder builder) -> TBuilder +static Microsoft.Extensions.DependencyInjection.NewtonsoftJsonProtocolDependencyInjectionExtensions.AddNewtonsoftJsonProtocol(this TBuilder builder, System.Action! configure) -> TBuilder +~Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.GetMessageBytes(Microsoft.AspNetCore.SignalR.Protocol.HubMessage message) -> System.ReadOnlyMemory +~Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.Name.get -> string +~Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.NewtonsoftJsonHubProtocol(Microsoft.Extensions.Options.IOptions options) -> void +~Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.PayloadSerializer.get -> Newtonsoft.Json.JsonSerializer +~Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.TryParseMessage(ref System.Buffers.ReadOnlySequence input, Microsoft.AspNetCore.SignalR.IInvocationBinder binder, out Microsoft.AspNetCore.SignalR.Protocol.HubMessage message) -> bool +~Microsoft.AspNetCore.SignalR.Protocol.NewtonsoftJsonHubProtocol.WriteMessage(Microsoft.AspNetCore.SignalR.Protocol.HubMessage message, System.Buffers.IBufferWriter output) -> void diff --git a/src/SignalR/common/SignalR.Common/src/PublicAPI.Shipped.txt b/src/SignalR/common/SignalR.Common/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/common/SignalR.Common/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/common/SignalR.Common/src/PublicAPI.Unshipped.txt b/src/SignalR/common/SignalR.Common/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..0328a4f1d2f1 --- /dev/null +++ b/src/SignalR/common/SignalR.Common/src/PublicAPI.Unshipped.txt @@ -0,0 +1,97 @@ +#nullable enable +Microsoft.AspNetCore.SignalR.HubException +Microsoft.AspNetCore.SignalR.HubException.HubException() -> void +Microsoft.AspNetCore.SignalR.HubException.HubException(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void +Microsoft.AspNetCore.SignalR.HubException.HubException(string? message) -> void +Microsoft.AspNetCore.SignalR.HubException.HubException(string? message, System.Exception? innerException) -> void +Microsoft.AspNetCore.SignalR.IInvocationBinder +Microsoft.AspNetCore.SignalR.IInvocationBinder.GetParameterTypes(string! methodName) -> System.Collections.Generic.IReadOnlyList! +Microsoft.AspNetCore.SignalR.IInvocationBinder.GetReturnType(string! invocationId) -> System.Type! +Microsoft.AspNetCore.SignalR.IInvocationBinder.GetStreamItemType(string! streamId) -> System.Type! +Microsoft.AspNetCore.SignalR.ISignalRBuilder +Microsoft.AspNetCore.SignalR.ISignalRBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +Microsoft.AspNetCore.SignalR.Protocol.CancelInvocationMessage +Microsoft.AspNetCore.SignalR.Protocol.CancelInvocationMessage.CancelInvocationMessage(string! invocationId) -> void +Microsoft.AspNetCore.SignalR.Protocol.CloseMessage +Microsoft.AspNetCore.SignalR.Protocol.CloseMessage.AllowReconnect.get -> bool +Microsoft.AspNetCore.SignalR.Protocol.CloseMessage.CloseMessage(string? error) -> void +Microsoft.AspNetCore.SignalR.Protocol.CloseMessage.CloseMessage(string? error, bool allowReconnect) -> void +Microsoft.AspNetCore.SignalR.Protocol.CloseMessage.Error.get -> string? +Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage +Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage.CompletionMessage(string! invocationId, string? error, object? result, bool hasResult) -> void +Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage.Error.get -> string? +Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage.HasResult.get -> bool +Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage.Result.get -> object? +Microsoft.AspNetCore.SignalR.Protocol.HandshakeProtocol +Microsoft.AspNetCore.SignalR.Protocol.HandshakeRequestMessage +Microsoft.AspNetCore.SignalR.Protocol.HandshakeRequestMessage.HandshakeRequestMessage(string! protocol, int version) -> void +Microsoft.AspNetCore.SignalR.Protocol.HandshakeRequestMessage.Protocol.get -> string! +Microsoft.AspNetCore.SignalR.Protocol.HandshakeRequestMessage.Version.get -> int +Microsoft.AspNetCore.SignalR.Protocol.HandshakeResponseMessage +Microsoft.AspNetCore.SignalR.Protocol.HandshakeResponseMessage.Error.get -> string? +Microsoft.AspNetCore.SignalR.Protocol.HandshakeResponseMessage.HandshakeResponseMessage(string? error) -> void +Microsoft.AspNetCore.SignalR.Protocol.HubInvocationMessage +Microsoft.AspNetCore.SignalR.Protocol.HubInvocationMessage.Headers.get -> System.Collections.Generic.IDictionary? +Microsoft.AspNetCore.SignalR.Protocol.HubInvocationMessage.Headers.set -> void +Microsoft.AspNetCore.SignalR.Protocol.HubInvocationMessage.HubInvocationMessage(string? invocationId) -> void +Microsoft.AspNetCore.SignalR.Protocol.HubInvocationMessage.InvocationId.get -> string? +Microsoft.AspNetCore.SignalR.Protocol.HubMessage +Microsoft.AspNetCore.SignalR.Protocol.HubMessage.HubMessage() -> void +Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage +Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage.Arguments.get -> object?[]? +Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage.HubMethodInvocationMessage(string? invocationId, string! target, object?[]? arguments) -> void +Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage.HubMethodInvocationMessage(string? invocationId, string! target, object?[]? arguments, string![]? streamIds) -> void +Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage.StreamIds.get -> string![]? +Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage.Target.get -> string! +Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants +Microsoft.AspNetCore.SignalR.Protocol.HubProtocolExtensions +Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol +Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol.GetMessageBytes(Microsoft.AspNetCore.SignalR.Protocol.HubMessage! message) -> System.ReadOnlyMemory +Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol.IsVersionSupported(int version) -> bool +Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol.Name.get -> string! +Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol.TransferFormat.get -> Microsoft.AspNetCore.Connections.TransferFormat +Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol.TryParseMessage(ref System.Buffers.ReadOnlySequence input, Microsoft.AspNetCore.SignalR.IInvocationBinder! binder, out Microsoft.AspNetCore.SignalR.Protocol.HubMessage! message) -> bool +Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol.Version.get -> int +Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol.WriteMessage(Microsoft.AspNetCore.SignalR.Protocol.HubMessage! message, System.Buffers.IBufferWriter! output) -> void +Microsoft.AspNetCore.SignalR.Protocol.InvocationBindingFailureMessage +Microsoft.AspNetCore.SignalR.Protocol.InvocationBindingFailureMessage.BindingFailure.get -> System.Runtime.ExceptionServices.ExceptionDispatchInfo! +Microsoft.AspNetCore.SignalR.Protocol.InvocationBindingFailureMessage.InvocationBindingFailureMessage(string! invocationId, string! target, System.Runtime.ExceptionServices.ExceptionDispatchInfo! bindingFailure) -> void +Microsoft.AspNetCore.SignalR.Protocol.InvocationBindingFailureMessage.Target.get -> string! +Microsoft.AspNetCore.SignalR.Protocol.InvocationMessage +Microsoft.AspNetCore.SignalR.Protocol.InvocationMessage.InvocationMessage(string! target, object?[]? arguments) -> void +Microsoft.AspNetCore.SignalR.Protocol.InvocationMessage.InvocationMessage(string? invocationId, string! target, object?[]? arguments) -> void +Microsoft.AspNetCore.SignalR.Protocol.InvocationMessage.InvocationMessage(string? invocationId, string! target, object?[]? arguments, string![]? streamIds) -> void +Microsoft.AspNetCore.SignalR.Protocol.PingMessage +Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage +Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage.BindingFailure.get -> System.Runtime.ExceptionServices.ExceptionDispatchInfo! +Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage.Id.get -> string! +Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage.StreamBindingFailureMessage(string! id, System.Runtime.ExceptionServices.ExceptionDispatchInfo! bindingFailure) -> void +Microsoft.AspNetCore.SignalR.Protocol.StreamInvocationMessage +Microsoft.AspNetCore.SignalR.Protocol.StreamInvocationMessage.StreamInvocationMessage(string! invocationId, string! target, object![]! arguments) -> void +Microsoft.AspNetCore.SignalR.Protocol.StreamInvocationMessage.StreamInvocationMessage(string! invocationId, string! target, object![]! arguments, string![]! streamIds) -> void +Microsoft.AspNetCore.SignalR.Protocol.StreamItemMessage +Microsoft.AspNetCore.SignalR.Protocol.StreamItemMessage.Item.get -> object? +Microsoft.AspNetCore.SignalR.Protocol.StreamItemMessage.StreamItemMessage(string! invocationId, object? item) -> void +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CancelInvocationMessageType = 5 -> int +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CloseMessageType = 7 -> int +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CompletionMessageType = 3 -> int +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.InvocationMessageType = 1 -> int +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.PingMessageType = 6 -> int +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.StreamInvocationMessageType = 4 -> int +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.StreamItemMessageType = 2 -> int +override Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage.ToString() -> string! +override Microsoft.AspNetCore.SignalR.Protocol.InvocationMessage.ToString() -> string! +override Microsoft.AspNetCore.SignalR.Protocol.StreamInvocationMessage.ToString() -> string! +override Microsoft.AspNetCore.SignalR.Protocol.StreamItemMessage.ToString() -> string! +static Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage.Empty(string! invocationId) -> Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage! +static Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage.WithError(string! invocationId, string! error) -> Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage! +static Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage.WithResult(string! invocationId, object! payload) -> Microsoft.AspNetCore.SignalR.Protocol.CompletionMessage! +static Microsoft.AspNetCore.SignalR.Protocol.HandshakeProtocol.GetSuccessfulHandshake(Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol! protocol) -> System.ReadOnlySpan +static Microsoft.AspNetCore.SignalR.Protocol.HandshakeProtocol.TryParseRequestMessage(ref System.Buffers.ReadOnlySequence buffer, out Microsoft.AspNetCore.SignalR.Protocol.HandshakeRequestMessage? requestMessage) -> bool +static Microsoft.AspNetCore.SignalR.Protocol.HandshakeProtocol.TryParseResponseMessage(ref System.Buffers.ReadOnlySequence buffer, out Microsoft.AspNetCore.SignalR.Protocol.HandshakeResponseMessage? responseMessage) -> bool +static Microsoft.AspNetCore.SignalR.Protocol.HandshakeProtocol.WriteRequestMessage(Microsoft.AspNetCore.SignalR.Protocol.HandshakeRequestMessage! requestMessage, System.Buffers.IBufferWriter! output) -> void +static Microsoft.AspNetCore.SignalR.Protocol.HandshakeProtocol.WriteResponseMessage(Microsoft.AspNetCore.SignalR.Protocol.HandshakeResponseMessage! responseMessage, System.Buffers.IBufferWriter! output) -> void +static Microsoft.AspNetCore.SignalR.Protocol.HubProtocolExtensions.GetMessageBytes(this Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol! hubProtocol, Microsoft.AspNetCore.SignalR.Protocol.HubMessage! message) -> byte[]! +static readonly Microsoft.AspNetCore.SignalR.Protocol.CloseMessage.Empty -> Microsoft.AspNetCore.SignalR.Protocol.CloseMessage! +static readonly Microsoft.AspNetCore.SignalR.Protocol.HandshakeResponseMessage.Empty -> Microsoft.AspNetCore.SignalR.Protocol.HandshakeResponseMessage! +static readonly Microsoft.AspNetCore.SignalR.Protocol.PingMessage.Instance -> Microsoft.AspNetCore.SignalR.Protocol.PingMessage! diff --git a/src/SignalR/server/Core/src/ClientProxyExtensions.cs b/src/SignalR/server/Core/src/ClientProxyExtensions.cs index 2226006a0b5d..2f202bcfadfb 100644 --- a/src/SignalR/server/Core/src/ClientProxyExtensions.cs +++ b/src/SignalR/server/Core/src/ClientProxyExtensions.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -20,6 +21,7 @@ public static class ClientProxyExtensions /// The name of the method to invoke. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, Array.Empty(), cancellationToken); @@ -34,6 +36,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, Cance /// The first argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1 }, cancellationToken); @@ -49,6 +52,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, objec /// The second argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, object? arg2, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1, arg2 }, cancellationToken); @@ -65,6 +69,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, objec /// The third argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, object? arg2, object? arg3, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1, arg2, arg3 }, cancellationToken); @@ -82,6 +87,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, objec /// The fourth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, object? arg2, object? arg3, object? arg4, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1, arg2, arg3, arg4 }, cancellationToken); @@ -100,6 +106,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, objec /// The fifth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1, arg2, arg3, arg4, arg5 }, cancellationToken); @@ -119,6 +126,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, objec /// The sixth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1, arg2, arg3, arg4, arg5, arg6 }, cancellationToken); @@ -139,6 +147,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, objec /// The seventh argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7 }, cancellationToken); @@ -160,6 +169,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, objec /// The eigth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 }, cancellationToken); @@ -182,6 +192,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, objec /// The ninth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 }, cancellationToken); @@ -205,6 +216,7 @@ public static Task SendAsync(this IClientProxy clientProxy, string method, objec /// The tenth argument. /// The token to monitor for cancellation requests. The default value is . /// A that represents the asynchronous invoke. + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public static Task SendAsync(this IClientProxy clientProxy, string method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, object? arg10, CancellationToken cancellationToken = default) { return clientProxy.SendCoreAsync(method, new[] { arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10 }, cancellationToken); diff --git a/src/SignalR/server/Core/src/HubConnectionContext.cs b/src/SignalR/server/Core/src/HubConnectionContext.cs index 9f94b6a8b0d4..08913ae1395a 100644 --- a/src/SignalR/server/Core/src/HubConnectionContext.cs +++ b/src/SignalR/server/Core/src/HubConnectionContext.cs @@ -6,6 +6,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.IO.Pipelines; using System.Security.Claims; using System.Threading; @@ -146,15 +147,21 @@ internal StreamTracker StreamTracker // Currently used only for streaming methods internal ConcurrentDictionary ActiveRequestCancellationSources { get; } = new ConcurrentDictionary(StringComparer.Ordinal); + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public virtual ValueTask WriteAsync(HubMessage message, CancellationToken cancellationToken = default) + { + return WriteAsync(message, ignoreAbort: false, cancellationToken); + } + + internal ValueTask WriteAsync(HubMessage message, bool ignoreAbort, CancellationToken cancellationToken = default) { // Try to grab the lock synchronously, if we fail, go to the slower path if (!_writeLock.Wait(0)) { - return new ValueTask(WriteSlowAsync(message, cancellationToken)); + return new ValueTask(WriteSlowAsync(message, ignoreAbort, cancellationToken)); } - if (_connectionAborted) + if (_connectionAborted && !ignoreAbort) { _writeLock.Release(); return default; @@ -182,6 +189,7 @@ public virtual ValueTask WriteAsync(HubMessage message, CancellationToken cancel /// The serialization cache to use. /// The token to monitor for cancellation requests. The default value is . /// + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple overloads with optional parameters", Justification = "Required to maintain compatibility")] public virtual ValueTask WriteAsync(SerializedHubMessage message, CancellationToken cancellationToken = default) { // Try to grab the lock synchronously, if we fail, go to the slower path @@ -272,14 +280,14 @@ private async Task CompleteWriteAsync(ValueTask task) } } - private async Task WriteSlowAsync(HubMessage message, CancellationToken cancellationToken) + private async Task WriteSlowAsync(HubMessage message, bool ignoreAbort, CancellationToken cancellationToken) { // Failed to get the lock immediately when entering WriteAsync so await until it is available await _writeLock.WaitAsync(cancellationToken); try { - if (_connectionAborted) + if (_connectionAborted && !ignoreAbort) { return; } @@ -301,7 +309,7 @@ private async Task WriteSlowAsync(HubMessage message, CancellationToken cancella private async Task WriteSlowAsync(SerializedHubMessage message, CancellationToken cancellationToken) { // Failed to get the lock immediately when entering WriteAsync so await until it is available - await _writeLock.WaitAsync(); + await _writeLock.WaitAsync(cancellationToken); try { diff --git a/src/SignalR/server/Core/src/HubConnectionHandler.cs b/src/SignalR/server/Core/src/HubConnectionHandler.cs index d2d77e0fe669..a16f42f490cf 100644 --- a/src/SignalR/server/Core/src/HubConnectionHandler.cs +++ b/src/SignalR/server/Core/src/HubConnectionHandler.cs @@ -226,7 +226,7 @@ private async Task SendCloseAsync(HubConnectionContext connection, Exception? ex try { - await connection.WriteAsync(closeMessage); + await connection.WriteAsync(closeMessage, ignoreAbort: true); } catch (Exception ex) { diff --git a/src/SignalR/server/Core/src/PublicAPI.Shipped.txt b/src/SignalR/server/Core/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/server/Core/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/server/Core/src/PublicAPI.Unshipped.txt b/src/SignalR/server/Core/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..4db56e16c376 --- /dev/null +++ b/src/SignalR/server/Core/src/PublicAPI.Unshipped.txt @@ -0,0 +1,280 @@ +#nullable enable +Microsoft.AspNetCore.SignalR.ClientProxyExtensions +Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager +Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.DefaultHubLifetimeManager(Microsoft.Extensions.Logging.ILogger!>! logger) -> void +Microsoft.AspNetCore.SignalR.DefaultUserIdProvider +Microsoft.AspNetCore.SignalR.DefaultUserIdProvider.DefaultUserIdProvider() -> void +Microsoft.AspNetCore.SignalR.DynamicHub +Microsoft.AspNetCore.SignalR.DynamicHub.Clients.get -> Microsoft.AspNetCore.SignalR.DynamicHubClients! +Microsoft.AspNetCore.SignalR.DynamicHub.Clients.set -> void +Microsoft.AspNetCore.SignalR.DynamicHub.DynamicHub() -> void +Microsoft.AspNetCore.SignalR.DynamicHubClients +Microsoft.AspNetCore.SignalR.DynamicHubClients.All.get -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.AllExcept(System.Collections.Generic.IReadOnlyList! excludedConnectionIds) -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.Caller.get -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.Client(string! connectionId) -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.Clients(System.Collections.Generic.IReadOnlyList! connectionIds) -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.DynamicHubClients(Microsoft.AspNetCore.SignalR.IHubCallerClients! clients) -> void +Microsoft.AspNetCore.SignalR.DynamicHubClients.Group(string! groupName) -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.GroupExcept(string! groupName, System.Collections.Generic.IReadOnlyList! excludedConnectionIds) -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.Groups(System.Collections.Generic.IReadOnlyList! groupNames) -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.Others.get -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.OthersInGroup(string! groupName) -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.User(string! userId) -> dynamic! +Microsoft.AspNetCore.SignalR.DynamicHubClients.Users(System.Collections.Generic.IReadOnlyList! userIds) -> dynamic! +Microsoft.AspNetCore.SignalR.Hub +Microsoft.AspNetCore.SignalR.Hub.Clients.get -> Microsoft.AspNetCore.SignalR.IHubCallerClients! +Microsoft.AspNetCore.SignalR.Hub.Clients.set -> void +Microsoft.AspNetCore.SignalR.Hub.Context.get -> Microsoft.AspNetCore.SignalR.HubCallerContext! +Microsoft.AspNetCore.SignalR.Hub.Context.set -> void +Microsoft.AspNetCore.SignalR.Hub.Dispose() -> void +Microsoft.AspNetCore.SignalR.Hub.Groups.get -> Microsoft.AspNetCore.SignalR.IGroupManager! +Microsoft.AspNetCore.SignalR.Hub.Groups.set -> void +Microsoft.AspNetCore.SignalR.Hub.Hub() -> void +Microsoft.AspNetCore.SignalR.Hub +Microsoft.AspNetCore.SignalR.Hub.Clients.get -> Microsoft.AspNetCore.SignalR.IHubCallerClients! +Microsoft.AspNetCore.SignalR.Hub.Clients.set -> void +Microsoft.AspNetCore.SignalR.Hub.Hub() -> void +Microsoft.AspNetCore.SignalR.HubCallerContext +Microsoft.AspNetCore.SignalR.HubCallerContext.HubCallerContext() -> void +Microsoft.AspNetCore.SignalR.HubClientsExtensions +Microsoft.AspNetCore.SignalR.HubConnectionContext +Microsoft.AspNetCore.SignalR.HubConnectionContext.HubConnectionContext(Microsoft.AspNetCore.Connections.ConnectionContext! connectionContext, Microsoft.AspNetCore.SignalR.HubConnectionContextOptions! contextOptions, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> void +Microsoft.AspNetCore.SignalR.HubConnectionContext.UserIdentifier.get -> string? +Microsoft.AspNetCore.SignalR.HubConnectionContext.UserIdentifier.set -> void +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.ClientTimeoutInterval.get -> System.TimeSpan +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.ClientTimeoutInterval.set -> void +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.HubConnectionContextOptions() -> void +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.KeepAliveInterval.get -> System.TimeSpan +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.KeepAliveInterval.set -> void +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.MaximumParallelInvocations.get -> int +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.MaximumParallelInvocations.set -> void +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.MaximumReceiveMessageSize.get -> long? +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.MaximumReceiveMessageSize.set -> void +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.StreamBufferCapacity.get -> int +Microsoft.AspNetCore.SignalR.HubConnectionContextOptions.StreamBufferCapacity.set -> void +Microsoft.AspNetCore.SignalR.HubConnectionHandler +Microsoft.AspNetCore.SignalR.HubConnectionStore +Microsoft.AspNetCore.SignalR.HubConnectionStore.Add(Microsoft.AspNetCore.SignalR.HubConnectionContext! connection) -> void +Microsoft.AspNetCore.SignalR.HubConnectionStore.Count.get -> int +Microsoft.AspNetCore.SignalR.HubConnectionStore.Enumerator +Microsoft.AspNetCore.SignalR.HubConnectionStore.Enumerator.Current.get -> Microsoft.AspNetCore.SignalR.HubConnectionContext! +Microsoft.AspNetCore.SignalR.HubConnectionStore.Enumerator.Dispose() -> void +Microsoft.AspNetCore.SignalR.HubConnectionStore.Enumerator.Enumerator(Microsoft.AspNetCore.SignalR.HubConnectionStore! hubConnectionList) -> void +Microsoft.AspNetCore.SignalR.HubConnectionStore.Enumerator.MoveNext() -> bool +Microsoft.AspNetCore.SignalR.HubConnectionStore.Enumerator.Reset() -> void +Microsoft.AspNetCore.SignalR.HubConnectionStore.GetEnumerator() -> Microsoft.AspNetCore.SignalR.HubConnectionStore.Enumerator +Microsoft.AspNetCore.SignalR.HubConnectionStore.HubConnectionStore() -> void +Microsoft.AspNetCore.SignalR.HubConnectionStore.Remove(Microsoft.AspNetCore.SignalR.HubConnectionContext! connection) -> void +Microsoft.AspNetCore.SignalR.HubConnectionStore.this[string! connectionId].get -> Microsoft.AspNetCore.SignalR.HubConnectionContext? +Microsoft.AspNetCore.SignalR.HubInvocationContext +Microsoft.AspNetCore.SignalR.HubInvocationContext.Context.get -> Microsoft.AspNetCore.SignalR.HubCallerContext! +Microsoft.AspNetCore.SignalR.HubInvocationContext.Hub.get -> Microsoft.AspNetCore.SignalR.Hub! +Microsoft.AspNetCore.SignalR.HubInvocationContext.HubInvocationContext(Microsoft.AspNetCore.SignalR.HubCallerContext! context, System.IServiceProvider! serviceProvider, Microsoft.AspNetCore.SignalR.Hub! hub, System.Reflection.MethodInfo! hubMethod, System.Collections.Generic.IReadOnlyList! hubMethodArguments) -> void +Microsoft.AspNetCore.SignalR.HubInvocationContext.HubInvocationContext(Microsoft.AspNetCore.SignalR.HubCallerContext! context, string! hubMethodName, object?[]! hubMethodArguments) -> void +Microsoft.AspNetCore.SignalR.HubInvocationContext.HubMethod.get -> System.Reflection.MethodInfo! +Microsoft.AspNetCore.SignalR.HubInvocationContext.HubMethodArguments.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.AspNetCore.SignalR.HubInvocationContext.HubMethodName.get -> string! +Microsoft.AspNetCore.SignalR.HubInvocationContext.ServiceProvider.get -> System.IServiceProvider! +Microsoft.AspNetCore.SignalR.HubLifetimeContext +Microsoft.AspNetCore.SignalR.HubLifetimeContext.Context.get -> Microsoft.AspNetCore.SignalR.HubCallerContext! +Microsoft.AspNetCore.SignalR.HubLifetimeContext.Hub.get -> Microsoft.AspNetCore.SignalR.Hub! +Microsoft.AspNetCore.SignalR.HubLifetimeContext.HubLifetimeContext(Microsoft.AspNetCore.SignalR.HubCallerContext! context, System.IServiceProvider! serviceProvider, Microsoft.AspNetCore.SignalR.Hub! hub) -> void +Microsoft.AspNetCore.SignalR.HubLifetimeContext.ServiceProvider.get -> System.IServiceProvider! +Microsoft.AspNetCore.SignalR.HubLifetimeManager +Microsoft.AspNetCore.SignalR.HubLifetimeManager.HubLifetimeManager() -> void +Microsoft.AspNetCore.SignalR.HubMetadata +Microsoft.AspNetCore.SignalR.HubMetadata.HubMetadata(System.Type! hubType) -> void +Microsoft.AspNetCore.SignalR.HubMetadata.HubType.get -> System.Type! +Microsoft.AspNetCore.SignalR.HubMethodNameAttribute +Microsoft.AspNetCore.SignalR.HubMethodNameAttribute.HubMethodNameAttribute(string! name) -> void +Microsoft.AspNetCore.SignalR.HubMethodNameAttribute.Name.get -> string! +Microsoft.AspNetCore.SignalR.HubOptions +Microsoft.AspNetCore.SignalR.HubOptions.ClientTimeoutInterval.get -> System.TimeSpan? +Microsoft.AspNetCore.SignalR.HubOptions.ClientTimeoutInterval.set -> void +Microsoft.AspNetCore.SignalR.HubOptions.EnableDetailedErrors.get -> bool? +Microsoft.AspNetCore.SignalR.HubOptions.EnableDetailedErrors.set -> void +Microsoft.AspNetCore.SignalR.HubOptions.HandshakeTimeout.get -> System.TimeSpan? +Microsoft.AspNetCore.SignalR.HubOptions.HandshakeTimeout.set -> void +Microsoft.AspNetCore.SignalR.HubOptions.HubOptions() -> void +Microsoft.AspNetCore.SignalR.HubOptions.KeepAliveInterval.get -> System.TimeSpan? +Microsoft.AspNetCore.SignalR.HubOptions.KeepAliveInterval.set -> void +Microsoft.AspNetCore.SignalR.HubOptions.MaximumParallelInvocationsPerClient.get -> int +Microsoft.AspNetCore.SignalR.HubOptions.MaximumParallelInvocationsPerClient.set -> void +Microsoft.AspNetCore.SignalR.HubOptions.MaximumReceiveMessageSize.get -> long? +Microsoft.AspNetCore.SignalR.HubOptions.MaximumReceiveMessageSize.set -> void +Microsoft.AspNetCore.SignalR.HubOptions.StreamBufferCapacity.get -> int? +Microsoft.AspNetCore.SignalR.HubOptions.StreamBufferCapacity.set -> void +Microsoft.AspNetCore.SignalR.HubOptions.SupportedProtocols.get -> System.Collections.Generic.IList? +Microsoft.AspNetCore.SignalR.HubOptions.SupportedProtocols.set -> void +Microsoft.AspNetCore.SignalR.HubOptions +Microsoft.AspNetCore.SignalR.HubOptions.HubOptions() -> void +Microsoft.AspNetCore.SignalR.HubOptionsExtensions +Microsoft.AspNetCore.SignalR.HubOptionsSetup +Microsoft.AspNetCore.SignalR.HubOptionsSetup.Configure(Microsoft.AspNetCore.SignalR.HubOptions! options) -> void +Microsoft.AspNetCore.SignalR.HubOptionsSetup.HubOptionsSetup(System.Collections.Generic.IEnumerable! protocols) -> void +Microsoft.AspNetCore.SignalR.HubOptionsSetup +Microsoft.AspNetCore.SignalR.HubOptionsSetup.Configure(Microsoft.AspNetCore.SignalR.HubOptions! options) -> void +Microsoft.AspNetCore.SignalR.IClientProxy +Microsoft.AspNetCore.SignalR.IClientProxy.SendCoreAsync(string! method, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.SignalR.IGroupManager +Microsoft.AspNetCore.SignalR.IGroupManager.AddToGroupAsync(string! connectionId, string! groupName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.SignalR.IGroupManager.RemoveFromGroupAsync(string! connectionId, string! groupName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.SignalR.IHubActivator +Microsoft.AspNetCore.SignalR.IHubActivator.Create() -> THub! +Microsoft.AspNetCore.SignalR.IHubActivator.Release(THub! hub) -> void +Microsoft.AspNetCore.SignalR.IHubCallerClients +Microsoft.AspNetCore.SignalR.IHubCallerClients +Microsoft.AspNetCore.SignalR.IHubCallerClients.Caller.get -> T +Microsoft.AspNetCore.SignalR.IHubCallerClients.Others.get -> T +Microsoft.AspNetCore.SignalR.IHubCallerClients.OthersInGroup(string! groupName) -> T +Microsoft.AspNetCore.SignalR.IHubClients +Microsoft.AspNetCore.SignalR.IHubClients +Microsoft.AspNetCore.SignalR.IHubClients.All.get -> T +Microsoft.AspNetCore.SignalR.IHubClients.AllExcept(System.Collections.Generic.IReadOnlyList! excludedConnectionIds) -> T +Microsoft.AspNetCore.SignalR.IHubClients.Client(string! connectionId) -> T +Microsoft.AspNetCore.SignalR.IHubClients.Clients(System.Collections.Generic.IReadOnlyList! connectionIds) -> T +Microsoft.AspNetCore.SignalR.IHubClients.Group(string! groupName) -> T +Microsoft.AspNetCore.SignalR.IHubClients.GroupExcept(string! groupName, System.Collections.Generic.IReadOnlyList! excludedConnectionIds) -> T +Microsoft.AspNetCore.SignalR.IHubClients.Groups(System.Collections.Generic.IReadOnlyList! groupNames) -> T +Microsoft.AspNetCore.SignalR.IHubClients.User(string! userId) -> T +Microsoft.AspNetCore.SignalR.IHubClients.Users(System.Collections.Generic.IReadOnlyList! userIds) -> T +Microsoft.AspNetCore.SignalR.IHubContext +Microsoft.AspNetCore.SignalR.IHubContext.Clients.get -> Microsoft.AspNetCore.SignalR.IHubClients! +Microsoft.AspNetCore.SignalR.IHubContext.Groups.get -> Microsoft.AspNetCore.SignalR.IGroupManager! +Microsoft.AspNetCore.SignalR.IHubContext +Microsoft.AspNetCore.SignalR.IHubContext.Clients.get -> Microsoft.AspNetCore.SignalR.IHubClients! +Microsoft.AspNetCore.SignalR.IHubContext.Groups.get -> Microsoft.AspNetCore.SignalR.IGroupManager! +Microsoft.AspNetCore.SignalR.IHubFilter +Microsoft.AspNetCore.SignalR.IHubFilter.InvokeMethodAsync(Microsoft.AspNetCore.SignalR.HubInvocationContext! invocationContext, System.Func>! next) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.SignalR.IHubFilter.OnConnectedAsync(Microsoft.AspNetCore.SignalR.HubLifetimeContext! context, System.Func! next) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.SignalR.IHubFilter.OnDisconnectedAsync(Microsoft.AspNetCore.SignalR.HubLifetimeContext! context, System.Exception? exception, System.Func! next) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.SignalR.IHubProtocolResolver +Microsoft.AspNetCore.SignalR.IHubProtocolResolver.AllProtocols.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.AspNetCore.SignalR.IHubProtocolResolver.GetProtocol(string! protocolName, System.Collections.Generic.IReadOnlyList? supportedProtocols) -> Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol? +Microsoft.AspNetCore.SignalR.ISignalRServerBuilder +Microsoft.AspNetCore.SignalR.IUserIdProvider +Microsoft.AspNetCore.SignalR.IUserIdProvider.GetUserId(Microsoft.AspNetCore.SignalR.HubConnectionContext! connection) -> string? +Microsoft.AspNetCore.SignalR.SerializedHubMessage +Microsoft.AspNetCore.SignalR.SerializedHubMessage.GetSerializedMessage(Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol! protocol) -> System.ReadOnlyMemory +Microsoft.AspNetCore.SignalR.SerializedHubMessage.Message.get -> Microsoft.AspNetCore.SignalR.Protocol.HubMessage? +Microsoft.AspNetCore.SignalR.SerializedHubMessage.SerializedHubMessage(Microsoft.AspNetCore.SignalR.Protocol.HubMessage! message) -> void +Microsoft.AspNetCore.SignalR.SerializedHubMessage.SerializedHubMessage(System.Collections.Generic.IReadOnlyList! messages) -> void +Microsoft.AspNetCore.SignalR.SerializedMessage +Microsoft.AspNetCore.SignalR.SerializedMessage.ProtocolName.get -> string! +Microsoft.AspNetCore.SignalR.SerializedMessage.Serialized.get -> System.ReadOnlyMemory +Microsoft.AspNetCore.SignalR.SerializedMessage.SerializedMessage(string! protocolName, System.ReadOnlyMemory serialized) -> void +Microsoft.AspNetCore.SignalR.SignalRConnectionBuilderExtensions +Microsoft.Extensions.DependencyInjection.SignalRDependencyInjectionExtensions +abstract Microsoft.AspNetCore.SignalR.HubCallerContext.Abort() -> void +abstract Microsoft.AspNetCore.SignalR.HubCallerContext.ConnectionAborted.get -> System.Threading.CancellationToken +abstract Microsoft.AspNetCore.SignalR.HubCallerContext.ConnectionId.get -> string! +abstract Microsoft.AspNetCore.SignalR.HubCallerContext.Features.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection! +abstract Microsoft.AspNetCore.SignalR.HubCallerContext.Items.get -> System.Collections.Generic.IDictionary! +abstract Microsoft.AspNetCore.SignalR.HubCallerContext.User.get -> System.Security.Claims.ClaimsPrincipal? +abstract Microsoft.AspNetCore.SignalR.HubCallerContext.UserIdentifier.get -> string? +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.AddToGroupAsync(string! connectionId, string! groupName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.OnConnectedAsync(Microsoft.AspNetCore.SignalR.HubConnectionContext! connection) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.OnDisconnectedAsync(Microsoft.AspNetCore.SignalR.HubConnectionContext! connection) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.RemoveFromGroupAsync(string! connectionId, string! groupName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.SendAllAsync(string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.SendAllExceptAsync(string! methodName, object?[]? args, System.Collections.Generic.IReadOnlyList! excludedConnectionIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.SendConnectionAsync(string! connectionId, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.SendConnectionsAsync(System.Collections.Generic.IReadOnlyList! connectionIds, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.SendGroupAsync(string! groupName, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.SendGroupExceptAsync(string! groupName, string! methodName, object?[]? args, System.Collections.Generic.IReadOnlyList! excludedConnectionIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.SendGroupsAsync(System.Collections.Generic.IReadOnlyList! groupNames, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.SendUserAsync(string! userId, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.SignalR.HubLifetimeManager.SendUsersAsync(System.Collections.Generic.IReadOnlyList! userIds, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.AddToGroupAsync(string! connectionId, string! groupName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.OnConnectedAsync(Microsoft.AspNetCore.SignalR.HubConnectionContext! connection) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.OnDisconnectedAsync(Microsoft.AspNetCore.SignalR.HubConnectionContext! connection) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.RemoveFromGroupAsync(string! connectionId, string! groupName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.SendAllAsync(string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.SendAllExceptAsync(string! methodName, object?[]? args, System.Collections.Generic.IReadOnlyList! excludedConnectionIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.SendConnectionAsync(string! connectionId, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.SendConnectionsAsync(System.Collections.Generic.IReadOnlyList! connectionIds, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.SendGroupAsync(string! groupName, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.SendGroupExceptAsync(string! groupName, string! methodName, object?[]? args, System.Collections.Generic.IReadOnlyList! excludedConnectionIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.SendGroupsAsync(System.Collections.Generic.IReadOnlyList! groupNames, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.SendUserAsync(string! userId, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.DefaultHubLifetimeManager.SendUsersAsync(System.Collections.Generic.IReadOnlyList! userIds, string! methodName, object?[]? args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.SignalR.HubConnectionHandler.OnConnectedAsync(Microsoft.AspNetCore.Connections.ConnectionContext! connection) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, object? arg2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, object? arg2, object? arg3, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, object? arg2, object? arg3, object? arg4, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(this Microsoft.AspNetCore.SignalR.IClientProxy! clientProxy, string! method, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, object? arg10, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.AllExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, System.Collections.Generic.IEnumerable! excludedConnectionIds) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.AllExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! excludedConnectionId1) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.AllExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! excludedConnectionId1, string! excludedConnectionId2) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.AllExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.AllExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.AllExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4, string! excludedConnectionId5) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.AllExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4, string! excludedConnectionId5, string! excludedConnectionId6) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.AllExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4, string! excludedConnectionId5, string! excludedConnectionId6, string! excludedConnectionId7) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.AllExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4, string! excludedConnectionId5, string! excludedConnectionId6, string! excludedConnectionId7, string! excludedConnectionId8) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Clients(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, System.Collections.Generic.IEnumerable! connectionIds) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Clients(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! connection1) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Clients(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! connection1, string! connection2) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Clients(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! connection1, string! connection2, string! connection3) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Clients(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! connection1, string! connection2, string! connection3, string! connection4) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Clients(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! connection1, string! connection2, string! connection3, string! connection4, string! connection5) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Clients(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! connection1, string! connection2, string! connection3, string! connection4, string! connection5, string! connection6) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Clients(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! connection1, string! connection2, string! connection3, string! connection4, string! connection5, string! connection6, string! connection7) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Clients(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! connection1, string! connection2, string! connection3, string! connection4, string! connection5, string! connection6, string! connection7, string! connection8) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.GroupExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! groupName, System.Collections.Generic.IEnumerable! excludedConnectionIds) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.GroupExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! groupName, string! excludedConnectionId1) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.GroupExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! groupName, string! excludedConnectionId1, string! excludedConnectionId2) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.GroupExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! groupName, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.GroupExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! groupName, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.GroupExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! groupName, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4, string! excludedConnectionId5) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.GroupExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! groupName, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4, string! excludedConnectionId5, string! excludedConnectionId6) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.GroupExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! groupName, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4, string! excludedConnectionId5, string! excludedConnectionId6, string! excludedConnectionId7) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.GroupExcept(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! groupName, string! excludedConnectionId1, string! excludedConnectionId2, string! excludedConnectionId3, string! excludedConnectionId4, string! excludedConnectionId5, string! excludedConnectionId6, string! excludedConnectionId7, string! excludedConnectionId8) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Groups(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, System.Collections.Generic.IEnumerable! groupNames) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Groups(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! group1) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Groups(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! group1, string! group2) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Groups(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! group1, string! group2, string! group3) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Groups(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! group1, string! group2, string! group3, string! group4) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Groups(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! group1, string! group2, string! group3, string! group4, string! group5) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Groups(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! group1, string! group2, string! group3, string! group4, string! group5, string! group6) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Groups(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! group1, string! group2, string! group3, string! group4, string! group5, string! group6, string! group7) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Groups(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! group1, string! group2, string! group3, string! group4, string! group5, string! group6, string! group7, string! group8) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Users(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, System.Collections.Generic.IEnumerable! userIds) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Users(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! user1) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Users(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! user1, string! user2) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Users(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! user1, string! user2, string! user3) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Users(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! user1, string! user2, string! user3, string! user4) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Users(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! user1, string! user2, string! user3, string! user4, string! user5) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Users(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! user1, string! user2, string! user3, string! user4, string! user5, string! user6) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Users(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! user1, string! user2, string! user3, string! user4, string! user5, string! user6, string! user7) -> T +static Microsoft.AspNetCore.SignalR.HubClientsExtensions.Users(this Microsoft.AspNetCore.SignalR.IHubClients! hubClients, string! user1, string! user2, string! user3, string! user4, string! user5, string! user6, string! user7, string! user8) -> T +static Microsoft.AspNetCore.SignalR.HubOptionsExtensions.AddFilter(this Microsoft.AspNetCore.SignalR.HubOptions! options, Microsoft.AspNetCore.SignalR.IHubFilter! hubFilter) -> void +static Microsoft.AspNetCore.SignalR.HubOptionsExtensions.AddFilter(this Microsoft.AspNetCore.SignalR.HubOptions! options, System.Type! filterType) -> void +static Microsoft.AspNetCore.SignalR.HubOptionsExtensions.AddFilter(this Microsoft.AspNetCore.SignalR.HubOptions! options) -> void +static Microsoft.AspNetCore.SignalR.SignalRConnectionBuilderExtensions.UseHub(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +static Microsoft.Extensions.DependencyInjection.SignalRDependencyInjectionExtensions.AddSignalRCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.SignalR.ISignalRServerBuilder! +virtual Microsoft.AspNetCore.SignalR.DefaultUserIdProvider.GetUserId(Microsoft.AspNetCore.SignalR.HubConnectionContext! connection) -> string? +virtual Microsoft.AspNetCore.SignalR.Hub.Dispose(bool disposing) -> void +virtual Microsoft.AspNetCore.SignalR.Hub.OnConnectedAsync() -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.SignalR.Hub.OnDisconnectedAsync(System.Exception? exception) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.Abort() -> void +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.ConnectionAborted.get -> System.Threading.CancellationToken +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.ConnectionId.get -> string! +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.Features.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection! +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.Items.get -> System.Collections.Generic.IDictionary! +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.Protocol.get -> Microsoft.AspNetCore.SignalR.Protocol.IHubProtocol! +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.Protocol.set -> void +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.User.get -> System.Security.Claims.ClaimsPrincipal? +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.WriteAsync(Microsoft.AspNetCore.SignalR.Protocol.HubMessage! message, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +virtual Microsoft.AspNetCore.SignalR.HubConnectionContext.WriteAsync(Microsoft.AspNetCore.SignalR.SerializedHubMessage! message, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +~Microsoft.AspNetCore.SignalR.HubConnectionHandler.HubConnectionHandler(Microsoft.AspNetCore.SignalR.HubLifetimeManager! lifetimeManager, Microsoft.AspNetCore.SignalR.IHubProtocolResolver! protocolResolver, Microsoft.Extensions.Options.IOptions! globalHubOptions, Microsoft.Extensions.Options.IOptions!>! hubOptions, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory, Microsoft.AspNetCore.SignalR.IUserIdProvider! userIdProvider, Microsoft.Extensions.DependencyInjection.IServiceScopeFactory! serviceScopeFactory) -> void +~Microsoft.AspNetCore.SignalR.HubOptionsSetup.HubOptionsSetup(Microsoft.Extensions.Options.IOptions! options) -> void diff --git a/src/SignalR/server/SignalR/src/PublicAPI.Shipped.txt b/src/SignalR/server/SignalR/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/server/SignalR/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/server/SignalR/src/PublicAPI.Unshipped.txt b/src/SignalR/server/SignalR/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..b3fb31f676eb --- /dev/null +++ b/src/SignalR/server/SignalR/src/PublicAPI.Unshipped.txt @@ -0,0 +1,14 @@ +#nullable enable +Microsoft.AspNetCore.Builder.HubEndpointConventionBuilder +Microsoft.AspNetCore.Builder.HubEndpointRouteBuilderExtensions +Microsoft.AspNetCore.Builder.IHubEndpointConventionBuilder +Microsoft.AspNetCore.SignalR.GetHttpContextExtensions +Microsoft.Extensions.DependencyInjection.SignalRDependencyInjectionExtensions +~Microsoft.AspNetCore.Builder.HubEndpointConventionBuilder.Add(System.Action convention) -> void +~static Microsoft.AspNetCore.Builder.HubEndpointRouteBuilderExtensions.MapHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder endpoints, string pattern) -> Microsoft.AspNetCore.Builder.HubEndpointConventionBuilder +~static Microsoft.AspNetCore.Builder.HubEndpointRouteBuilderExtensions.MapHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder endpoints, string pattern, System.Action configureOptions) -> Microsoft.AspNetCore.Builder.HubEndpointConventionBuilder +~static Microsoft.AspNetCore.SignalR.GetHttpContextExtensions.GetHttpContext(this Microsoft.AspNetCore.SignalR.HubCallerContext connection) -> Microsoft.AspNetCore.Http.HttpContext +~static Microsoft.AspNetCore.SignalR.GetHttpContextExtensions.GetHttpContext(this Microsoft.AspNetCore.SignalR.HubConnectionContext connection) -> Microsoft.AspNetCore.Http.HttpContext +~static Microsoft.Extensions.DependencyInjection.SignalRDependencyInjectionExtensions.AddHubOptions(this Microsoft.AspNetCore.SignalR.ISignalRServerBuilder signalrBuilder, System.Action> configure) -> Microsoft.AspNetCore.SignalR.ISignalRServerBuilder +~static Microsoft.Extensions.DependencyInjection.SignalRDependencyInjectionExtensions.AddSignalR(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> Microsoft.AspNetCore.SignalR.ISignalRServerBuilder +~static Microsoft.Extensions.DependencyInjection.SignalRDependencyInjectionExtensions.AddSignalR(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure) -> Microsoft.AspNetCore.SignalR.ISignalRServerBuilder diff --git a/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.cs b/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.cs index 862cde22d499..609a2550ae7c 100644 --- a/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.cs +++ b/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.cs @@ -155,6 +155,9 @@ public async Task AbortFromHubMethodForcesClientDisconnect() await client.SendInvocationAsync(nameof(AbortHub.Kill)).OrTimeout(); + var close = Assert.IsType(await client.ReadAsync().OrTimeout()); + Assert.False(close.AllowReconnect); + await connectionHandlerTask.OrTimeout(); Assert.Null(client.TryRead()); @@ -955,15 +958,18 @@ public async Task HubMethodListeningToConnectionAbortedClosesOnConnectionContext { var connectionHandlerTask = await client.ConnectAsync(connectionHandler); - var invokeTask = client.InvokeAsync(nameof(MethodHub.BlockingMethod)); + await client.SendInvocationAsync(nameof(MethodHub.BlockingMethod)).OrTimeout(); client.Connection.Abort(); + var closeMessage = Assert.IsType(await client.ReadAsync().OrTimeout()); + Assert.False(closeMessage.AllowReconnect); + // If this completes then the server has completed the connection await connectionHandlerTask.OrTimeout(); // Nothing written to connection because it was closed - Assert.False(invokeTask.IsCompleted); + Assert.Null(client.TryRead()); } } } @@ -1019,16 +1025,11 @@ public async Task HubMethodDoesNotSendResultWhenInvocationIsNonBlocking() // kill the connection client.Dispose(); + var message = Assert.IsType(client.TryRead()); + Assert.True(message.AllowReconnect); + // Ensure the client channel is empty - var message = client.TryRead(); - switch (message) - { - case CloseMessage close: - break; - default: - Assert.Null(message); - break; - } + Assert.Null(client.TryRead()); await connectionHandlerTask.OrTimeout(); } diff --git a/src/SignalR/server/StackExchangeRedis/src/PublicAPI.Shipped.txt b/src/SignalR/server/StackExchangeRedis/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SignalR/server/StackExchangeRedis/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SignalR/server/StackExchangeRedis/src/PublicAPI.Unshipped.txt b/src/SignalR/server/StackExchangeRedis/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..2179ac040fd1 --- /dev/null +++ b/src/SignalR/server/StackExchangeRedis/src/PublicAPI.Unshipped.txt @@ -0,0 +1,29 @@ +#nullable enable +Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.Dispose() -> void +Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisOptions +Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisOptions.RedisOptions() -> void +Microsoft.Extensions.DependencyInjection.StackExchangeRedisDependencyInjectionExtensions +~Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager +~Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.RedisHubLifetimeManager(Microsoft.Extensions.Logging.ILogger> logger, Microsoft.Extensions.Options.IOptions options, Microsoft.AspNetCore.SignalR.IHubProtocolResolver hubProtocolResolver) -> void +~Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.RedisHubLifetimeManager(Microsoft.Extensions.Logging.ILogger> logger, Microsoft.Extensions.Options.IOptions options, Microsoft.AspNetCore.SignalR.IHubProtocolResolver hubProtocolResolver, Microsoft.Extensions.Options.IOptions globalHubOptions, Microsoft.Extensions.Options.IOptions> hubOptions) -> void +~Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisOptions.Configuration.get -> StackExchange.Redis.ConfigurationOptions +~Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisOptions.Configuration.set -> void +~Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisOptions.ConnectionFactory.get -> System.Func> +~Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisOptions.ConnectionFactory.set -> void +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.AddToGroupAsync(string connectionId, string groupName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.OnConnectedAsync(Microsoft.AspNetCore.SignalR.HubConnectionContext connection) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.OnDisconnectedAsync(Microsoft.AspNetCore.SignalR.HubConnectionContext connection) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.RemoveFromGroupAsync(string connectionId, string groupName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.SendAllAsync(string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.SendAllExceptAsync(string methodName, object[] args, System.Collections.Generic.IReadOnlyList excludedConnectionIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.SendConnectionAsync(string connectionId, string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.SendConnectionsAsync(System.Collections.Generic.IReadOnlyList connectionIds, string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.SendGroupAsync(string groupName, string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.SendGroupExceptAsync(string groupName, string methodName, object[] args, System.Collections.Generic.IReadOnlyList excludedConnectionIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.SendGroupsAsync(System.Collections.Generic.IReadOnlyList groupNames, string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.SendUserAsync(string userId, string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.SignalR.StackExchangeRedis.RedisHubLifetimeManager.SendUsersAsync(System.Collections.Generic.IReadOnlyList userIds, string methodName, object[] args, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task +~static Microsoft.Extensions.DependencyInjection.StackExchangeRedisDependencyInjectionExtensions.AddStackExchangeRedis(this Microsoft.AspNetCore.SignalR.ISignalRServerBuilder signalrBuilder) -> Microsoft.AspNetCore.SignalR.ISignalRServerBuilder +~static Microsoft.Extensions.DependencyInjection.StackExchangeRedisDependencyInjectionExtensions.AddStackExchangeRedis(this Microsoft.AspNetCore.SignalR.ISignalRServerBuilder signalrBuilder, System.Action configure) -> Microsoft.AspNetCore.SignalR.ISignalRServerBuilder +~static Microsoft.Extensions.DependencyInjection.StackExchangeRedisDependencyInjectionExtensions.AddStackExchangeRedis(this Microsoft.AspNetCore.SignalR.ISignalRServerBuilder signalrBuilder, string redisConnectionString) -> Microsoft.AspNetCore.SignalR.ISignalRServerBuilder +~static Microsoft.Extensions.DependencyInjection.StackExchangeRedisDependencyInjectionExtensions.AddStackExchangeRedis(this Microsoft.AspNetCore.SignalR.ISignalRServerBuilder signalrBuilder, string redisConnectionString, System.Action configure) -> Microsoft.AspNetCore.SignalR.ISignalRServerBuilder diff --git a/src/SiteExtensions/LoggingBranch/Directory.Build.targets b/src/SiteExtensions/LoggingBranch/Directory.Build.targets index bc9e13c2e264..ea37d8fa42e4 100644 --- a/src/SiteExtensions/LoggingBranch/Directory.Build.targets +++ b/src/SiteExtensions/LoggingBranch/Directory.Build.targets @@ -2,10 +2,6 @@ - - $(PackageVersion) - - diff --git a/src/SiteExtensions/LoggingBranch/LB.csproj b/src/SiteExtensions/LoggingBranch/LB.csproj index 631f5d56a083..fb4097ceab60 100644 --- a/src/SiteExtensions/LoggingBranch/LB.csproj +++ b/src/SiteExtensions/LoggingBranch/LB.csproj @@ -16,7 +16,7 @@ false true false - + $(NoWarn);CS2008 @@ -24,11 +24,13 @@ - + false true - + false true diff --git a/src/SiteExtensions/Microsoft.Web.Xdt.Extensions/src/PublicAPI.Shipped.txt b/src/SiteExtensions/Microsoft.Web.Xdt.Extensions/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SiteExtensions/Microsoft.Web.Xdt.Extensions/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SiteExtensions/Microsoft.Web.Xdt.Extensions/src/PublicAPI.Unshipped.txt b/src/SiteExtensions/Microsoft.Web.Xdt.Extensions/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..91232839de70 --- /dev/null +++ b/src/SiteExtensions/Microsoft.Web.Xdt.Extensions/src/PublicAPI.Unshipped.txt @@ -0,0 +1,6 @@ +#nullable enable +Microsoft.Web.Xdt.Extensions.InsertOrAppendAttribute +Microsoft.Web.Xdt.Extensions.InsertOrAppendAttribute.InsertOrAppendAttribute() -> void +override Microsoft.Web.Xdt.Extensions.InsertOrAppendAttribute.Apply() -> void +~Microsoft.Web.Xdt.Extensions.InsertOrAppendAttribute.AttributeName.get -> string +~Microsoft.Web.Xdt.Extensions.InsertOrAppendAttribute.GetArgumentValue(string name) -> string diff --git a/src/SiteExtensions/Sdk/HostingStartup/PublicAPI.Shipped.txt b/src/SiteExtensions/Sdk/HostingStartup/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/SiteExtensions/Sdk/HostingStartup/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/SiteExtensions/Sdk/HostingStartup/PublicAPI.Unshipped.txt b/src/SiteExtensions/Sdk/HostingStartup/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..3e35270583f2 --- /dev/null +++ b/src/SiteExtensions/Sdk/HostingStartup/PublicAPI.Unshipped.txt @@ -0,0 +1,4 @@ +#nullable enable +Program +Program.Program() -> void +static Program.Main() -> void diff --git a/src/SiteExtensions/Sdk/SiteExtension.targets b/src/SiteExtensions/Sdk/SiteExtension.targets index 792d83e0906a..e11ead7af3ec 100644 --- a/src/SiteExtensions/Sdk/SiteExtension.targets +++ b/src/SiteExtensions/Sdk/SiteExtension.targets @@ -85,7 +85,7 @@ HostingStartupPackageName=%(_HostingStartupPackageReference.Identity); HostingStartupPackageVersion=%(_HostingStartupPackageReference.Version); RuntimeFrameworkVersion=$(HostingStartupRuntimeFrameworkVersion); - MicrosoftAspNetCoreAppPackageVersion=$(MicrosoftAspNetCoreAppPackageVersion); + MicrosoftAspNetCoreAppPackageVersion=$(SharedFxVersion); UseAppHost=false; NoBuild=false; RestoreAdditionalProjectSources=$(_RsRestoreSources)" /> @@ -97,7 +97,7 @@ HostingStartupPackageName=%(_HostingStartupPackageReference.Identity); HostingStartupPackageVersion=%(_HostingStartupPackageReference.Version); RuntimeFrameworkVersion=$(HostingStartupRuntimeFrameworkVersion); - MicrosoftAspNetCoreAppPackageVersion=$(MicrosoftAspNetCoreAppPackageVersion); + MicrosoftAspNetCoreAppPackageVersion=$(SharedFxVersion); UseAppHost=false; NoBuild=false; IncludeMainProjectInDepsFile=false" /> diff --git a/src/Testing/src/AssemblyTestLog.cs b/src/Testing/src/AssemblyTestLog.cs index f5a5314a8520..cd773ea6114a 100644 --- a/src/Testing/src/AssemblyTestLog.cs +++ b/src/Testing/src/AssemblyTestLog.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Reflection; @@ -52,9 +53,11 @@ private AssemblyTestLog(ILoggerFactory globalLoggerFactory, ILogger globalLogger _serviceProvider = serviceProvider; } + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public IDisposable StartTestLog(ITestOutputHelper output, string className, out ILoggerFactory loggerFactory, [CallerMemberName] string testName = null) => StartTestLog(output, className, out loggerFactory, LogLevel.Debug, testName); + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public IDisposable StartTestLog(ITestOutputHelper output, string className, out ILoggerFactory loggerFactory, LogLevel minLogLevel, [CallerMemberName] string testName = null) => StartTestLog(output, className, out loggerFactory, minLogLevel, out var _, out var _, testName); @@ -84,15 +87,19 @@ internal IDisposable StartTestLog(ITestOutputHelper output, string className, ou }); } + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public ILoggerFactory CreateLoggerFactory(ITestOutputHelper output, string className, [CallerMemberName] string testName = null, DateTimeOffset? logStart = null) => CreateLoggerFactory(output, className, LogLevel.Trace, testName, logStart); + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public ILoggerFactory CreateLoggerFactory(ITestOutputHelper output, string className, LogLevel minLogLevel, [CallerMemberName] string testName = null, DateTimeOffset? logStart = null) => CreateLoggerServices(output, className, minLogLevel, out var _, out var _, testName, logStart).GetRequiredService(); + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public IServiceProvider CreateLoggerServices(ITestOutputHelper output, string className, LogLevel minLogLevel, out string normalizedTestName, [CallerMemberName] string testName = null, DateTimeOffset? logStart = null) => CreateLoggerServices(output, className, minLogLevel, out normalizedTestName, out var _, testName, logStart); + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public IServiceProvider CreateLoggerServices(ITestOutputHelper output, string className, LogLevel minLogLevel, out string normalizedTestName, out string logOutputDirectory, [CallerMemberName] string testName = null, DateTimeOffset? logStart = null) { normalizedTestName = string.Empty; diff --git a/src/Testing/src/CultureReplacer.cs b/src/Testing/src/CultureReplacer.cs index 51e35e83544a..e44b3749826a 100644 --- a/src/Testing/src/CultureReplacer.cs +++ b/src/Testing/src/CultureReplacer.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Threading; using Xunit; @@ -21,6 +22,7 @@ public class CultureReplacer : IDisposable // We want to be able to find issues where the InvariantCulture is used, but a specific culture should be. // // UICulture => Language + [SuppressMessage("ApiDesign", "RS0027:Public API with optional parameter(s) should have the most parameters amongst its public overloads", Justification = "Required to maintain compatibility")] public CultureReplacer(string culture = _defaultCultureName, string uiCulture = _defaultUICultureName) : this(new CultureInfo(culture), new CultureInfo(uiCulture)) { diff --git a/src/Testing/src/HttpClientSlim.cs b/src/Testing/src/HttpClientSlim.cs index 135d6a015251..de8199bc3e8d 100644 --- a/src/Testing/src/HttpClientSlim.cs +++ b/src/Testing/src/HttpClientSlim.cs @@ -1,7 +1,8 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.Net; @@ -20,9 +21,11 @@ namespace Microsoft.AspNetCore.Testing /// public static class HttpClientSlim { + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public static async Task GetStringAsync(string requestUri, bool validateCertificate = true) => await GetStringAsync(new Uri(requestUri), validateCertificate).ConfigureAwait(false); + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public static async Task GetStringAsync(Uri requestUri, bool validateCertificate = true) { return await RetryRequest(async () => @@ -61,9 +64,11 @@ internal static string GetHost(Uri requestUri) return authority; } + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public static async Task PostAsync(string requestUri, HttpContent content, bool validateCertificate = true) => await PostAsync(new Uri(requestUri), content, validateCertificate).ConfigureAwait(false); + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public static async Task PostAsync(Uri requestUri, HttpContent content, bool validateCertificate = true) { return await RetryRequest(async () => diff --git a/src/Testing/src/LoggedTest/LoggedTestBase.cs b/src/Testing/src/LoggedTest/LoggedTestBase.cs index aa48eb8d51fd..d8d15676233e 100644 --- a/src/Testing/src/LoggedTest/LoggedTestBase.cs +++ b/src/Testing/src/LoggedTest/LoggedTestBase.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; @@ -48,9 +49,11 @@ public LoggedTestBase(ITestOutputHelper output = null) public void AddTestLogging(IServiceCollection services) => services.AddSingleton(LoggerFactory); // For back compat + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public IDisposable StartLog(out ILoggerFactory loggerFactory, [CallerMemberName] string testName = null) => StartLog(out loggerFactory, LogLevel.Debug, testName); // For back compat + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public IDisposable StartLog(out ILoggerFactory loggerFactory, LogLevel minLogLevel, [CallerMemberName] string testName = null) { return AssemblyTestLog.ForAssembly(GetType().GetTypeInfo().Assembly).StartTestLog(TestOutputHelper, GetType().FullName, out loggerFactory, minLogLevel, testName); diff --git a/src/Testing/src/PublicAPI.Shipped.txt b/src/Testing/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/Testing/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/Testing/src/PublicAPI.Unshipped.txt b/src/Testing/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..335b8434f929 --- /dev/null +++ b/src/Testing/src/PublicAPI.Unshipped.txt @@ -0,0 +1,372 @@ +#nullable enable +Microsoft.AspNetCore.Testing.AspNetTestAssemblyRunner +Microsoft.AspNetCore.Testing.AspNetTestCollectionRunner +Microsoft.AspNetCore.Testing.AspNetTestFramework +Microsoft.AspNetCore.Testing.AspNetTestFrameworkExecutor +Microsoft.AspNetCore.Testing.AssemblyFixtureAttribute +Microsoft.AspNetCore.Testing.AssemblyTestLog +Microsoft.AspNetCore.Testing.AssemblyTestLog.Dispose() -> void +Microsoft.AspNetCore.Testing.CollectDumpAttribute +Microsoft.AspNetCore.Testing.CollectDumpAttribute.CollectDumpAttribute() -> void +Microsoft.AspNetCore.Testing.ConditionalFactAttribute +Microsoft.AspNetCore.Testing.ConditionalFactAttribute.ConditionalFactAttribute() -> void +Microsoft.AspNetCore.Testing.ConditionalTheoryAttribute +Microsoft.AspNetCore.Testing.ConditionalTheoryAttribute.ConditionalTheoryAttribute() -> void +Microsoft.AspNetCore.Testing.CultureReplacer +Microsoft.AspNetCore.Testing.CultureReplacer.Dispose() -> void +Microsoft.AspNetCore.Testing.DockerOnlyAttribute +Microsoft.AspNetCore.Testing.DockerOnlyAttribute.DockerOnlyAttribute() -> void +Microsoft.AspNetCore.Testing.DockerOnlyAttribute.IsMet.get -> bool +Microsoft.AspNetCore.Testing.DumpCollector +Microsoft.AspNetCore.Testing.EnvironmentVariableSkipConditionAttribute +Microsoft.AspNetCore.Testing.EnvironmentVariableSkipConditionAttribute.IsMet.get -> bool +Microsoft.AspNetCore.Testing.EnvironmentVariableSkipConditionAttribute.RunOnMatch.get -> bool +Microsoft.AspNetCore.Testing.EnvironmentVariableSkipConditionAttribute.RunOnMatch.set -> void +Microsoft.AspNetCore.Testing.ExceptionAssert +Microsoft.AspNetCore.Testing.FrameworkSkipConditionAttribute +Microsoft.AspNetCore.Testing.FrameworkSkipConditionAttribute.FrameworkSkipConditionAttribute(Microsoft.AspNetCore.Testing.RuntimeFrameworks excludedFrameworks) -> void +Microsoft.AspNetCore.Testing.FrameworkSkipConditionAttribute.IsMet.get -> bool +Microsoft.AspNetCore.Testing.HelixQueues +Microsoft.AspNetCore.Testing.HttpClientSlim +Microsoft.AspNetCore.Testing.ILoggedTest +Microsoft.AspNetCore.Testing.ITestCondition +Microsoft.AspNetCore.Testing.ITestCondition.IsMet.get -> bool +Microsoft.AspNetCore.Testing.ITestMethodLifecycle +Microsoft.AspNetCore.Testing.LoggedTest +Microsoft.AspNetCore.Testing.LoggedTestBase +Microsoft.AspNetCore.Testing.MaximumOSVersionAttribute +Microsoft.AspNetCore.Testing.MaximumOSVersionAttribute.IsMet.get -> bool +Microsoft.AspNetCore.Testing.MinimumOSVersionAttribute +Microsoft.AspNetCore.Testing.MinimumOSVersionAttribute.IsMet.get -> bool +Microsoft.AspNetCore.Testing.OSSkipConditionAttribute +Microsoft.AspNetCore.Testing.OSSkipConditionAttribute.IsMet.get -> bool +Microsoft.AspNetCore.Testing.OSSkipConditionAttribute.OSSkipConditionAttribute(Microsoft.AspNetCore.Testing.OperatingSystems operatingSystem) -> void +Microsoft.AspNetCore.Testing.OperatingSystems +Microsoft.AspNetCore.Testing.OperatingSystems.Linux = 1 -> Microsoft.AspNetCore.Testing.OperatingSystems +Microsoft.AspNetCore.Testing.OperatingSystems.MacOSX = 2 -> Microsoft.AspNetCore.Testing.OperatingSystems +Microsoft.AspNetCore.Testing.OperatingSystems.Windows = 4 -> Microsoft.AspNetCore.Testing.OperatingSystems +Microsoft.AspNetCore.Testing.QuarantinedTestAttribute +Microsoft.AspNetCore.Testing.QuarantinedTestTraitDiscoverer +Microsoft.AspNetCore.Testing.QuarantinedTestTraitDiscoverer.QuarantinedTestTraitDiscoverer() -> void +Microsoft.AspNetCore.Testing.RepeatAttribute +Microsoft.AspNetCore.Testing.RepeatAttribute.RepeatAttribute(int runCount = 10) -> void +Microsoft.AspNetCore.Testing.RepeatAttribute.RunCount.get -> int +Microsoft.AspNetCore.Testing.RepeatContext +Microsoft.AspNetCore.Testing.RepeatContext.CurrentIteration.get -> int +Microsoft.AspNetCore.Testing.RepeatContext.CurrentIteration.set -> void +Microsoft.AspNetCore.Testing.RepeatContext.Limit.get -> int +Microsoft.AspNetCore.Testing.RepeatContext.RepeatContext(int limit) -> void +Microsoft.AspNetCore.Testing.ReplaceCultureAttribute +Microsoft.AspNetCore.Testing.ReplaceCultureAttribute.ReplaceCultureAttribute() -> void +Microsoft.AspNetCore.Testing.RuntimeFrameworks +Microsoft.AspNetCore.Testing.RuntimeFrameworks.CLR = 2 -> Microsoft.AspNetCore.Testing.RuntimeFrameworks +Microsoft.AspNetCore.Testing.RuntimeFrameworks.CoreCLR = 4 -> Microsoft.AspNetCore.Testing.RuntimeFrameworks +Microsoft.AspNetCore.Testing.RuntimeFrameworks.Mono = 1 -> Microsoft.AspNetCore.Testing.RuntimeFrameworks +Microsoft.AspNetCore.Testing.RuntimeFrameworks.None = 0 -> Microsoft.AspNetCore.Testing.RuntimeFrameworks +Microsoft.AspNetCore.Testing.ShortClassNameAttribute +Microsoft.AspNetCore.Testing.ShortClassNameAttribute.ShortClassNameAttribute() -> void +Microsoft.AspNetCore.Testing.SkipOnCIAttribute +Microsoft.AspNetCore.Testing.SkipOnCIAttribute.IsMet.get -> bool +Microsoft.AspNetCore.Testing.SkipOnHelixAttribute +Microsoft.AspNetCore.Testing.SkipOnHelixAttribute.IsMet.get -> bool +Microsoft.AspNetCore.Testing.SkippedTestCase +Microsoft.AspNetCore.Testing.SkippedTestCase.SkippedTestCase() -> void +Microsoft.AspNetCore.Testing.TaskExtensions +Microsoft.AspNetCore.Testing.TestContext +Microsoft.AspNetCore.Testing.TestFileOutputContext +Microsoft.AspNetCore.Testing.TestFrameworkFileLoggerAttribute +Microsoft.AspNetCore.Testing.TestMethodExtensions +Microsoft.AspNetCore.Testing.TestOutputDirectoryAttribute +Microsoft.AspNetCore.Testing.TestOutputDirectoryAttribute.PreserveExistingLogsInOutput.get -> bool +Microsoft.AspNetCore.Testing.TestPathUtilities +Microsoft.AspNetCore.Testing.TestPathUtilities.TestPathUtilities() -> void +Microsoft.AspNetCore.Testing.TestPlatformHelper +Microsoft.AspNetCore.Testing.Tracing.CollectingEventListener +Microsoft.AspNetCore.Testing.Tracing.CollectingEventListener.CollectingEventListener() -> void +Microsoft.AspNetCore.Testing.Tracing.EventAssert +Microsoft.AspNetCore.Testing.Tracing.EventSourceTestBase +Microsoft.AspNetCore.Testing.Tracing.EventSourceTestBase.Dispose() -> void +Microsoft.AspNetCore.Testing.Tracing.EventSourceTestBase.EventSourceTestBase() -> void +Microsoft.AspNetCore.Testing.WindowsVersions +Microsoft.Extensions.Logging.Testing.BeginScopeContext +Microsoft.Extensions.Logging.Testing.BeginScopeContext.BeginScopeContext() -> void +Microsoft.Extensions.Logging.Testing.ITestSink +Microsoft.Extensions.Logging.Testing.ITestSink.MessageLogged -> System.Action +Microsoft.Extensions.Logging.Testing.ITestSink.ScopeStarted -> System.Action +Microsoft.Extensions.Logging.Testing.LogLevelAttribute +Microsoft.Extensions.Logging.Testing.LogLevelAttribute.LogLevel.get -> Microsoft.Extensions.Logging.LogLevel +Microsoft.Extensions.Logging.Testing.LogLevelAttribute.LogLevelAttribute(Microsoft.Extensions.Logging.LogLevel logLevel) -> void +Microsoft.Extensions.Logging.Testing.LogValuesAssert +Microsoft.Extensions.Logging.Testing.TestLogger +Microsoft.Extensions.Logging.Testing.TestLogger.IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel) -> bool +Microsoft.Extensions.Logging.Testing.TestLogger +Microsoft.Extensions.Logging.Testing.TestLogger.IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel) -> bool +Microsoft.Extensions.Logging.Testing.TestLoggerFactory +Microsoft.Extensions.Logging.Testing.TestLoggerFactory.Dispose() -> void +Microsoft.Extensions.Logging.Testing.TestLoggerProvider +Microsoft.Extensions.Logging.Testing.TestLoggerProvider.Dispose() -> void +Microsoft.Extensions.Logging.Testing.TestSink +Microsoft.Extensions.Logging.Testing.TestSink.MessageLogged -> System.Action +Microsoft.Extensions.Logging.Testing.TestSink.ScopeStarted -> System.Action +Microsoft.Extensions.Logging.Testing.WriteContext +Microsoft.Extensions.Logging.Testing.WriteContext.EventId.get -> Microsoft.Extensions.Logging.EventId +Microsoft.Extensions.Logging.Testing.WriteContext.EventId.set -> void +Microsoft.Extensions.Logging.Testing.WriteContext.LogLevel.get -> Microsoft.Extensions.Logging.LogLevel +Microsoft.Extensions.Logging.Testing.WriteContext.LogLevel.set -> void +Microsoft.Extensions.Logging.Testing.WriteContext.WriteContext() -> void +Microsoft.Extensions.Logging.Testing.XunitLogger +Microsoft.Extensions.Logging.Testing.XunitLogger.IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel) -> bool +Microsoft.Extensions.Logging.Testing.XunitLoggerProvider +Microsoft.Extensions.Logging.Testing.XunitLoggerProvider.Dispose() -> void +Microsoft.Extensions.Logging.XunitLoggerFactoryExtensions +static Microsoft.AspNetCore.Testing.SkipOnCIAttribute.OnAzdo() -> bool +static Microsoft.AspNetCore.Testing.SkipOnCIAttribute.OnCI() -> bool +static Microsoft.AspNetCore.Testing.SkipOnCIAttribute.OnHelix() -> bool +static Microsoft.AspNetCore.Testing.SkipOnHelixAttribute.OnHelix() -> bool +static Microsoft.AspNetCore.Testing.TestPlatformHelper.IsLinux.get -> bool +static Microsoft.AspNetCore.Testing.TestPlatformHelper.IsMac.get -> bool +static Microsoft.AspNetCore.Testing.TestPlatformHelper.IsMono.get -> bool +static Microsoft.AspNetCore.Testing.TestPlatformHelper.IsWindows.get -> bool +virtual Microsoft.AspNetCore.Testing.LoggedTestBase.Dispose() -> void +~Microsoft.AspNetCore.Testing.AspNetTestAssemblyRunner.AspNetTestAssemblyRunner(Xunit.Abstractions.ITestAssembly testAssembly, System.Collections.Generic.IEnumerable testCases, Xunit.Abstractions.IMessageSink diagnosticMessageSink, Xunit.Abstractions.IMessageSink executionMessageSink, Xunit.Abstractions.ITestFrameworkExecutionOptions executionOptions) -> void +~Microsoft.AspNetCore.Testing.AspNetTestCollectionRunner.AspNetTestCollectionRunner(System.Collections.Generic.Dictionary assemblyFixtureMappings, Xunit.Abstractions.ITestCollection testCollection, System.Collections.Generic.IEnumerable testCases, Xunit.Abstractions.IMessageSink diagnosticMessageSink, Xunit.Sdk.IMessageBus messageBus, Xunit.Sdk.ITestCaseOrderer testCaseOrderer, Xunit.Sdk.ExceptionAggregator aggregator, System.Threading.CancellationTokenSource cancellationTokenSource) -> void +~Microsoft.AspNetCore.Testing.AspNetTestFramework.AspNetTestFramework(Xunit.Abstractions.IMessageSink messageSink) -> void +~Microsoft.AspNetCore.Testing.AspNetTestFrameworkExecutor.AspNetTestFrameworkExecutor(System.Reflection.AssemblyName assemblyName, Xunit.Abstractions.ISourceInformationProvider sourceInformationProvider, Xunit.Abstractions.IMessageSink diagnosticMessageSink) -> void +~Microsoft.AspNetCore.Testing.AssemblyFixtureAttribute.AssemblyFixtureAttribute(System.Type fixtureType) -> void +~Microsoft.AspNetCore.Testing.AssemblyFixtureAttribute.FixtureType.get -> System.Type +~Microsoft.AspNetCore.Testing.AssemblyTestLog.CreateLoggerFactory(Xunit.Abstractions.ITestOutputHelper output, string className, Microsoft.Extensions.Logging.LogLevel minLogLevel, string testName = null, System.DateTimeOffset? logStart = null) -> Microsoft.Extensions.Logging.ILoggerFactory +~Microsoft.AspNetCore.Testing.AssemblyTestLog.CreateLoggerFactory(Xunit.Abstractions.ITestOutputHelper output, string className, string testName = null, System.DateTimeOffset? logStart = null) -> Microsoft.Extensions.Logging.ILoggerFactory +~Microsoft.AspNetCore.Testing.AssemblyTestLog.CreateLoggerServices(Xunit.Abstractions.ITestOutputHelper output, string className, Microsoft.Extensions.Logging.LogLevel minLogLevel, out string normalizedTestName, out string logOutputDirectory, string testName = null, System.DateTimeOffset? logStart = null) -> System.IServiceProvider +~Microsoft.AspNetCore.Testing.AssemblyTestLog.CreateLoggerServices(Xunit.Abstractions.ITestOutputHelper output, string className, Microsoft.Extensions.Logging.LogLevel minLogLevel, out string normalizedTestName, string testName = null, System.DateTimeOffset? logStart = null) -> System.IServiceProvider +~Microsoft.AspNetCore.Testing.AssemblyTestLog.StartTestLog(Xunit.Abstractions.ITestOutputHelper output, string className, out Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Microsoft.Extensions.Logging.LogLevel minLogLevel, string testName = null) -> System.IDisposable +~Microsoft.AspNetCore.Testing.AssemblyTestLog.StartTestLog(Xunit.Abstractions.ITestOutputHelper output, string className, out Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, string testName = null) -> System.IDisposable +~Microsoft.AspNetCore.Testing.CollectDumpAttribute.OnTestEndAsync(Microsoft.AspNetCore.Testing.TestContext context, System.Exception exception, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Testing.CollectDumpAttribute.OnTestStartAsync(Microsoft.AspNetCore.Testing.TestContext context, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Testing.CultureReplacer.CultureReplacer(System.Globalization.CultureInfo culture, System.Globalization.CultureInfo uiCulture) -> void +~Microsoft.AspNetCore.Testing.CultureReplacer.CultureReplacer(string culture = "en-GB", string uiCulture = "en-US") -> void +~Microsoft.AspNetCore.Testing.DockerOnlyAttribute.SkipReason.get -> string +~Microsoft.AspNetCore.Testing.EnvironmentVariableSkipConditionAttribute.EnvironmentVariableSkipConditionAttribute(string variableName, params string[] values) -> void +~Microsoft.AspNetCore.Testing.EnvironmentVariableSkipConditionAttribute.SkipReason.get -> string +~Microsoft.AspNetCore.Testing.FrameworkSkipConditionAttribute.SkipReason.get -> string +~Microsoft.AspNetCore.Testing.FrameworkSkipConditionAttribute.SkipReason.set -> void +~Microsoft.AspNetCore.Testing.ILoggedTest.Initialize(Microsoft.AspNetCore.Testing.TestContext context, System.Reflection.MethodInfo methodInfo, object[] testMethodArguments, Xunit.Abstractions.ITestOutputHelper testOutputHelper) -> void +~Microsoft.AspNetCore.Testing.ILoggedTest.Logger.get -> Microsoft.Extensions.Logging.ILogger +~Microsoft.AspNetCore.Testing.ILoggedTest.LoggerFactory.get -> Microsoft.Extensions.Logging.ILoggerFactory +~Microsoft.AspNetCore.Testing.ILoggedTest.StartLog(out Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Microsoft.Extensions.Logging.LogLevel minLogLevel, string testName) -> System.IDisposable +~Microsoft.AspNetCore.Testing.ILoggedTest.TestOutputHelper.get -> Xunit.Abstractions.ITestOutputHelper +~Microsoft.AspNetCore.Testing.ITestCondition.SkipReason.get -> string +~Microsoft.AspNetCore.Testing.ITestMethodLifecycle.OnTestEndAsync(Microsoft.AspNetCore.Testing.TestContext context, System.Exception exception, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Testing.ITestMethodLifecycle.OnTestStartAsync(Microsoft.AspNetCore.Testing.TestContext context, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task +~Microsoft.AspNetCore.Testing.LoggedTest.LoggedTest(Xunit.Abstractions.ITestOutputHelper output = null) -> void +~Microsoft.AspNetCore.Testing.LoggedTest.TestSink.get -> Microsoft.Extensions.Logging.Testing.ITestSink +~Microsoft.AspNetCore.Testing.LoggedTest.TestSink.set -> void +~Microsoft.AspNetCore.Testing.LoggedTestBase.AddTestLogging(Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> void +~Microsoft.AspNetCore.Testing.LoggedTestBase.Context.get -> Microsoft.AspNetCore.Testing.TestContext +~Microsoft.AspNetCore.Testing.LoggedTestBase.LoggedTestBase(Xunit.Abstractions.ITestOutputHelper output = null) -> void +~Microsoft.AspNetCore.Testing.LoggedTestBase.Logger.get -> Microsoft.Extensions.Logging.ILogger +~Microsoft.AspNetCore.Testing.LoggedTestBase.Logger.set -> void +~Microsoft.AspNetCore.Testing.LoggedTestBase.LoggerFactory.get -> Microsoft.Extensions.Logging.ILoggerFactory +~Microsoft.AspNetCore.Testing.LoggedTestBase.LoggerFactory.set -> void +~Microsoft.AspNetCore.Testing.LoggedTestBase.ResolvedLogOutputDirectory.get -> string +~Microsoft.AspNetCore.Testing.LoggedTestBase.ResolvedLogOutputDirectory.set -> void +~Microsoft.AspNetCore.Testing.LoggedTestBase.ResolvedTestMethodName.get -> string +~Microsoft.AspNetCore.Testing.LoggedTestBase.ResolvedTestMethodName.set -> void +~Microsoft.AspNetCore.Testing.LoggedTestBase.StartLog(out Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Microsoft.Extensions.Logging.LogLevel minLogLevel, string testName = null) -> System.IDisposable +~Microsoft.AspNetCore.Testing.LoggedTestBase.StartLog(out Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, string testName = null) -> System.IDisposable +~Microsoft.AspNetCore.Testing.LoggedTestBase.TestOutputHelper.get -> Xunit.Abstractions.ITestOutputHelper +~Microsoft.AspNetCore.Testing.LoggedTestBase.TestOutputHelper.set -> void +~Microsoft.AspNetCore.Testing.MaximumOSVersionAttribute.MaximumOSVersionAttribute(Microsoft.AspNetCore.Testing.OperatingSystems operatingSystem, string maxVersion) -> void +~Microsoft.AspNetCore.Testing.MaximumOSVersionAttribute.SkipReason.get -> string +~Microsoft.AspNetCore.Testing.MaximumOSVersionAttribute.SkipReason.set -> void +~Microsoft.AspNetCore.Testing.MinimumOSVersionAttribute.MinimumOSVersionAttribute(Microsoft.AspNetCore.Testing.OperatingSystems operatingSystem, string minVersion) -> void +~Microsoft.AspNetCore.Testing.MinimumOSVersionAttribute.SkipReason.get -> string +~Microsoft.AspNetCore.Testing.MinimumOSVersionAttribute.SkipReason.set -> void +~Microsoft.AspNetCore.Testing.OSSkipConditionAttribute.OSSkipConditionAttribute(Microsoft.AspNetCore.Testing.OperatingSystems operatingSystem, params string[] versions) -> void +~Microsoft.AspNetCore.Testing.OSSkipConditionAttribute.SkipReason.get -> string +~Microsoft.AspNetCore.Testing.OSSkipConditionAttribute.SkipReason.set -> void +~Microsoft.AspNetCore.Testing.QuarantinedTestAttribute.QuarantinedTestAttribute(string reason = null) -> void +~Microsoft.AspNetCore.Testing.QuarantinedTestAttribute.Reason.get -> string +~Microsoft.AspNetCore.Testing.QuarantinedTestTraitDiscoverer.GetTraits(Xunit.Abstractions.IAttributeInfo traitAttribute) -> System.Collections.Generic.IEnumerable> +~Microsoft.AspNetCore.Testing.ReplaceCultureAttribute.Culture.get -> System.Globalization.CultureInfo +~Microsoft.AspNetCore.Testing.ReplaceCultureAttribute.ReplaceCultureAttribute(string currentCulture, string currentUICulture) -> void +~Microsoft.AspNetCore.Testing.ReplaceCultureAttribute.UICulture.get -> System.Globalization.CultureInfo +~Microsoft.AspNetCore.Testing.SkipOnCIAttribute.IssueUrl.get -> string +~Microsoft.AspNetCore.Testing.SkipOnCIAttribute.SkipOnCIAttribute(string issueUrl = "") -> void +~Microsoft.AspNetCore.Testing.SkipOnCIAttribute.SkipReason.get -> string +~Microsoft.AspNetCore.Testing.SkipOnHelixAttribute.IssueUrl.get -> string +~Microsoft.AspNetCore.Testing.SkipOnHelixAttribute.Queues.get -> string +~Microsoft.AspNetCore.Testing.SkipOnHelixAttribute.Queues.set -> void +~Microsoft.AspNetCore.Testing.SkipOnHelixAttribute.SkipOnHelixAttribute(string issueUrl) -> void +~Microsoft.AspNetCore.Testing.SkipOnHelixAttribute.SkipReason.get -> string +~Microsoft.AspNetCore.Testing.SkippedTestCase.SkippedTestCase(string skipReason, Xunit.Abstractions.IMessageSink diagnosticMessageSink, Xunit.Sdk.TestMethodDisplay defaultMethodDisplay, Xunit.Sdk.TestMethodDisplayOptions defaultMethodDisplayOptions, Xunit.Abstractions.ITestMethod testMethod, object[] testMethodArguments = null) -> void +~Microsoft.AspNetCore.Testing.TestContext.ConstructorArguments.get -> object[] +~Microsoft.AspNetCore.Testing.TestContext.FileOutput.get -> Microsoft.AspNetCore.Testing.TestFileOutputContext +~Microsoft.AspNetCore.Testing.TestContext.MethodArguments.get -> object[] +~Microsoft.AspNetCore.Testing.TestContext.Output.get -> Xunit.Abstractions.ITestOutputHelper +~Microsoft.AspNetCore.Testing.TestContext.TestClass.get -> System.Type +~Microsoft.AspNetCore.Testing.TestContext.TestContext(System.Type testClass, object[] constructorArguments, System.Reflection.MethodInfo testMethod, object[] methodArguments, Xunit.Abstractions.ITestOutputHelper output) -> void +~Microsoft.AspNetCore.Testing.TestContext.TestMethod.get -> System.Reflection.MethodInfo +~Microsoft.AspNetCore.Testing.TestFileOutputContext.AssemblyOutputDirectory.get -> string +~Microsoft.AspNetCore.Testing.TestFileOutputContext.GetUniqueFileName(string prefix, string extension) -> string +~Microsoft.AspNetCore.Testing.TestFileOutputContext.TestClassName.get -> string +~Microsoft.AspNetCore.Testing.TestFileOutputContext.TestClassOutputDirectory.get -> string +~Microsoft.AspNetCore.Testing.TestFileOutputContext.TestFileOutputContext(Microsoft.AspNetCore.Testing.TestContext parent) -> void +~Microsoft.AspNetCore.Testing.TestFileOutputContext.TestName.get -> string +~Microsoft.AspNetCore.Testing.TestFrameworkFileLoggerAttribute.TestFrameworkFileLoggerAttribute(string preserveExistingLogsInOutput, string tfm, string baseDirectory = null) -> void +~Microsoft.AspNetCore.Testing.TestOutputDirectoryAttribute.BaseDirectory.get -> string +~Microsoft.AspNetCore.Testing.TestOutputDirectoryAttribute.TargetFramework.get -> string +~Microsoft.AspNetCore.Testing.TestOutputDirectoryAttribute.TestOutputDirectoryAttribute(string preserveExistingLogsInOutput, string targetFramework, string baseDirectory = null) -> void +~Microsoft.AspNetCore.Testing.Tracing.CollectingEventListener.CollectFrom(System.Diagnostics.Tracing.EventSource eventSource) -> void +~Microsoft.AspNetCore.Testing.Tracing.CollectingEventListener.CollectFrom(string eventSourceName) -> void +~Microsoft.AspNetCore.Testing.Tracing.CollectingEventListener.GetEventsWritten() -> System.Collections.Generic.IReadOnlyList +~Microsoft.AspNetCore.Testing.Tracing.EventAssert.EventAssert(int expectedId, string expectedName, System.Diagnostics.Tracing.EventLevel expectedLevel) -> void +~Microsoft.AspNetCore.Testing.Tracing.EventAssert.Payload(string name, System.Action asserter) -> Microsoft.AspNetCore.Testing.Tracing.EventAssert +~Microsoft.AspNetCore.Testing.Tracing.EventAssert.Payload(string name, object expectedValue) -> Microsoft.AspNetCore.Testing.Tracing.EventAssert +~Microsoft.AspNetCore.Testing.Tracing.EventSourceTestBase.CollectFrom(System.Diagnostics.Tracing.EventSource eventSource) -> void +~Microsoft.AspNetCore.Testing.Tracing.EventSourceTestBase.CollectFrom(string eventSourceName) -> void +~Microsoft.AspNetCore.Testing.Tracing.EventSourceTestBase.GetEvents() -> System.Collections.Generic.IReadOnlyList +~Microsoft.Extensions.Logging.Testing.BeginScopeContext.LoggerName.get -> string +~Microsoft.Extensions.Logging.Testing.BeginScopeContext.LoggerName.set -> void +~Microsoft.Extensions.Logging.Testing.BeginScopeContext.Scope.get -> object +~Microsoft.Extensions.Logging.Testing.BeginScopeContext.Scope.set -> void +~Microsoft.Extensions.Logging.Testing.ITestSink.Begin(Microsoft.Extensions.Logging.Testing.BeginScopeContext context) -> void +~Microsoft.Extensions.Logging.Testing.ITestSink.BeginEnabled.get -> System.Func +~Microsoft.Extensions.Logging.Testing.ITestSink.BeginEnabled.set -> void +~Microsoft.Extensions.Logging.Testing.ITestSink.Scopes.get -> System.Collections.Concurrent.IProducerConsumerCollection +~Microsoft.Extensions.Logging.Testing.ITestSink.Scopes.set -> void +~Microsoft.Extensions.Logging.Testing.ITestSink.Write(Microsoft.Extensions.Logging.Testing.WriteContext context) -> void +~Microsoft.Extensions.Logging.Testing.ITestSink.WriteEnabled.get -> System.Func +~Microsoft.Extensions.Logging.Testing.ITestSink.WriteEnabled.set -> void +~Microsoft.Extensions.Logging.Testing.ITestSink.Writes.get -> System.Collections.Concurrent.IProducerConsumerCollection +~Microsoft.Extensions.Logging.Testing.ITestSink.Writes.set -> void +~Microsoft.Extensions.Logging.Testing.TestLogger.BeginScope(TState state) -> System.IDisposable +~Microsoft.Extensions.Logging.Testing.TestLogger.Log(Microsoft.Extensions.Logging.LogLevel logLevel, Microsoft.Extensions.Logging.EventId eventId, TState state, System.Exception exception, System.Func formatter) -> void +~Microsoft.Extensions.Logging.Testing.TestLogger.Name.get -> string +~Microsoft.Extensions.Logging.Testing.TestLogger.Name.set -> void +~Microsoft.Extensions.Logging.Testing.TestLogger.TestLogger(string name, Microsoft.Extensions.Logging.Testing.ITestSink sink, System.Func filter) -> void +~Microsoft.Extensions.Logging.Testing.TestLogger.TestLogger(string name, Microsoft.Extensions.Logging.Testing.ITestSink sink, bool enabled) -> void +~Microsoft.Extensions.Logging.Testing.TestLogger.BeginScope(TState state) -> System.IDisposable +~Microsoft.Extensions.Logging.Testing.TestLogger.Log(Microsoft.Extensions.Logging.LogLevel logLevel, Microsoft.Extensions.Logging.EventId eventId, TState state, System.Exception exception, System.Func formatter) -> void +~Microsoft.Extensions.Logging.Testing.TestLogger.TestLogger(Microsoft.Extensions.Logging.Testing.TestLoggerFactory factory) -> void +~Microsoft.Extensions.Logging.Testing.TestLoggerFactory.AddProvider(Microsoft.Extensions.Logging.ILoggerProvider provider) -> void +~Microsoft.Extensions.Logging.Testing.TestLoggerFactory.CreateLogger(string name) -> Microsoft.Extensions.Logging.ILogger +~Microsoft.Extensions.Logging.Testing.TestLoggerFactory.TestLoggerFactory(Microsoft.Extensions.Logging.Testing.ITestSink sink, bool enabled) -> void +~Microsoft.Extensions.Logging.Testing.TestLoggerProvider.CreateLogger(string categoryName) -> Microsoft.Extensions.Logging.ILogger +~Microsoft.Extensions.Logging.Testing.TestLoggerProvider.TestLoggerProvider(Microsoft.Extensions.Logging.Testing.ITestSink sink) -> void +~Microsoft.Extensions.Logging.Testing.TestSink.Begin(Microsoft.Extensions.Logging.Testing.BeginScopeContext context) -> void +~Microsoft.Extensions.Logging.Testing.TestSink.BeginEnabled.get -> System.Func +~Microsoft.Extensions.Logging.Testing.TestSink.BeginEnabled.set -> void +~Microsoft.Extensions.Logging.Testing.TestSink.Scopes.get -> System.Collections.Concurrent.IProducerConsumerCollection +~Microsoft.Extensions.Logging.Testing.TestSink.Scopes.set -> void +~Microsoft.Extensions.Logging.Testing.TestSink.TestSink(System.Func writeEnabled = null, System.Func beginEnabled = null) -> void +~Microsoft.Extensions.Logging.Testing.TestSink.Write(Microsoft.Extensions.Logging.Testing.WriteContext context) -> void +~Microsoft.Extensions.Logging.Testing.TestSink.WriteEnabled.get -> System.Func +~Microsoft.Extensions.Logging.Testing.TestSink.WriteEnabled.set -> void +~Microsoft.Extensions.Logging.Testing.TestSink.Writes.get -> System.Collections.Concurrent.IProducerConsumerCollection +~Microsoft.Extensions.Logging.Testing.TestSink.Writes.set -> void +~Microsoft.Extensions.Logging.Testing.WriteContext.Exception.get -> System.Exception +~Microsoft.Extensions.Logging.Testing.WriteContext.Exception.set -> void +~Microsoft.Extensions.Logging.Testing.WriteContext.Formatter.get -> System.Func +~Microsoft.Extensions.Logging.Testing.WriteContext.Formatter.set -> void +~Microsoft.Extensions.Logging.Testing.WriteContext.LoggerName.get -> string +~Microsoft.Extensions.Logging.Testing.WriteContext.LoggerName.set -> void +~Microsoft.Extensions.Logging.Testing.WriteContext.Message.get -> string +~Microsoft.Extensions.Logging.Testing.WriteContext.Scope.get -> object +~Microsoft.Extensions.Logging.Testing.WriteContext.Scope.set -> void +~Microsoft.Extensions.Logging.Testing.WriteContext.State.get -> object +~Microsoft.Extensions.Logging.Testing.WriteContext.State.set -> void +~Microsoft.Extensions.Logging.Testing.XunitLogger.BeginScope(TState state) -> System.IDisposable +~Microsoft.Extensions.Logging.Testing.XunitLogger.Log(Microsoft.Extensions.Logging.LogLevel logLevel, Microsoft.Extensions.Logging.EventId eventId, TState state, System.Exception exception, System.Func formatter) -> void +~Microsoft.Extensions.Logging.Testing.XunitLogger.XunitLogger(Xunit.Abstractions.ITestOutputHelper output, string category, Microsoft.Extensions.Logging.LogLevel minLogLevel, System.DateTimeOffset? logStart) -> void +~Microsoft.Extensions.Logging.Testing.XunitLoggerProvider.CreateLogger(string categoryName) -> Microsoft.Extensions.Logging.ILogger +~Microsoft.Extensions.Logging.Testing.XunitLoggerProvider.XunitLoggerProvider(Xunit.Abstractions.ITestOutputHelper output) -> void +~Microsoft.Extensions.Logging.Testing.XunitLoggerProvider.XunitLoggerProvider(Xunit.Abstractions.ITestOutputHelper output, Microsoft.Extensions.Logging.LogLevel minLevel) -> void +~Microsoft.Extensions.Logging.Testing.XunitLoggerProvider.XunitLoggerProvider(Xunit.Abstractions.ITestOutputHelper output, Microsoft.Extensions.Logging.LogLevel minLevel, System.DateTimeOffset? logStart) -> void +~const Microsoft.AspNetCore.Testing.HelixQueues.Centos7Amd64 = "Centos.7.Amd64.Open" -> string +~const Microsoft.AspNetCore.Testing.HelixQueues.Debian8Amd64 = "Debian.8.Amd64.Open" -> string +~const Microsoft.AspNetCore.Testing.HelixQueues.Debian9Amd64 = "Debian.9.Amd64.Open" -> string +~const Microsoft.AspNetCore.Testing.HelixQueues.Fedora27Amd64 = "Fedora.27.Amd64.Open" -> string +~const Microsoft.AspNetCore.Testing.HelixQueues.Fedora28Amd64 = "Fedora.28.Amd64.Open" -> string +~const Microsoft.AspNetCore.Testing.HelixQueues.Redhat7Amd64 = "Redhat.7.Amd64.Open" -> string +~const Microsoft.AspNetCore.Testing.HelixQueues.Ubuntu1604Amd64 = "Ubuntu.1604.Amd64.Open" -> string +~const Microsoft.AspNetCore.Testing.HelixQueues.Ubuntu1810Amd64 = "Ubuntu.1810.Amd64.Open" -> string +~const Microsoft.AspNetCore.Testing.HelixQueues.Windows10Amd64 = "Windows.10.Amd64.ClientRS4.VS2017.Open" -> string +~const Microsoft.AspNetCore.Testing.HelixQueues.macOS1012Amd64 = "OSX.1012.Amd64.Open" -> string +~const Microsoft.AspNetCore.Testing.Tracing.EventSourceTestBase.CollectionName = "Microsoft.AspNetCore.Testing.Tracing.EventSourceTestCollection" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win10 = "10.0" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win10_19H1 = "10.0.18362" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win10_19H2 = "10.0.18363" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win10_20H1 = "10.0.19033" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win10_RS4 = "10.0.17134" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win10_RS5 = "10.0.17763" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win2008R2 = "6.1" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win7 = "6.1" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win8 = "6.2" -> string +~const Microsoft.AspNetCore.Testing.WindowsVersions.Win81 = "6.3" -> string +~override Microsoft.AspNetCore.Testing.AspNetTestAssemblyRunner.AfterTestAssemblyStartingAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Testing.AspNetTestAssemblyRunner.BeforeTestAssemblyFinishedAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Testing.AspNetTestAssemblyRunner.RunTestCollectionAsync(Xunit.Sdk.IMessageBus messageBus, Xunit.Abstractions.ITestCollection testCollection, System.Collections.Generic.IEnumerable testCases, System.Threading.CancellationTokenSource cancellationTokenSource) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Testing.AspNetTestCollectionRunner.AfterTestCollectionStartingAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Testing.AspNetTestCollectionRunner.BeforeTestCollectionFinishedAsync() -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Testing.AspNetTestCollectionRunner.RunTestClassAsync(Xunit.Abstractions.ITestClass testClass, Xunit.Abstractions.IReflectionTypeInfo class, System.Collections.Generic.IEnumerable testCases) -> System.Threading.Tasks.Task +~override Microsoft.AspNetCore.Testing.AspNetTestFramework.CreateExecutor(System.Reflection.AssemblyName assemblyName) -> Xunit.Abstractions.ITestFrameworkExecutor +~override Microsoft.AspNetCore.Testing.AspNetTestFrameworkExecutor.RunTestCases(System.Collections.Generic.IEnumerable testCases, Xunit.Abstractions.IMessageSink executionMessageSink, Xunit.Abstractions.ITestFrameworkExecutionOptions executionOptions) -> void +~override Microsoft.AspNetCore.Testing.LoggedTest.Initialize(Microsoft.AspNetCore.Testing.TestContext context, System.Reflection.MethodInfo methodInfo, object[] testMethodArguments, Xunit.Abstractions.ITestOutputHelper testOutputHelper) -> void +~override Microsoft.AspNetCore.Testing.ReplaceCultureAttribute.After(System.Reflection.MethodInfo methodUnderTest) -> void +~override Microsoft.AspNetCore.Testing.ReplaceCultureAttribute.Before(System.Reflection.MethodInfo methodUnderTest) -> void +~override Microsoft.AspNetCore.Testing.SkippedTestCase.Deserialize(Xunit.Abstractions.IXunitSerializationInfo data) -> void +~override Microsoft.AspNetCore.Testing.SkippedTestCase.GetSkipReason(Xunit.Abstractions.IAttributeInfo factAttribute) -> string +~override Microsoft.AspNetCore.Testing.SkippedTestCase.Serialize(Xunit.Abstractions.IXunitSerializationInfo data) -> void +~override Microsoft.AspNetCore.Testing.Tracing.CollectingEventListener.OnEventSourceCreated(System.Diagnostics.Tracing.EventSource eventSource) -> void +~override Microsoft.AspNetCore.Testing.Tracing.CollectingEventListener.OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs eventData) -> void +~static Microsoft.AspNetCore.Testing.AssemblyTestLog.Create(System.Reflection.Assembly assembly, string baseDirectory) -> Microsoft.AspNetCore.Testing.AssemblyTestLog +~static Microsoft.AspNetCore.Testing.AssemblyTestLog.Create(string assemblyName, string baseDirectory) -> Microsoft.AspNetCore.Testing.AssemblyTestLog +~static Microsoft.AspNetCore.Testing.AssemblyTestLog.ForAssembly(System.Reflection.Assembly assembly) -> Microsoft.AspNetCore.Testing.AssemblyTestLog +~static Microsoft.AspNetCore.Testing.CultureReplacer.DefaultCulture.get -> System.Globalization.CultureInfo +~static Microsoft.AspNetCore.Testing.CultureReplacer.DefaultCultureName.get -> string +~static Microsoft.AspNetCore.Testing.CultureReplacer.DefaultUICultureName.get -> string +~static Microsoft.AspNetCore.Testing.DumpCollector.Collect(System.Diagnostics.Process process, string fileName) -> void +~static Microsoft.AspNetCore.Testing.ExceptionAssert.Throws(System.Action testCode) -> TException +~static Microsoft.AspNetCore.Testing.ExceptionAssert.Throws(System.Action testCode, string exceptionMessage) -> TException +~static Microsoft.AspNetCore.Testing.ExceptionAssert.Throws(System.Func testCode, string exceptionMessage) -> TException +~static Microsoft.AspNetCore.Testing.ExceptionAssert.ThrowsArgument(System.Action testCode, string paramName, string exceptionMessage) -> System.ArgumentException +~static Microsoft.AspNetCore.Testing.ExceptionAssert.ThrowsArgumentAsync(System.Func testCode, string paramName, string exceptionMessage) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.ExceptionAssert.ThrowsArgumentNull(System.Action testCode, string paramName) -> System.ArgumentNullException +~static Microsoft.AspNetCore.Testing.ExceptionAssert.ThrowsArgumentNullOrEmpty(System.Action testCode, string paramName) -> System.ArgumentException +~static Microsoft.AspNetCore.Testing.ExceptionAssert.ThrowsArgumentNullOrEmptyAsync(System.Func testCode, string paramName) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.ExceptionAssert.ThrowsArgumentNullOrEmptyString(System.Action testCode, string paramName) -> System.ArgumentException +~static Microsoft.AspNetCore.Testing.ExceptionAssert.ThrowsArgumentNullOrEmptyStringAsync(System.Func testCode, string paramName) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.ExceptionAssert.ThrowsArgumentOutOfRange(System.Action testCode, string paramName, string exceptionMessage, object actualValue = null) -> System.ArgumentOutOfRangeException +~static Microsoft.AspNetCore.Testing.ExceptionAssert.ThrowsAsync(System.Func testCode, string exceptionMessage) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.HttpClientSlim.GetSocket(System.Uri requestUri) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.HttpClientSlim.GetStringAsync(System.Uri requestUri, bool validateCertificate = true) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.HttpClientSlim.GetStringAsync(string requestUri, bool validateCertificate = true) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.HttpClientSlim.PostAsync(System.Uri requestUri, System.Net.Http.HttpContent content, bool validateCertificate = true) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.HttpClientSlim.PostAsync(string requestUri, System.Net.Http.HttpContent content, bool validateCertificate = true) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.RepeatContext.Current.get -> Microsoft.AspNetCore.Testing.RepeatContext +~static Microsoft.AspNetCore.Testing.SkipOnCIAttribute.GetIfOnAzdo() -> string +~static Microsoft.AspNetCore.Testing.SkipOnCIAttribute.GetTargetHelixQueue() -> string +~static Microsoft.AspNetCore.Testing.SkipOnHelixAttribute.GetTargetHelixQueue() -> string +~static Microsoft.AspNetCore.Testing.TaskExtensions.TimeoutAfter(this System.Threading.Tasks.Task task, System.TimeSpan timeout, string filePath = null, int lineNumber = 0) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.TaskExtensions.TimeoutAfter(this System.Threading.Tasks.Task task, System.TimeSpan timeout, string filePath = null, int lineNumber = 0) -> System.Threading.Tasks.Task +~static Microsoft.AspNetCore.Testing.TestFileOutputContext.GetAssemblyBaseDirectory(System.Reflection.Assembly assembly, string baseDirectory = null) -> string +~static Microsoft.AspNetCore.Testing.TestFileOutputContext.GetOutputDirectory(System.Reflection.Assembly assembly) -> string +~static Microsoft.AspNetCore.Testing.TestFileOutputContext.GetPreserveExistingLogsInOutput(System.Reflection.Assembly assembly) -> bool +~static Microsoft.AspNetCore.Testing.TestFileOutputContext.GetTestClassName(System.Type type) -> string +~static Microsoft.AspNetCore.Testing.TestFileOutputContext.GetTestMethodName(System.Reflection.MethodInfo method, object[] arguments) -> string +~static Microsoft.AspNetCore.Testing.TestFileOutputContext.RemoveIllegalFileChars(string s) -> string +~static Microsoft.AspNetCore.Testing.TestMethodExtensions.EvaluateSkipConditions(this Xunit.Abstractions.ITestMethod testMethod) -> string +~static Microsoft.AspNetCore.Testing.TestPathUtilities.GetSolutionRootDirectory(string solution) -> string +~static Microsoft.AspNetCore.Testing.Tracing.EventAssert.Collection(System.Collections.Generic.IEnumerable events, params Microsoft.AspNetCore.Testing.Tracing.EventAssert[] asserts) -> void +~static Microsoft.AspNetCore.Testing.Tracing.EventAssert.Event(int id, string name, System.Diagnostics.Tracing.EventLevel level) -> Microsoft.AspNetCore.Testing.Tracing.EventAssert +~static Microsoft.Extensions.Logging.Testing.LogValuesAssert.Contains(System.Collections.Generic.IEnumerable> expectedValues, System.Collections.Generic.IEnumerable> actualValues) -> void +~static Microsoft.Extensions.Logging.Testing.LogValuesAssert.Contains(string key, object value, System.Collections.Generic.IEnumerable> actualValues) -> void +~static Microsoft.Extensions.Logging.Testing.TestSink.EnableWithTypeName(Microsoft.Extensions.Logging.Testing.BeginScopeContext context) -> bool +~static Microsoft.Extensions.Logging.Testing.TestSink.EnableWithTypeName(Microsoft.Extensions.Logging.Testing.WriteContext context) -> bool +~static Microsoft.Extensions.Logging.XunitLoggerFactoryExtensions.AddXunit(this Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Xunit.Abstractions.ITestOutputHelper output) -> Microsoft.Extensions.Logging.ILoggerFactory +~static Microsoft.Extensions.Logging.XunitLoggerFactoryExtensions.AddXunit(this Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Xunit.Abstractions.ITestOutputHelper output, Microsoft.Extensions.Logging.LogLevel minLevel) -> Microsoft.Extensions.Logging.ILoggerFactory +~static Microsoft.Extensions.Logging.XunitLoggerFactoryExtensions.AddXunit(this Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Xunit.Abstractions.ITestOutputHelper output, Microsoft.Extensions.Logging.LogLevel minLevel, System.DateTimeOffset? logStart) -> Microsoft.Extensions.Logging.ILoggerFactory +~static Microsoft.Extensions.Logging.XunitLoggerFactoryExtensions.AddXunit(this Microsoft.Extensions.Logging.ILoggingBuilder builder, Xunit.Abstractions.ITestOutputHelper output) -> Microsoft.Extensions.Logging.ILoggingBuilder +~static Microsoft.Extensions.Logging.XunitLoggerFactoryExtensions.AddXunit(this Microsoft.Extensions.Logging.ILoggingBuilder builder, Xunit.Abstractions.ITestOutputHelper output, Microsoft.Extensions.Logging.LogLevel minLevel) -> Microsoft.Extensions.Logging.ILoggingBuilder +~static Microsoft.Extensions.Logging.XunitLoggerFactoryExtensions.AddXunit(this Microsoft.Extensions.Logging.ILoggingBuilder builder, Xunit.Abstractions.ITestOutputHelper output, Microsoft.Extensions.Logging.LogLevel minLevel, System.DateTimeOffset? logStart) -> Microsoft.Extensions.Logging.ILoggingBuilder +~virtual Microsoft.AspNetCore.Testing.LoggedTestBase.Initialize(Microsoft.AspNetCore.Testing.TestContext context, System.Reflection.MethodInfo methodInfo, object[] testMethodArguments, Xunit.Abstractions.ITestOutputHelper testOutputHelper) -> void diff --git a/src/Testing/src/TaskExtensions.cs b/src/Testing/src/TaskExtensions.cs index f99bf7361aca..a927b44ee2b6 100644 --- a/src/Testing/src/TaskExtensions.cs +++ b/src/Testing/src/TaskExtensions.cs @@ -3,6 +3,7 @@ using System; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; @@ -11,6 +12,7 @@ namespace Microsoft.AspNetCore.Testing { public static class TaskExtensions { + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public static async Task TimeoutAfter(this Task task, TimeSpan timeout, [CallerFilePath] string filePath = null, [CallerLineNumber] int lineNumber = default) @@ -34,6 +36,7 @@ public static async Task TimeoutAfter(this Task task, TimeSpan timeout, } } + [SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")] public static async Task TimeoutAfter(this Task task, TimeSpan timeout, [CallerFilePath] string filePath = null, [CallerLineNumber] int lineNumber = default) diff --git a/src/Tools/Extensions.ApiDescription.Server/src/build/Microsoft.Extensions.ApiDescription.Server.targets b/src/Tools/Extensions.ApiDescription.Server/src/build/Microsoft.Extensions.ApiDescription.Server.targets index 45410bca5387..3b9bc09c38e9 100644 --- a/src/Tools/Extensions.ApiDescription.Server/src/build/Microsoft.Extensions.ApiDescription.Server.targets +++ b/src/Tools/Extensions.ApiDescription.Server/src/build/Microsoft.Extensions.ApiDescription.Server.targets @@ -3,7 +3,7 @@ <_IsMicrosoftNETCoreApp20OrOlder>false <_IsMicrosoftNETCoreApp20OrOlder Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND - $([MSBuild]::VersionLessThanOrEquals('$(TargetFrameworkVersion)', '2.0') ">true + $([MSBuild]::VersionLessThanOrEquals('$(TargetFrameworkVersion)', '2.0')) ">true true diff --git a/src/Tools/dotnet-watch/src/BrowserRefreshServer.cs b/src/Tools/dotnet-watch/src/BrowserRefreshServer.cs index e0bd940ccabe..7ff3952d28b2 100644 --- a/src/Tools/dotnet-watch/src/BrowserRefreshServer.cs +++ b/src/Tools/dotnet-watch/src/BrowserRefreshServer.cs @@ -33,11 +33,13 @@ public BrowserRefreshServer(IReporter reporter) public async ValueTask StartAsync(CancellationToken cancellationToken) { + var hostName = Environment.GetEnvironmentVariable("DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAME") ?? "127.0.0.1"; + _refreshServer = new HostBuilder() .ConfigureWebHost(builder => { builder.UseKestrel(); - builder.UseUrls("http://127.0.0.1:0"); + builder.UseUrls($"http://{hostName}:0"); builder.Configure(app => { @@ -100,7 +102,7 @@ public async ValueTask DisposeAsync() { _refreshServer.Dispose(); } - + _taskCompletionSource.TrySetResult(); } } diff --git a/src/Tools/dotnet-watch/src/dotnet-watch.csproj b/src/Tools/dotnet-watch/src/dotnet-watch.csproj index 29750598258e..c74d67c0e0a0 100644 --- a/src/Tools/dotnet-watch/src/dotnet-watch.csproj +++ b/src/Tools/dotnet-watch/src/dotnet-watch.csproj @@ -29,12 +29,6 @@ - - void +Microsoft.Extensions.WebEncoders.Testing.JavaScriptTestEncoder +Microsoft.Extensions.WebEncoders.Testing.JavaScriptTestEncoder.JavaScriptTestEncoder() -> void +Microsoft.Extensions.WebEncoders.Testing.UrlTestEncoder +Microsoft.Extensions.WebEncoders.Testing.UrlTestEncoder.UrlTestEncoder() -> void +Microsoft.Extensions.WebEncoders.WebEncoderOptions +Microsoft.Extensions.WebEncoders.WebEncoderOptions.TextEncoderSettings.get -> System.Text.Encodings.Web.TextEncoderSettings? +Microsoft.Extensions.WebEncoders.WebEncoderOptions.TextEncoderSettings.set -> void +Microsoft.Extensions.WebEncoders.WebEncoderOptions.WebEncoderOptions() -> void +override Microsoft.Extensions.WebEncoders.Testing.HtmlTestEncoder.Encode(System.IO.TextWriter! output, char[]! value, int startIndex, int characterCount) -> void +override Microsoft.Extensions.WebEncoders.Testing.HtmlTestEncoder.Encode(System.IO.TextWriter! output, string! value, int startIndex, int characterCount) -> void +override Microsoft.Extensions.WebEncoders.Testing.HtmlTestEncoder.Encode(string! value) -> string! +override Microsoft.Extensions.WebEncoders.Testing.HtmlTestEncoder.FindFirstCharacterToEncode(char* text, int textLength) -> int +override Microsoft.Extensions.WebEncoders.Testing.HtmlTestEncoder.MaxOutputCharactersPerInputCharacter.get -> int +override Microsoft.Extensions.WebEncoders.Testing.HtmlTestEncoder.TryEncodeUnicodeScalar(int unicodeScalar, char* buffer, int bufferLength, out int numberOfCharactersWritten) -> bool +override Microsoft.Extensions.WebEncoders.Testing.HtmlTestEncoder.WillEncode(int unicodeScalar) -> bool +override Microsoft.Extensions.WebEncoders.Testing.JavaScriptTestEncoder.Encode(System.IO.TextWriter! output, char[]! value, int startIndex, int characterCount) -> void +override Microsoft.Extensions.WebEncoders.Testing.JavaScriptTestEncoder.Encode(System.IO.TextWriter! output, string! value, int startIndex, int characterCount) -> void +override Microsoft.Extensions.WebEncoders.Testing.JavaScriptTestEncoder.Encode(string! value) -> string! +override Microsoft.Extensions.WebEncoders.Testing.JavaScriptTestEncoder.FindFirstCharacterToEncode(char* text, int textLength) -> int +override Microsoft.Extensions.WebEncoders.Testing.JavaScriptTestEncoder.MaxOutputCharactersPerInputCharacter.get -> int +override Microsoft.Extensions.WebEncoders.Testing.JavaScriptTestEncoder.TryEncodeUnicodeScalar(int unicodeScalar, char* buffer, int bufferLength, out int numberOfCharactersWritten) -> bool +override Microsoft.Extensions.WebEncoders.Testing.JavaScriptTestEncoder.WillEncode(int unicodeScalar) -> bool +override Microsoft.Extensions.WebEncoders.Testing.UrlTestEncoder.Encode(System.IO.TextWriter! output, char[]! value, int startIndex, int characterCount) -> void +override Microsoft.Extensions.WebEncoders.Testing.UrlTestEncoder.Encode(System.IO.TextWriter! output, string! value, int startIndex, int characterCount) -> void +override Microsoft.Extensions.WebEncoders.Testing.UrlTestEncoder.Encode(string! value) -> string! +override Microsoft.Extensions.WebEncoders.Testing.UrlTestEncoder.FindFirstCharacterToEncode(char* text, int textLength) -> int +override Microsoft.Extensions.WebEncoders.Testing.UrlTestEncoder.MaxOutputCharactersPerInputCharacter.get -> int +override Microsoft.Extensions.WebEncoders.Testing.UrlTestEncoder.TryEncodeUnicodeScalar(int unicodeScalar, char* buffer, int bufferLength, out int numberOfCharactersWritten) -> bool +override Microsoft.Extensions.WebEncoders.Testing.UrlTestEncoder.WillEncode(int unicodeScalar) -> bool +static Microsoft.Extensions.DependencyInjection.EncoderServiceCollectionExtensions.AddWebEncoders(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.EncoderServiceCollectionExtensions.AddWebEncoders(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! setupAction) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!