From 14a3862f5f8e0dbc872839b00d67790f08df6e11 Mon Sep 17 00:00:00 2001 From: Kevin Pilch Date: Wed, 9 Sep 2020 21:07:15 -0700 Subject: [PATCH 01/66] Add Public API baselines for Security (#25651) --- .../Certificate/src/PublicAPI.Shipped.txt | 1 + .../Certificate/src/PublicAPI.Unshipped.txt | 69 +++++ .../Cookies/src/PublicAPI.Shipped.txt | 1 + .../Cookies/src/PublicAPI.Unshipped.txt | 116 ++++++++ .../Core/src/PublicAPI.Shipped.txt | 1 + .../Core/src/PublicAPI.Unshipped.txt | 271 ++++++++++++++++++ .../Facebook/src/PublicAPI.Shipped.txt | 1 + .../Facebook/src/PublicAPI.Unshipped.txt | 27 ++ .../Google/src/PublicAPI.Shipped.txt | 1 + .../Google/src/PublicAPI.Unshipped.txt | 39 +++ .../JwtBearer/src/PublicAPI.Shipped.txt | 1 + .../JwtBearer/src/PublicAPI.Unshipped.txt | 99 +++++++ .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 34 +++ .../Negotiate/src/PublicAPI.Shipped.txt | 1 + .../Negotiate/src/PublicAPI.Unshipped.txt | 71 +++++ .../OAuth/src/PublicAPI.Shipped.txt | 1 + .../OAuth/src/PublicAPI.Unshipped.txt | 139 +++++++++ .../OpenIdConnect/src/PublicAPI.Shipped.txt | 1 + .../OpenIdConnect/src/PublicAPI.Unshipped.txt | 212 ++++++++++++++ .../Twitter/src/PublicAPI.Shipped.txt | 1 + .../Twitter/src/PublicAPI.Unshipped.txt | 73 +++++ .../WsFederation/src/PublicAPI.Shipped.txt | 1 + .../WsFederation/src/PublicAPI.Unshipped.txt | 112 ++++++++ .../Core/src/PublicAPI.Shipped.txt | 1 + .../Core/src/PublicAPI.Unshipped.txt | 163 +++++++++++ .../Policy/src/PublicAPI.Shipped.txt | 1 + .../Policy/src/PublicAPI.Unshipped.txt | 36 +++ .../CookiePolicy/src/PublicAPI.Shipped.txt | 1 + .../CookiePolicy/src/PublicAPI.Unshipped.txt | 54 ++++ 30 files changed, 1530 insertions(+) create mode 100644 src/Security/Authentication/Certificate/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/Certificate/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/Cookies/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/Cookies/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/Core/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/Core/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/Facebook/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/Facebook/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/Google/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/Google/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/JwtBearer/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/JwtBearer/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/Negotiate/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/Negotiate/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/OAuth/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/OAuth/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/OpenIdConnect/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/OpenIdConnect/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/Twitter/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/Twitter/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authentication/WsFederation/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authentication/WsFederation/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authorization/Core/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authorization/Core/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/Authorization/Policy/src/PublicAPI.Shipped.txt create mode 100644 src/Security/Authorization/Policy/src/PublicAPI.Unshipped.txt create mode 100644 src/Security/CookiePolicy/src/PublicAPI.Shipped.txt create mode 100644 src/Security/CookiePolicy/src/PublicAPI.Unshipped.txt 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/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 From 682819278060eff3e1c1d559dad816a1156cf186 Mon Sep 17 00:00:00 2001 From: Kevin Pilch Date: Wed, 9 Sep 2020 21:07:55 -0700 Subject: [PATCH 02/66] Add public API baselines for Servers (#25652) --- .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 153 +++++++++++ src/Servers/HttpSys/src/PublicAPI.Shipped.txt | 1 + .../HttpSys/src/PublicAPI.Unshipped.txt | 111 ++++++++ src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt | 1 + .../IIS/IIS/src/PublicAPI.Unshipped.txt | 50 ++++ .../Kestrel/Core/src/PublicAPI.Shipped.txt | 1 + .../Kestrel/Core/src/PublicAPI.Unshipped.txt | 252 ++++++++++++++++++ .../Kestrel/Kestrel/src/PublicAPI.Shipped.txt | 1 + .../Kestrel/src/PublicAPI.Unshipped.txt | 7 + .../Transport.Libuv/src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 16 ++ .../Transport.Quic/src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 24 ++ .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 23 ++ 16 files changed, 644 insertions(+) create mode 100644 src/Servers/Connections.Abstractions/src/PublicAPI.Shipped.txt create mode 100644 src/Servers/Connections.Abstractions/src/PublicAPI.Unshipped.txt create mode 100644 src/Servers/HttpSys/src/PublicAPI.Shipped.txt create mode 100644 src/Servers/HttpSys/src/PublicAPI.Unshipped.txt create mode 100644 src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt create mode 100644 src/Servers/IIS/IIS/src/PublicAPI.Unshipped.txt create mode 100644 src/Servers/Kestrel/Core/src/PublicAPI.Shipped.txt create mode 100644 src/Servers/Kestrel/Core/src/PublicAPI.Unshipped.txt create mode 100644 src/Servers/Kestrel/Kestrel/src/PublicAPI.Shipped.txt create mode 100644 src/Servers/Kestrel/Kestrel/src/PublicAPI.Unshipped.txt create mode 100644 src/Servers/Kestrel/Transport.Libuv/src/PublicAPI.Shipped.txt create mode 100644 src/Servers/Kestrel/Transport.Libuv/src/PublicAPI.Unshipped.txt create mode 100644 src/Servers/Kestrel/Transport.Quic/src/PublicAPI.Shipped.txt create mode 100644 src/Servers/Kestrel/Transport.Quic/src/PublicAPI.Unshipped.txt create mode 100644 src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Shipped.txt create mode 100644 src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Unshipped.txt 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/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/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/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/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 From 70725b554c3820a2919bc27341d5865c87da5eec Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 10 Sep 2020 06:52:37 +0000 Subject: [PATCH 03/66] [release/5.0-rc2] Update dependencies from dotnet/efcore (#25748) [release/5.0-rc2] Update dependencies from dotnet/efcore --- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 35d2f34b7f7e..2762d0ee9cd1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,37 +13,37 @@ https://github.com/dotnet/blazor cc449601d638ffaab58ae9487f0fd010bb178a12 - + https://github.com/dotnet/efcore - e89ef2df81fef4d3228e210fc0d2214cfad540b2 + 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 - + https://github.com/dotnet/efcore - e89ef2df81fef4d3228e210fc0d2214cfad540b2 + 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 - + https://github.com/dotnet/efcore - e89ef2df81fef4d3228e210fc0d2214cfad540b2 + 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 - + https://github.com/dotnet/efcore - e89ef2df81fef4d3228e210fc0d2214cfad540b2 + 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 - + https://github.com/dotnet/efcore - e89ef2df81fef4d3228e210fc0d2214cfad540b2 + 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 - + https://github.com/dotnet/efcore - e89ef2df81fef4d3228e210fc0d2214cfad540b2 + 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 - + https://github.com/dotnet/efcore - e89ef2df81fef4d3228e210fc0d2214cfad540b2 + 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 - + https://github.com/dotnet/efcore - e89ef2df81fef4d3228e210fc0d2214cfad540b2 + 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index 2196a612674e..dd2e93f9899a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -135,14 +135,14 @@ 3.2.0 - 5.0.0-rc.2.20458.10 - 5.0.0-rc.2.20458.10 - 5.0.0-rc.2.20458.10 - 5.0.0-rc.2.20458.10 - 5.0.0-rc.2.20458.10 - 5.0.0-rc.2.20458.10 - 5.0.0-rc.2.20458.10 - 5.0.0-rc.2.20458.10 + 5.0.0-rc.2.20459.6 + 5.0.0-rc.2.20459.6 + 5.0.0-rc.2.20459.6 + 5.0.0-rc.2.20459.6 + 5.0.0-rc.2.20459.6 + 5.0.0-rc.2.20459.6 + 5.0.0-rc.2.20459.6 + 5.0.0-rc.2.20459.6 5.0.0-beta.20452.19 From 2228c98b887e61a156a5724ad7fd3bcaf635e5c8 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Thu, 10 Sep 2020 10:17:02 -0700 Subject: [PATCH 04/66] Use ICU sharding (#25521) --- AspNetCore.sln | 16 ++- src/Components/Components.slnf | 1 + src/Components/ComponentsNoDeps.slnf | 1 + .../Web.JS/dist/Release/blazor.server.js | 8 +- .../Web.JS/dist/Release/blazor.webassembly.js | 2 +- .../Web.JS/src/Platform/BootConfig.ts | 7 + .../Web.JS/src/Platform/Mono/MonoPlatform.ts | 111 +++++++++------- .../src/Platform/WebAssemblyStartOptions.ts | 5 + .../WasmBuildIntegrationTest.cs | 39 ++++++ .../WasmPublishIntegrationTest.cs | 5 + .../WebAssembly/Sdk/src/BootJsonData.cs | 25 +++- .../src/GenerateBlazorWebAssemblyBootJson.cs | 16 +++ ....NET.Sdk.BlazorWebAssembly.Current.targets | 16 ++- .../Wasm.Performance/Driver/Program.cs | 1 + ...soft.AspNetCore.Components.E2ETests.csproj | 1 + .../ClientRenderingMultpleComponentsTest.cs | 2 +- .../test/E2ETest/Tests/HeadComponentsTest.cs | 2 +- .../test/E2ETest/Tests/VirtualizationTest.cs | 2 +- .../Tests/WebAssemblyGlobalizationTest.cs | 4 +- .../Tests/WebAssemblyICUShardingTest.cs | 124 ++++++++++++++++++ .../GlobalizationWasmApp/App.fr-FR.resx | 123 +++++++++++++++++ .../GlobalizationWasmApp/App.kn.resx | 123 +++++++++++++++++ .../GlobalizationWasmApp/App.ko.resx | 123 +++++++++++++++++ .../testassets/GlobalizationWasmApp/App.razor | 8 ++ .../GlobalizationWasmApp.csproj | 18 +++ .../GlobalizationWasmApp/Program.cs | 39 ++++++ .../GlobalizationWasmApp/wwwroot/index.html | 21 +++ 27 files changed, 782 insertions(+), 61 deletions(-) create mode 100644 src/Components/test/E2ETest/Tests/WebAssemblyICUShardingTest.cs create mode 100644 src/Components/test/testassets/GlobalizationWasmApp/App.fr-FR.resx create mode 100644 src/Components/test/testassets/GlobalizationWasmApp/App.kn.resx create mode 100644 src/Components/test/testassets/GlobalizationWasmApp/App.ko.resx create mode 100644 src/Components/test/testassets/GlobalizationWasmApp/App.razor create mode 100644 src/Components/test/testassets/GlobalizationWasmApp/GlobalizationWasmApp.csproj create mode 100644 src/Components/test/testassets/GlobalizationWasmApp/Program.cs create mode 100644 src/Components/test/testassets/GlobalizationWasmApp/wwwroot/index.html diff --git a/AspNetCore.sln b/AspNetCore.sln index 958e9a61b7fa..0d813508744a 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}" @@ -7193,6 +7195,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 @@ -7205,7 +7219,6 @@ Global {010A9638-F20E-4FE6-A186-85732BFC9CB0}.Release|x64.Build.0 = Release|Any CPU {010A9638-F20E-4FE6-A186-85732BFC9CB0}.Release|x86.ActiveCfg = Release|Any CPU {010A9638-F20E-4FE6-A186-85732BFC9CB0}.Release|x86.Build.0 = Release|Any CPU -======= {FEF97646-9BC9-4D1B-A939-784D915C18A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FEF97646-9BC9-4D1B-A939-784D915C18A4}.Debug|Any CPU.Build.0 = Debug|Any CPU {FEF97646-9BC9-4D1B-A939-784D915C18A4}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -8030,6 +8043,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} 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/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/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 index a0b804d17cb5..6d11fd3c855c 100644 --- a/src/Components/Web.JS/dist/Release/blazor.webassembly.js +++ b/src/Components/Web.JS/dist/Release/blazor.webassembly.js @@ -1 +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=47)}([,,,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(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),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 c,l;s.attachDebuggerHotkey(e),window.Browser={init:function(){}},c=function(){window.Module=function(e,t,n){var c=this,l=e.bootConfig.resources,f=window.Module||{},d=["DEBUGGING ENABLED"];f.print=function(e){return d.indexOf(e)<0&&console.log(e)},f.printErr=function(e){console.error(e),u.showErrorNotification()},f.preRun=f.preRun||[],f.postRun=f.postRun||[],f.preloadPlugins=[];var h,b,g=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")&&(h=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(c,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,v(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=[],h&&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]}}))}))}(h),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"),g.forEach((function(e){return _(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 _(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(c,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 d(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*c+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 d(e+(t||0))},readStringField:function(e,t,n){var r,o=d(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 y(),f=new b},invokeWhenHeapUnlocked:function(e){f?f.enqueuePostReleaseAction(e):e()}};var p=document.createElement("a");function h(e){return e+12}function m(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 y(){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()(),y()}},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&&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(24);var s=n(17),u=n(20),c=n(12),l=n(48),f=n(36),d=n(18),p=n(49),h=n(50),m=n(51),v=n(52),y=n(37),b=!1;function g(e){return r(this,void 0,void 0,(function(){var t,n,f,g,E,_,I,C,N,S,A,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]),S=N[0],F.label=3;case 3:return F.trys.push([3,5,,6]),[4,t.start(S)];case 4:return F.sent(),[3,6];case 5:throw A=F.sent(),new Error("Failed to start platform. Reason: "+A);case 6:return t.callEntryPoint(S.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]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&&!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 + + + + From 0637599517adf7fb5114ec800c6eba3591d27b91 Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Thu, 10 Sep 2020 19:18:32 +0200 Subject: [PATCH 05/66] Update DfaMatcherBuilder to use the correct behavior (#25616) --- .../Routing/src/Matching/DfaMatcherBuilder.cs | 2 +- .../UnitTests/Matching/DfaMatcherBuilderTest.cs | 16 ++++++++++++---- .../Matching/DfaMatcherConformanceTest.cs | 4 ++-- 3 files changed, 15 insertions(+), 7 deletions(-) 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) { From 31fcc8bd26f0edc290704f69b892b4ebe966676a Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Thu, 10 Sep 2020 19:20:19 +0200 Subject: [PATCH 06/66] Update error page (#25706) --- .../BlazorServerWeb-CSharp/Pages/Error.cshtml | 50 ++++++++++++---- .../Pages/Error.cshtml.cs | 32 ++++++++++ .../Server/Pages/Error.cshtml | 59 ++++++++++++------- 3 files changed, 107 insertions(+), 34 deletions(-) create mode 100644 src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Pages/Error.cshtml.cs 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/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. +

+
+
+ + + From dda1d33f7bea9e85e6abcd5dab2642f22e9a8093 Mon Sep 17 00:00:00 2001 From: Juan Hoyos Date: Thu, 10 Sep 2020 10:59:37 -0700 Subject: [PATCH 07/66] Enable ARM64 installers build. (#25579) Changes WiX toolset used to 3.14 to support ARM64 Generates targeting pack from the x86/x64 leg, as it gets produced using a zip that gets generated there. The ARM64 leg now produces all the necessary msi's, exe, and wixlib needed for the installer to generate a bundle. --- .azure/pipelines/ci.yml | 61 +++++++++++++++---- build.ps1 | 5 +- eng/Build.props | 14 ++++- eng/targets/Wix.Common.props | 4 +- .../Windows/SharedFramework/Product.wxs | 4 +- .../SharedFramework/SharedFramework.wixproj | 4 ++ .../Windows/SharedFrameworkBundle/Bundle.wxs | 2 + .../SharedFrameworkBundle.wixproj | 43 ++++++++----- .../Windows/SharedFrameworkLib/Library.wxs | 3 + .../Windows/TargetingPack/Product.wxs | 4 +- src/Installers/Windows/Wix.targets | 5 ++ 11 files changed, 113 insertions(+), 36 deletions(-) diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index a3cce2ea12ed..a7dc48c12892 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' @@ -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 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..497ba8f4f80a 100644 --- a/eng/Build.props +++ b/eng/Build.props @@ -50,7 +50,7 @@ - + @@ -64,6 +64,10 @@ + + @@ -77,6 +81,14 @@ + + + + + + + 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/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 ec321d4c41a6..4112082782a1 100644 --- a/src/Installers/Windows/Wix.targets +++ b/src/Installers/Windows/Wix.targets @@ -8,6 +8,11 @@ <_FileRevisionVersion Condition=" '$(_FileRevisionVersion)' == '' ">42424 $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).$(AspNetCorePatchVersion).$(_FileRevisionVersion) + + + $(DefineConstants);InstallerVersion=500 + $(DefineConstants);InstallerVersion=200 + $(DefineConstants);MajorVersion=$(AspNetCoreMajorVersion) $(DefineConstants);MinorVersion=$(AspNetCoreMinorVersion) $(DefineConstants);Version=$(Version) From 158401f3612d804fd1e4298294f61934390019f3 Mon Sep 17 00:00:00 2001 From: Kevin Pilch Date: Thu, 10 Sep 2020 11:44:04 -0700 Subject: [PATCH 08/66] Add public API baselines to SignalR (#25653) --- .../HubConnectionExtensions.InvokeAsync.cs | 12 + ...ConnectionExtensions.InvokeAsyncGeneric.cs | 12 + .../src/HubConnectionExtensions.SendAsync.cs | 12 + ...nnectionExtensions.StreamAsChannelAsync.cs | 12 + .../HubConnectionExtensions.StreamAsync.cs | 12 + .../Client.Core/src/PublicAPI.Shipped.txt | 1 + .../Client.Core/src/PublicAPI.Unshipped.txt | 135 +++++++++ .../csharp/Client/src/PublicAPI.Shipped.txt | 1 + .../csharp/Client/src/PublicAPI.Unshipped.txt | 10 + .../src/HttpConnection.cs | 3 + .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 54 ++++ .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 34 +++ .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 51 ++++ .../Protocols.Json/src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 18 ++ .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 18 ++ .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 19 ++ .../SignalR.Common/src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 97 ++++++ .../server/Core/src/ClientProxyExtensions.cs | 12 + .../server/Core/src/HubConnectionContext.cs | 3 + .../server/Core/src/PublicAPI.Shipped.txt | 1 + .../server/Core/src/PublicAPI.Unshipped.txt | 280 ++++++++++++++++++ .../server/SignalR/src/PublicAPI.Shipped.txt | 1 + .../SignalR/src/PublicAPI.Unshipped.txt | 14 + .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 29 ++ 32 files changed, 849 insertions(+) create mode 100644 src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/clients/csharp/Client/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/clients/csharp/Client/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/common/Http.Connections.Common/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/common/Http.Connections.Common/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/common/Http.Connections/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/common/Http.Connections/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/common/Protocols.Json/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/common/Protocols.Json/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/common/Protocols.MessagePack/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/common/Protocols.MessagePack/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/common/Protocols.NewtonsoftJson/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/common/Protocols.NewtonsoftJson/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/common/SignalR.Common/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/common/SignalR.Common/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/server/Core/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/server/Core/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/server/SignalR/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/server/SignalR/src/PublicAPI.Unshipped.txt create mode 100644 src/SignalR/server/StackExchangeRedis/src/PublicAPI.Shipped.txt create mode 100644 src/SignalR/server/StackExchangeRedis/src/PublicAPI.Unshipped.txt 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/Http.Connections.Client/src/HttpConnection.cs b/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs index 71fd3d0f2acf..ecd2c30b8bea 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; @@ -181,6 +182,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 +198,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)) 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/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/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..88ebde464c60 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,6 +147,7 @@ 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) { // Try to grab the lock synchronously, if we fail, go to the slower path @@ -182,6 +184,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 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/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 From 848f42df8e25f51ff9e7783541ba63a9cfde189a Mon Sep 17 00:00:00 2001 From: Kevin Pilch Date: Thu, 10 Sep 2020 11:45:01 -0700 Subject: [PATCH 09/66] Add public API baselines for SiteExtensions, Testing, WebEncoders (#25654) --- AspNetCore.sln | 102 +++++ .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 6 + .../Sdk/HostingStartup/PublicAPI.Shipped.txt | 1 + .../HostingStartup/PublicAPI.Unshipped.txt | 4 + src/Testing/src/AssemblyTestLog.cs | 7 + src/Testing/src/CultureReplacer.cs | 2 + src/Testing/src/HttpClientSlim.cs | 7 +- src/Testing/src/LoggedTest/LoggedTestBase.cs | 3 + src/Testing/src/PublicAPI.Shipped.txt | 1 + src/Testing/src/PublicAPI.Unshipped.txt | 372 ++++++++++++++++++ src/Testing/src/TaskExtensions.cs | 3 + src/WebEncoders/src/PublicAPI.Shipped.txt | 1 + src/WebEncoders/src/PublicAPI.Unshipped.txt | 35 ++ 14 files changed, 544 insertions(+), 1 deletion(-) create mode 100644 src/SiteExtensions/Microsoft.Web.Xdt.Extensions/src/PublicAPI.Shipped.txt create mode 100644 src/SiteExtensions/Microsoft.Web.Xdt.Extensions/src/PublicAPI.Unshipped.txt create mode 100644 src/SiteExtensions/Sdk/HostingStartup/PublicAPI.Shipped.txt create mode 100644 src/SiteExtensions/Sdk/HostingStartup/PublicAPI.Unshipped.txt create mode 100644 src/Testing/src/PublicAPI.Shipped.txt create mode 100644 src/Testing/src/PublicAPI.Unshipped.txt create mode 100644 src/WebEncoders/src/PublicAPI.Shipped.txt create mode 100644 src/WebEncoders/src/PublicAPI.Unshipped.txt diff --git a/AspNetCore.sln b/AspNetCore.sln index 0d813508744a..28551367a76c 100644 --- a/AspNetCore.sln +++ b/AspNetCore.sln @@ -1523,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 @@ -7291,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 @@ -8054,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/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/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/WebEncoders/src/PublicAPI.Shipped.txt b/src/WebEncoders/src/PublicAPI.Shipped.txt new file mode 100644 index 000000000000..7dc5c58110bf --- /dev/null +++ b/src/WebEncoders/src/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable diff --git a/src/WebEncoders/src/PublicAPI.Unshipped.txt b/src/WebEncoders/src/PublicAPI.Unshipped.txt new file mode 100644 index 000000000000..782ac82396bd --- /dev/null +++ b/src/WebEncoders/src/PublicAPI.Unshipped.txt @@ -0,0 +1,35 @@ +#nullable enable +Microsoft.Extensions.DependencyInjection.EncoderServiceCollectionExtensions +Microsoft.Extensions.WebEncoders.Testing.HtmlTestEncoder +Microsoft.Extensions.WebEncoders.Testing.HtmlTestEncoder.HtmlTestEncoder() -> 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! From 09160a779f45643a2e0cc66db2398ece5d02362b Mon Sep 17 00:00:00 2001 From: Pranav K Date: Thu, 10 Sep 2020 11:54:00 -0700 Subject: [PATCH 10/66] Use JsonSerializerDefaults instead of specifying individual options (#25747) This lets MVC use the defaults as specified by System.Text.Json. Right now, these defaults are identical to the two properties that were removed. However this allows MVC to pick up new S.T.J defaults in 6.0 including when users attempt to use a 6.0 versioned package with 5.0 --- src/Mvc/Mvc.Core/src/JsonOptions.cs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) 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, }; } } From 0811b3cb75a6f6182a2403a58215782651382a4d Mon Sep 17 00:00:00 2001 From: Pranav K Date: Thu, 10 Sep 2020 11:55:37 -0700 Subject: [PATCH 11/66] Point to the correct directory for SDK test assets (#25734) This ends up building SDK's test assets as part of a regular build which ends up failing in a clean build. --- eng/Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Build.props b/eng/Build.props index 497ba8f4f80a..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; From 3692e122ffdf282001da9e2b5f0395688832071a Mon Sep 17 00:00:00 2001 From: Kevin Pilch Date: Thu, 10 Sep 2020 13:27:09 -0700 Subject: [PATCH 12/66] Add Public API baselines for Razor (#25637) --- src/ObjectPool/src/PublicAPI.Shipped.txt | 1 + src/ObjectPool/src/PublicAPI.Unshipped.txt | 50 + .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 81 + .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 1621 +++++++++++++++++ .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 26 + .../Razor.Runtime/src/PublicAPI.Shipped.txt | 1 + .../Razor.Runtime/src/PublicAPI.Unshipped.txt | 215 +++ src/Razor/Razor/src/PublicAPI.Shipped.txt | 1 + src/Razor/Razor/src/PublicAPI.Unshipped.txt | 166 ++ 12 files changed, 2165 insertions(+) create mode 100644 src/ObjectPool/src/PublicAPI.Shipped.txt create mode 100644 src/ObjectPool/src/PublicAPI.Unshipped.txt create mode 100644 src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/PublicAPI.Shipped.txt create mode 100644 src/Razor/Microsoft.AspNetCore.Mvc.Razor.Extensions/src/PublicAPI.Unshipped.txt create mode 100644 src/Razor/Microsoft.AspNetCore.Razor.Language/src/PublicAPI.Shipped.txt create mode 100644 src/Razor/Microsoft.AspNetCore.Razor.Language/src/PublicAPI.Unshipped.txt create mode 100644 src/Razor/Microsoft.CodeAnalysis.Razor/src/PublicAPI.Shipped.txt create mode 100644 src/Razor/Microsoft.CodeAnalysis.Razor/src/PublicAPI.Unshipped.txt create mode 100644 src/Razor/Razor.Runtime/src/PublicAPI.Shipped.txt create mode 100644 src/Razor/Razor.Runtime/src/PublicAPI.Unshipped.txt create mode 100644 src/Razor/Razor/src/PublicAPI.Shipped.txt create mode 100644 src/Razor/Razor/src/PublicAPI.Unshipped.txt 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/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/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 From cc0665cb6f12b1905a3dd3135c747e51db41a9a4 Mon Sep 17 00:00:00 2001 From: Ken Egozi Date: Thu, 10 Sep 2020 15:02:21 -0700 Subject: [PATCH 13/66] TypeReference usage clarification (#25719) This change makes TypeReference usage a little bit easier - Marking it abstract make it so that usages cannot "forget" subclassing (or omitting the { } part). Previously the error message would be confusing as the supertype would be Object. - Removing the instanceof check and relying on exception since instantiating TypeReference without a type parameter (new TypeReference() ) *is* exceptional as it goes against the intention of this class altogether. - Added some clarification to the javadoc regarding intended usage, and a link to prior art for further reading. --- .../com/microsoft/signalr/TypeReference.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) 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; } From fa2a5076e4bb822bf238c9542f9440de8bfbf548 Mon Sep 17 00:00:00 2001 From: Zachary Becknell Date: Thu, 10 Sep 2020 18:10:47 -0400 Subject: [PATCH 14/66] Add option to specify hostname in BrowserRefreshServer (#25572) * Add option to specify hostName for refresh server * Update env variable name per suggestion Co-authored-by: Pranav K Co-authored-by: Pranav K --- src/Tools/dotnet-watch/src/BrowserRefreshServer.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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(); } } From 690c7173146129d0e595d0dd075cbaa27ed84ebd Mon Sep 17 00:00:00 2001 From: Pranav K Date: Thu, 10 Sep 2020 15:12:17 -0700 Subject: [PATCH 15/66] Update to latest SDK (#25421) * React to platform compatibility analyzer warnings * React to new warnings * Add platform compatibility attributes --- eng/targets/CSharp.Common.targets | 3 + global.json | 4 +- .../Ignitor/src/CancellableOperation.cs | 2 +- .../CircuitGracefulTerminationTests.cs | 2 +- .../src/DataProtectionBuilderExtensions.cs | 6 + .../src/KeyManagement/XmlKeyManager.cs | 7 ++ ...Microsoft.AspNetCore.DataProtection.csproj | 4 +- .../src/RegistryPolicyResolver.cs | 2 + .../src/Repositories/RegistryXmlRepository.cs | 2 + .../src/XmlEncryption/DpapiNGXmlEncryptor.cs | 2 + .../src/XmlEncryption/DpapiXmlEncryptor.cs | 2 + .../src/Properties/AssemblyInfo.cs | 2 + .../HeaderDictionaryTypeExtensionsTest.cs | 4 +- .../UnitTests/Template/TemplateParserTests.cs | 2 +- .../BuildIntrospectionTest.cs | 2 +- .../Negotiate/src/NegotiateHandler.cs | 2 +- ...Microsoft.AspNetCore.Server.HttpSys.csproj | 3 + .../src/WebHostBuilderHttpSysExtensions.cs | 5 +- .../Microsoft.AspNetCore.Server.IIS.csproj | 5 +- ...ft.AspNetCore.Server.IISIntegration.csproj | 3 + ...tCore.Server.IntegrationTesting.IIS.csproj | 2 + src/Servers/Kestrel/stress/Program.cs | 2 +- .../CertificateManager.cs | 2 + .../WindowsCertificateManager.cs | 2 + src/Shared/PlatformAttributes.cs | 107 ++++++++++++++++++ .../runtime/Http2/HPackIntegerTest.cs | 3 +- .../src/Internal/HttpConnectionDispatcher.cs | 2 +- 27 files changed, 169 insertions(+), 15 deletions(-) create mode 100644 src/Shared/PlatformAttributes.cs diff --git a/eng/targets/CSharp.Common.targets b/eng/targets/CSharp.Common.targets index 2d9deb5890ba..c9ef556f4d86 100644 --- a/eng/targets/CSharp.Common.targets +++ b/eng/targets/CSharp.Common.targets @@ -13,6 +13,9 @@ $(NoWarn);RS0041 + + + $(NoWarn);CA1416 (TaskContinuationOptions.RunContinuationsAsynchronously); + Completion = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); Completion.Task.ContinueWith( (task, state) => { diff --git a/src/Components/test/E2ETest/ServerExecutionTests/CircuitGracefulTerminationTests.cs b/src/Components/test/E2ETest/ServerExecutionTests/CircuitGracefulTerminationTests.cs index 69c20cb970e6..eb3340427edc 100644 --- a/src/Components/test/E2ETest/ServerExecutionTests/CircuitGracefulTerminationTests.cs +++ b/src/Components/test/E2ETest/ServerExecutionTests/CircuitGracefulTerminationTests.cs @@ -47,7 +47,7 @@ protected override void InitializeAsyncCore() Browser.MountTestComponent(); Browser.Equal("Current count: 0", () => Browser.FindElement(By.TagName("p")).Text); - GracefulDisconnectCompletionSource = new TaskCompletionSource(TaskContinuationOptions.RunContinuationsAsynchronously); + GracefulDisconnectCompletionSource = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); Sink = _serverFixture.Host.Services.GetRequiredService(); Messages = new List<(Extensions.Logging.LogLevel level, string eventIdName)>(); Sink.MessageLogged += Log; diff --git a/src/DataProtection/DataProtection/src/DataProtectionBuilderExtensions.cs b/src/DataProtection/DataProtection/src/DataProtectionBuilderExtensions.cs index 7789ca074f04..e6618bd535cd 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) 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..520a9f474587 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/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/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/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/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs b/src/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs index de73ff376a45..c857f59ee4a0 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() 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/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/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/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/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/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/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..0d44154118ce --- /dev/null +++ b/src/Shared/PlatformAttributes.cs @@ -0,0 +1,107 @@ +// 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. + /// + /// + /// Primarily used by OS bindings to indicate APIs that are only available in + /// earlier versions. + /// + [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/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. From 36f8642f0b49c502ca6afaaf7d4beecc5744f1ce Mon Sep 17 00:00:00 2001 From: Pranav K Date: Thu, 10 Sep 2020 15:14:30 -0700 Subject: [PATCH 16/66] Use T? for unconstrained nullable types (#25261) * Use T? for unconstrained nullable types * Apply suggestions from code review --- src/Components/Components/src/BindConverter.cs | 6 +++--- .../Components/src/EventCallbackOfT.cs | 4 ++-- src/Components/Components/src/ParameterView.cs | 5 ++--- src/Components/Server/src/Circuits/CircuitId.cs | 3 +-- src/Components/Web/src/Forms/InputBase.cs | 16 ++++++---------- src/Components/Web/src/Forms/InputDate.cs | 10 ++++++---- src/Components/Web/src/Forms/InputExtensions.cs | 2 +- src/Components/Web/src/Forms/InputFile.cs | 5 +++++ .../Forms/InputFile/RemoteBrowserFileStream.cs | 5 +++-- src/Components/Web/src/Forms/InputNumber.cs | 4 ++-- src/Components/Web/src/Forms/InputRadio.cs | 4 +--- src/Components/Web/src/Forms/InputRadioGroup.cs | 2 +- src/Components/Web/src/Forms/InputSelect.cs | 2 +- .../src/IJSInProcessRuntime.cs | 6 +++--- .../Implementation/JSInProcessObjectReference.cs | 1 - .../src/JSInProcessRuntime.cs | 9 +++++---- .../Microsoft.JSInterop/src/JSRuntime.cs | 2 +- .../src/JSRuntimeExtensions.cs | 6 +++--- .../Microsoft.JSInterop/test/JSRuntimeTest.cs | 3 +++ 19 files changed, 49 insertions(+), 46 deletions(-) diff --git a/src/Components/Components/src/BindConverter.cs b/src/Components/Components/src/BindConverter.cs index 223681ad0de9..4c72cb728570 100644 --- a/src/Components/Components/src/BindConverter.cs +++ b/src/Components/Components/src/BindConverter.cs @@ -25,8 +25,8 @@ public static class BindConverter 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 +1276,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/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/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/src/Forms/InputBase.cs b/src/Components/Web/src/Forms/InputBase.cs index 08fd03c92a9d..d7793583d2d8 100644 --- a/src/Components/Web/src/Forms/InputBase.cs +++ b/src/Components/Web/src/Forms/InputBase.cs @@ -35,10 +35,8 @@ public abstract class InputBase : ComponentBase, IDisposable /// /// @bind-Value="model.PropertyName" /// - [AllowNull] - [MaybeNull] [Parameter] - public TValue Value { get; set; } = default; + public TValue? Value { get; set; } /// /// Gets or sets a callback that updates the bound value. @@ -69,17 +67,15 @@ public abstract class InputBase : ComponentBase, IDisposable /// /// Gets or sets the current value of the input. /// - [AllowNull] - protected TValue CurrentValue + protected TValue? CurrentValue { - [return: MaybeNull] - get => Value!; + get => Value; set { var hasChanged = !EqualityComparer.Default.Equals(value, Value); if (hasChanged) { - Value = value!; + Value = value; _ = ValueChanged.InvokeAsync(Value); EditContext.NotifyFieldChanged(FieldIdentifier); } @@ -148,7 +144,7 @@ protected InputBase() /// /// The value to format. /// A string representation of the value. - protected virtual string? FormatValueAsString([AllowNull] TValue value) + protected virtual string? FormatValueAsString(TValue? value) => value?.ToString(); /// @@ -159,7 +155,7 @@ protected InputBase() /// An instance of . /// If the value could not be parsed, provides a validation error message. /// True if the value could be parsed; otherwise false. - protected abstract bool TryParseValueFromString(string? value, [MaybeNull] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage); + protected abstract bool TryParseValueFromString(string? value, [MaybeNullWhen(false)] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage); /// /// Gets a string that indicates the status of the field being edited. This will include diff --git a/src/Components/Web/src/Forms/InputDate.cs b/src/Components/Web/src/Forms/InputDate.cs index 4372646c7b15..9b180f76e25e 100644 --- a/src/Components/Web/src/Forms/InputDate.cs +++ b/src/Components/Web/src/Forms/InputDate.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.Diagnostics.CodeAnalysis; using System.Globalization; using Microsoft.AspNetCore.Components.Rendering; @@ -34,7 +35,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder) } /// - protected override string FormatValueAsString([AllowNull] TValue value) + protected override string FormatValueAsString(TValue? value) { switch (value) { @@ -48,7 +49,7 @@ protected override string FormatValueAsString([AllowNull] TValue value) } /// - protected override bool TryParseValueFromString(string? value, [MaybeNull] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) + protected override bool TryParseValueFromString(string? value, [MaybeNullWhen(false)] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) { // Unwrap nullable types. We don't have to deal with receiving empty values for nullable // types here, because the underlying InputBase already covers that. @@ -70,6 +71,7 @@ protected override bool TryParseValueFromString(string? value, [MaybeNull] out T if (success) { + Debug.Assert(result != null); validationErrorMessage = null; return true; } @@ -80,7 +82,7 @@ protected override bool TryParseValueFromString(string? value, [MaybeNull] out T } } - static bool TryParseDateTime(string? value, [MaybeNullWhen(false)] out TValue result) + private static bool TryParseDateTime(string? value, [MaybeNullWhen(false)] out TValue result) { var success = BindConverter.TryConvertToDateTime(value, CultureInfo.InvariantCulture, DateFormat, out var parsedValue); if (success) @@ -95,7 +97,7 @@ static bool TryParseDateTime(string? value, [MaybeNullWhen(false)] out TValue re } } - static bool TryParseDateTimeOffset(string? value, [MaybeNullWhen(false)] out TValue result) + private static bool TryParseDateTimeOffset(string? value, [MaybeNullWhen(false)] out TValue result) { var success = BindConverter.TryConvertToDateTimeOffset(value, CultureInfo.InvariantCulture, DateFormat, out var parsedValue); if (success) diff --git a/src/Components/Web/src/Forms/InputExtensions.cs b/src/Components/Web/src/Forms/InputExtensions.cs index 748af5c78e88..e0991b5cb320 100644 --- a/src/Components/Web/src/Forms/InputExtensions.cs +++ b/src/Components/Web/src/Forms/InputExtensions.cs @@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Components.Forms { internal static class InputExtensions { - public static bool TryParseSelectableValueFromString(this InputBase input, string? value, [MaybeNull] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) + public static bool TryParseSelectableValueFromString(this InputBase input, string? value, [MaybeNullWhen(false)] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) { try { diff --git a/src/Components/Web/src/Forms/InputFile.cs b/src/Components/Web/src/Forms/InputFile.cs index ada1a96f10b7..7eb6546d4a9e 100644 --- a/src/Components/Web/src/Forms/InputFile.cs +++ b/src/Components/Web/src/Forms/InputFile.cs @@ -73,6 +73,11 @@ internal async ValueTask ConvertToImageFileAsync(BrowserFile file, { var imageFile = await JSRuntime.InvokeAsync(InputFileInterop.ToImageFile, _inputFileElement, file.Id, format, maxWidth, maxHeight); + if (imageFile is null) + { + throw new InvalidOperationException("ToImageFile returned an unexpected null result."); + } + imageFile.Owner = this; return imageFile; diff --git a/src/Components/Web/src/Forms/InputFile/RemoteBrowserFileStream.cs b/src/Components/Web/src/Forms/InputFile/RemoteBrowserFileStream.cs index 8f712ad3de8a..2616ecef0ca6 100644 --- a/src/Components/Web/src/Forms/InputFile/RemoteBrowserFileStream.cs +++ b/src/Components/Web/src/Forms/InputFile/RemoteBrowserFileStream.cs @@ -4,6 +4,7 @@ using System; using System.Buffers; using System.IO.Pipelines; +using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Microsoft.JSInterop; @@ -64,10 +65,10 @@ private async Task FillBuffer(PipeWriter writer, CancellationToken cancellationT offset, segmentSize); - if (bytes.Length != segmentSize) + if (bytes is null || bytes.Length != segmentSize) { throw new InvalidOperationException( - $"A segment with size {bytes.Length} bytes was received, but {segmentSize} bytes were expected."); + $"A segment with size {bytes?.Length ?? 0} bytes was received, but {segmentSize} bytes were expected."); } bytes.CopyTo(pipeBuffer); diff --git a/src/Components/Web/src/Forms/InputNumber.cs b/src/Components/Web/src/Forms/InputNumber.cs index 51ac2c524151..7c51654a855e 100644 --- a/src/Components/Web/src/Forms/InputNumber.cs +++ b/src/Components/Web/src/Forms/InputNumber.cs @@ -55,7 +55,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder) } /// - protected override bool TryParseValueFromString(string? value, [MaybeNull] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) + protected override bool TryParseValueFromString(string? value, [MaybeNullWhen(false)] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) { if (BindConverter.TryConvertTo(value, CultureInfo.InvariantCulture, out result)) { @@ -74,7 +74,7 @@ protected override bool TryParseValueFromString(string? value, [MaybeNull] out T /// /// The value to format. /// A string representation of the value. - protected override string? FormatValueAsString([AllowNull] TValue value) + protected override string? FormatValueAsString(TValue? value) { // Avoiding a cast to IFormattable to avoid boxing. switch (value) diff --git a/src/Components/Web/src/Forms/InputRadio.cs b/src/Components/Web/src/Forms/InputRadio.cs index 4a4ad46dc3a5..77df88376f08 100644 --- a/src/Components/Web/src/Forms/InputRadio.cs +++ b/src/Components/Web/src/Forms/InputRadio.cs @@ -27,10 +27,8 @@ public class InputRadio : ComponentBase /// /// Gets or sets the value of this input. /// - [AllowNull] - [MaybeNull] [Parameter] - public TValue Value { get; set; } = default; + public TValue? Value { get; set; } /// /// Gets or sets the name of the parent input radio group. diff --git a/src/Components/Web/src/Forms/InputRadioGroup.cs b/src/Components/Web/src/Forms/InputRadioGroup.cs index 661bd91e2424..8d5e663a42c7 100644 --- a/src/Components/Web/src/Forms/InputRadioGroup.cs +++ b/src/Components/Web/src/Forms/InputRadioGroup.cs @@ -52,7 +52,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder) } /// - protected override bool TryParseValueFromString(string? value, [MaybeNull] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) + protected override bool TryParseValueFromString(string? value, [MaybeNullWhen(false)] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) => this.TryParseSelectableValueFromString(value, out result, out validationErrorMessage); } } diff --git a/src/Components/Web/src/Forms/InputSelect.cs b/src/Components/Web/src/Forms/InputSelect.cs index b7d5dd702552..1a77ff83726e 100644 --- a/src/Components/Web/src/Forms/InputSelect.cs +++ b/src/Components/Web/src/Forms/InputSelect.cs @@ -29,7 +29,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder) } /// - protected override bool TryParseValueFromString(string? value, [MaybeNull] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) + protected override bool TryParseValueFromString(string? value, [MaybeNullWhen(false)] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage) => this.TryParseSelectableValueFromString(value, out result, out validationErrorMessage); } } 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); } From 18d261b20c2e7f23ebd1971a8ce2fa701be757e0 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Thu, 10 Sep 2020 15:15:11 -0700 Subject: [PATCH 17/66] Use T? for unconstrained nullable types (#25772) --- .../src/AuthenticationProperties.cs | 5 ++--- src/Http/Headers/src/BaseHeaderParser.cs | 5 ++--- src/Http/Headers/src/CacheControlHeaderValue.cs | 2 +- .../Headers/src/ContentDispositionHeaderValue.cs | 2 +- src/Http/Headers/src/ContentRangeHeaderValue.cs | 2 +- src/Http/Headers/src/EntityTagHeaderValue.cs | 4 ++-- src/Http/Headers/src/GenericHeaderParser.cs | 5 ++--- src/Http/Headers/src/HttpHeaderParser.cs | 5 ++--- src/Http/Headers/src/MediaTypeHeaderValue.cs | 4 ++-- src/Http/Headers/src/NameValueHeaderValue.cs | 4 ++-- .../Headers/src/RangeConditionHeaderValue.cs | 2 +- src/Http/Headers/src/RangeHeaderValue.cs | 2 +- src/Http/Headers/src/SetCookieHeaderValue.cs | 4 ++-- .../Headers/src/StringWithQualityHeaderValue.cs | 4 ++-- .../src/HttpResponseJsonExtensions.cs | 8 ++++---- .../test/HttpResponseJsonExtensionsTests.cs | 2 +- src/Http/Http.Features/src/FeatureCollection.cs | 6 ++---- src/Http/Http.Features/src/FeatureReference.cs | 13 +++++-------- src/Http/Http.Features/src/FeatureReferences.cs | 16 +++++++--------- src/Http/Http/src/Builder/ApplicationBuilder.cs | 4 +--- 20 files changed, 43 insertions(+), 56 deletions(-) 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 87ca778a7c01..af2bba6e2207 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/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); } From ce475cb00f49d47cea698b38acbde7a7ff5e6828 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 10 Sep 2020 22:48:26 +0000 Subject: [PATCH 18/66] [release/5.0-rc2] Update dependencies from dotnet/arcade dotnet/runtime (#25777) [release/5.0-rc2] Update dependencies from dotnet/arcade dotnet/runtime --- eng/Version.Details.xml | 276 +++++++++--------- eng/Versions.props | 134 ++++----- eng/common/internal/Directory.Build.props | 2 +- eng/common/post-build/publish-using-darc.ps1 | 9 +- .../channels/generic-internal-channel.yml | 4 +- .../channels/generic-public-channel.yml | 2 +- .../templates/post-build/post-build.yml | 2 +- eng/common/tools.ps1 | 10 + global.json | 4 +- 9 files changed, 226 insertions(+), 217 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2762d0ee9cd1..dd5e32f2b42a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -45,289 +45,289 @@ https://github.com/dotnet/efcore 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/runtime - 482494f9ecc9a630599278b80893841462c90a5b + cead74acd39b1351b1668e440f6c7e220c216240 - + https://github.com/dotnet/arcade - fd104228e5b97494a4ab0896a979b69928257ef9 + 91470b0b14ba016c1fb78211b12775287c17b34e - + https://github.com/dotnet/arcade - fd104228e5b97494a4ab0896a979b69928257ef9 + 91470b0b14ba016c1fb78211b12775287c17b34e - + https://github.com/dotnet/arcade - fd104228e5b97494a4ab0896a979b69928257ef9 + 91470b0b14ba016c1fb78211b12775287c17b34e https://github.com/dotnet/roslyn diff --git a/eng/Versions.props b/eng/Versions.props index dd2e93f9899a..283ba54c9b3f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -64,74 +64,74 @@ 3.8.0-2.20403.2 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 - 5.0.0-rc.2.20458.14 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20458.14 + 5.0.0-rc.2.20460.7 3.2.0 @@ -144,7 +144,7 @@ 5.0.0-rc.2.20459.6 5.0.0-rc.2.20459.6 - 5.0.0-beta.20452.19 + 5.0.0-beta.20459.8 + diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1 index 95b113b33bbf..650b13b089b2 100644 --- a/eng/common/post-build/publish-using-darc.ps1 +++ b/eng/common/post-build/publish-using-darc.ps1 @@ -8,7 +8,7 @@ param( [Parameter(Mandatory=$false)][string] $EnableSourceLinkValidation, [Parameter(Mandatory=$false)][string] $EnableSigningValidation, [Parameter(Mandatory=$false)][string] $EnableNugetValidation, - [Parameter(Mandatory=$true)][string] $PublishInstallersAndChecksums, + [Parameter(Mandatory=$false)][string] $PublishInstallersAndChecksums, [Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters, [Parameter(Mandatory=$false)][string] $SigningValidationAdditionalParameters ) @@ -16,7 +16,7 @@ param( try { . $PSScriptRoot\post-build-utils.ps1 # Hard coding darc version till the next arcade-services roll out, cos this version has required API changes for darc add-build-to-channel - . $PSScriptRoot\..\darc-init.ps1 -darcVersion "1.1.0-beta.20418.1" + $darc = Get-Darc "1.1.0-beta.20418.1" $optionalParams = [System.Collections.ArrayList]::new() @@ -29,7 +29,7 @@ try { $optionalParams.Add("--no-wait") | Out-Null } - if ("true" -eq $PublishInstallersAndChecksums) { + if ("false" -ne $PublishInstallersAndChecksums) { $optionalParams.Add("--publish-installers-and-checksums") | Out-Null } @@ -50,12 +50,11 @@ try { } } - & darc add-build-to-channel ` + & $darc add-build-to-channel ` --id $buildId ` --publishing-infra-version $PublishingInfraVersion ` --default-channels ` --source-branch master ` - --publish-installers-and-checksums ` --azdev-pat $AzdoToken ` --bar-uri $MaestroApiEndPoint ` --password $MaestroToken ` diff --git a/eng/common/templates/post-build/channels/generic-internal-channel.yml b/eng/common/templates/post-build/channels/generic-internal-channel.yml index 59eb93a407cb..7ae5255921aa 100644 --- a/eng/common/templates/post-build/channels/generic-internal-channel.yml +++ b/eng/common/templates/post-build/channels/generic-internal-channel.yml @@ -4,7 +4,7 @@ parameters: artifactsPublishingAdditionalParameters: '' dependsOn: - Validate - publishInstallersAndChecksums: false + publishInstallersAndChecksums: true symbolPublishingAdditionalParameters: '' stageName: '' channelName: '' @@ -158,7 +158,7 @@ stages: /p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/' /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts/' /p:Configuration=Release - /p:PublishInstallersAndChecksums=true + /p:PublishInstallersAndChecksums=${{ parameters.publishInstallersAndChecksums }} /p:ChecksumsTargetStaticFeed=$(InternalChecksumsBlobFeedUrl) /p:ChecksumsAzureAccountKey=$(InternalChecksumsBlobFeedKey) /p:InstallersTargetStaticFeed=$(InternalInstallersBlobFeedUrl) diff --git a/eng/common/templates/post-build/channels/generic-public-channel.yml b/eng/common/templates/post-build/channels/generic-public-channel.yml index 7e80a621a303..6cf39dbb2907 100644 --- a/eng/common/templates/post-build/channels/generic-public-channel.yml +++ b/eng/common/templates/post-build/channels/generic-public-channel.yml @@ -4,7 +4,7 @@ parameters: artifactsPublishingAdditionalParameters: '' dependsOn: - Validate - publishInstallersAndChecksums: false + publishInstallersAndChecksums: true symbolPublishingAdditionalParameters: '' stageName: '' channelName: '' diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index 630a99d4dda3..df06f5371e7b 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -19,7 +19,7 @@ parameters: enableSigningValidation: true enableSymbolValidation: false enableNugetValidation: true - publishInstallersAndChecksums: false + publishInstallersAndChecksums: true SDLValidationParameters: enable: false continueOnError: false diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index daca90c0b63b..37a3a3d68001 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -718,6 +718,16 @@ function IsWindowsPlatform() { return [environment]::OSVersion.Platform -eq [PlatformID]::Win32NT } +function Get-Darc($version) { + $darcPath = "$TempDir\darc\$(New-Guid)" + if ($version -ne $null) { + & $PSScriptRoot\darc-init.ps1 -toolpath $darcPath -darcVersion $version | Out-Host + } else { + & $PSScriptRoot\darc-init.ps1 -toolpath $darcPath | Out-Host + } + return "$darcPath\darc.exe" +} + . $PSScriptRoot\pipeline-logging-functions.ps1 $RepoRoot = Resolve-Path (Join-Path $PSScriptRoot '..\..') diff --git a/global.json b/global.json index ca240fa07a28..97c6ea58f352 100644 --- a/global.json +++ b/global.json @@ -30,7 +30,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.15.2", - "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20452.19", - "Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20452.19" + "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20459.8", + "Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20459.8" } } From 5aa4a7cd41d722b5a063c48251b383a19493d1dc Mon Sep 17 00:00:00 2001 From: Pranav K Date: Thu, 10 Sep 2020 16:30:55 -0700 Subject: [PATCH 19/66] Avoid using PATH to find dotnet.exe in RazorSDK tasks (#25750) This pattern is pretty identical to what we have in other SDKs. It allows using the SDK when dotnet isn't in the path such as the https://github.com/dotnet/aspnetcore/issues/25746. Fixes #14432 --- .../src/DotnetToolTask.cs | 28 ++++++++++++------- .../src/Microsoft.NET.Sdk.Razor.csproj | 2 +- ...osoft.NET.Sdk.Razor.CodeGeneration.targets | 4 +++ .../Microsoft.NET.Sdk.Razor.Component.targets | 2 ++ .../Microsoft.NET.Sdk.Razor.ScopedCss.targets | 4 ++- .../Sdk.Razor.CurrentVersion.targets | 6 ++++ 6 files changed, 34 insertions(+), 12 deletions(-) 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..dd64c02b3d8d 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..0a9b778e6f29 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 From 327d55d01cd51432d25c6107475fcd8bf9626ea7 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Thu, 10 Sep 2020 18:14:08 -0700 Subject: [PATCH 20/66] Prevent ODE when response body isn't reset (#25779) --- .../Http/src/Internal/DefaultHttpResponse.cs | 8 +--- .../test/Internal/DefaultHttpResponseTests.cs | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) 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() { From 970d0f5d00c539501eeb48f98be7e0348a88d354 Mon Sep 17 00:00:00 2001 From: Brennan Date: Thu, 10 Sep 2020 18:22:14 -0700 Subject: [PATCH 21/66] [SignalR] Copy cookies from negotiate to WebSockets (#24572) --- .../FunctionalTests/HubConnectionTests.cs | 28 +++++++++++++++++++ .../Client/test/FunctionalTests/Startup.cs | 12 ++++++++ .../src/HttpConnection.Log.cs | 8 ++++++ .../src/HttpConnection.cs | 17 +++++++---- 4 files changed, 60 insertions(+), 5 deletions(-) diff --git a/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs b/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs index 1e1de9abe406..216a39b1c29c 100644 --- a/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs +++ b/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs @@ -1721,6 +1721,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 ecd2c30b8bea..1af8f917f82d 100644 --- a/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs +++ b/src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs @@ -154,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)); @@ -537,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) From c18f74d61767f0f6da007e2a98df36d6874ec999 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2020 01:31:45 +0000 Subject: [PATCH 22/66] [release/5.0-rc2] Update dependencies from dotnet/efcore dotnet/runtime (#25791) [release/5.0-rc2] Update dependencies from dotnet/efcore dotnet/runtime --- eng/Version.Details.xml | 296 ++++++++++++++++++++-------------------- eng/Versions.props | 148 ++++++++++---------- 2 files changed, 222 insertions(+), 222 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index dd5e32f2b42a..699e009338a1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,309 +13,309 @@ https://github.com/dotnet/blazor cc449601d638ffaab58ae9487f0fd010bb178a12 - + https://github.com/dotnet/efcore - 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 + b41005bcbe352d387b534743d4a5bef570d9b590 - + https://github.com/dotnet/efcore - 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 + b41005bcbe352d387b534743d4a5bef570d9b590 - + https://github.com/dotnet/efcore - 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 + b41005bcbe352d387b534743d4a5bef570d9b590 - + https://github.com/dotnet/efcore - 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 + b41005bcbe352d387b534743d4a5bef570d9b590 - + https://github.com/dotnet/efcore - 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 + b41005bcbe352d387b534743d4a5bef570d9b590 - + https://github.com/dotnet/efcore - 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 + b41005bcbe352d387b534743d4a5bef570d9b590 - + https://github.com/dotnet/efcore - 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 + b41005bcbe352d387b534743d4a5bef570d9b590 - + https://github.com/dotnet/efcore - 69ce8af8c2b7ac90fc54798ea206d3770fb8db43 + b41005bcbe352d387b534743d4a5bef570d9b590 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 - + https://github.com/dotnet/runtime - cead74acd39b1351b1668e440f6c7e220c216240 + 3802520ce6951111092039fe5b365985d9677708 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 283ba54c9b3f..09d1829e24e3 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -64,85 +64,85 @@ 3.8.0-2.20403.2 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.10 3.2.0 - 5.0.0-rc.2.20459.6 - 5.0.0-rc.2.20459.6 - 5.0.0-rc.2.20459.6 - 5.0.0-rc.2.20459.6 - 5.0.0-rc.2.20459.6 - 5.0.0-rc.2.20459.6 - 5.0.0-rc.2.20459.6 - 5.0.0-rc.2.20459.6 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.7 5.0.0-beta.20459.8 From 118d6b2986b9f1cc26448492f52e59c4405f15e4 Mon Sep 17 00:00:00 2001 From: Sayed Ibrahim Hashimi Date: Thu, 10 Sep 2020 21:46:32 -0400 Subject: [PATCH 23/66] Updating titles in project templates because in Visual Studio the (#25630) templates will be showing the templates directly in the New Project Dialog instead in the One ASP.NET dialog. In this PR I have updated the English titles. For localized strings we will need to get those from the localization team. I believe we are not setup for that to be automated here. I think we should merge the English strings because they are the most used, and for other locales we will show the old localized names for now. If it's difficult to get those localized, I can work with @phenning to see if we can localize those files this time. --- .../content/EmptyWeb-CSharp/.template.config/en/strings.json | 2 +- .../EmptyWeb-CSharp/.template.config/vs-2017.3.host.json | 2 +- .../content/EmptyWeb-FSharp/.template.config/en/strings.json | 2 +- .../EmptyWeb-FSharp/.template.config/vs-2017.3.host.json | 2 +- .../content/GrpcService-CSharp/.template.config/en/strings.json | 2 +- .../GrpcService-CSharp/.template.config/vs-2017.3.host.json | 2 +- .../RazorPagesWeb-CSharp/.template.config/en/strings.json | 2 +- .../RazorPagesWeb-CSharp/.template.config/vs-2017.3.host.json | 2 +- .../content/StarterWeb-CSharp/.template.config/en/strings.json | 2 +- .../StarterWeb-CSharp/.template.config/vs-2017.3.host.json | 2 +- .../content/WebApi-CSharp/.template.config/en/strings.json | 2 +- .../content/WebApi-CSharp/.template.config/vs-2017.3.host.json | 2 +- .../content/WebApi-FSharp/.template.config/en/strings.json | 2 +- .../content/WebApi-FSharp/.template.config/vs-2017.3.host.json | 2 +- .../content/Angular-CSharp/.template.config/en/strings.json | 2 +- .../content/Angular-CSharp/.template.config/vs-2017.3.host.json | 2 +- .../content/React-CSharp/.template.config/en/strings.json | 2 +- .../content/React-CSharp/.template.config/vs-2017.3.host.json | 2 +- .../content/ReactRedux-CSharp/.template.config/en/strings.json | 2 +- .../ReactRedux-CSharp/.template.config/vs-2017.3.host.json | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) 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/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/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-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" }, From 11b85eb7e277d288def26b3b325a5f1c53733e17 Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Thu, 10 Sep 2020 19:36:42 -0700 Subject: [PATCH 24/66] Add Windows.10.Amd64.Server20H1.Open helix queue (#25627) --- eng/targets/Helix.Common.props | 1 + .../test/FunctionalTests/Diagnostics.FunctionalTests.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/eng/targets/Helix.Common.props b/eng/targets/Helix.Common.props index d68970f8dc68..029f75990e62 100644 --- a/eng/targets/Helix.Common.props +++ b/eng/targets/Helix.Common.props @@ -29,6 +29,7 @@ + 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 From 7a74a1bb682b4a94e1dc6b2d6a654c6d6140517e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2020 04:23:10 +0000 Subject: [PATCH 25/66] [release/5.0-rc2] Update dependencies from dotnet/efcore (#25800) [release/5.0-rc2] Update dependencies from dotnet/efcore --- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 699e009338a1..304d6f588917 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,37 +13,37 @@ https://github.com/dotnet/blazor cc449601d638ffaab58ae9487f0fd010bb178a12 - + https://github.com/dotnet/efcore - b41005bcbe352d387b534743d4a5bef570d9b590 + 663750651e1d8b60375f5237660ab50b6249904c - + https://github.com/dotnet/efcore - b41005bcbe352d387b534743d4a5bef570d9b590 + 663750651e1d8b60375f5237660ab50b6249904c - + https://github.com/dotnet/efcore - b41005bcbe352d387b534743d4a5bef570d9b590 + 663750651e1d8b60375f5237660ab50b6249904c - + https://github.com/dotnet/efcore - b41005bcbe352d387b534743d4a5bef570d9b590 + 663750651e1d8b60375f5237660ab50b6249904c - + https://github.com/dotnet/efcore - b41005bcbe352d387b534743d4a5bef570d9b590 + 663750651e1d8b60375f5237660ab50b6249904c - + https://github.com/dotnet/efcore - b41005bcbe352d387b534743d4a5bef570d9b590 + 663750651e1d8b60375f5237660ab50b6249904c - + https://github.com/dotnet/efcore - b41005bcbe352d387b534743d4a5bef570d9b590 + 663750651e1d8b60375f5237660ab50b6249904c - + https://github.com/dotnet/efcore - b41005bcbe352d387b534743d4a5bef570d9b590 + 663750651e1d8b60375f5237660ab50b6249904c https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index 09d1829e24e3..eca7e58d1720 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -135,14 +135,14 @@ 3.2.0 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 - 5.0.0-rc.2.20460.7 + 5.0.0-rc.2.20460.9 + 5.0.0-rc.2.20460.9 + 5.0.0-rc.2.20460.9 + 5.0.0-rc.2.20460.9 + 5.0.0-rc.2.20460.9 + 5.0.0-rc.2.20460.9 + 5.0.0-rc.2.20460.9 + 5.0.0-rc.2.20460.9 5.0.0-beta.20459.8 From 5f04dfc3ef7a66a4f9fef133b84299e4f561e187 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Thu, 10 Sep 2020 23:08:16 -0700 Subject: [PATCH 26/66] Bundle latest 2.2 and 3.1 site extension packages (#25778) - part of dotnet/aspnetcore-internal#3676 --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index eca7e58d1720..1601c9e7baec 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -241,8 +241,8 @@ 6.7.1 2.1.1 - 2.2.0 - 3.1.7-servicing-20372-13 + 2.2.5 + 3.1.8-servicing-20421-6 $(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion) $(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion) From f9a18fdb15bc03277cdc08226990a2549795b90b Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2020 07:06:12 +0000 Subject: [PATCH 27/66] [release/5.0-rc2] Update dependencies from dotnet/runtime dotnet/efcore (#25804) [release/5.0-rc2] Update dependencies from dotnet/runtime dotnet/efcore --- eng/Version.Details.xml | 296 ++++++++++++++++++++-------------------- eng/Versions.props | 148 ++++++++++---------- 2 files changed, 222 insertions(+), 222 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 304d6f588917..79b9127adc2b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,309 +13,309 @@ https://github.com/dotnet/blazor cc449601d638ffaab58ae9487f0fd010bb178a12 - + https://github.com/dotnet/efcore - 663750651e1d8b60375f5237660ab50b6249904c + 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 - + https://github.com/dotnet/efcore - 663750651e1d8b60375f5237660ab50b6249904c + 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 - + https://github.com/dotnet/efcore - 663750651e1d8b60375f5237660ab50b6249904c + 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 - + https://github.com/dotnet/efcore - 663750651e1d8b60375f5237660ab50b6249904c + 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 - + https://github.com/dotnet/efcore - 663750651e1d8b60375f5237660ab50b6249904c + 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 - + https://github.com/dotnet/efcore - 663750651e1d8b60375f5237660ab50b6249904c + 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 - + https://github.com/dotnet/efcore - 663750651e1d8b60375f5237660ab50b6249904c + 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 - + https://github.com/dotnet/efcore - 663750651e1d8b60375f5237660ab50b6249904c + 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f - + https://github.com/dotnet/runtime - 3802520ce6951111092039fe5b365985d9677708 + e3a1128fc78c2836c899bc5099d7e0261888f08f https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 1601c9e7baec..d5f6f5e4572b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -64,85 +64,85 @@ 3.8.0-2.20403.2 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.15 3.2.0 - 5.0.0-rc.2.20460.9 - 5.0.0-rc.2.20460.9 - 5.0.0-rc.2.20460.9 - 5.0.0-rc.2.20460.9 - 5.0.0-rc.2.20460.9 - 5.0.0-rc.2.20460.9 - 5.0.0-rc.2.20460.9 - 5.0.0-rc.2.20460.9 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.10 5.0.0-beta.20459.8 From e03d8e7613f70f7e5afe99268b762d28a9ec5bd6 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2020 08:27:44 +0000 Subject: [PATCH 28/66] Update dependencies from https://github.com/dotnet/efcore build 20200910.11 (#25808) [release/5.0-rc2] Update dependencies from dotnet/efcore --- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 79b9127adc2b..0bcf8f42eacc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,37 +13,37 @@ https://github.com/dotnet/blazor cc449601d638ffaab58ae9487f0fd010bb178a12 - + https://github.com/dotnet/efcore - 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 + 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 - + https://github.com/dotnet/efcore - 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 + 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 - + https://github.com/dotnet/efcore - 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 + 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 - + https://github.com/dotnet/efcore - 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 + 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 - + https://github.com/dotnet/efcore - 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 + 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 - + https://github.com/dotnet/efcore - 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 + 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 - + https://github.com/dotnet/efcore - 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 + 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 - + https://github.com/dotnet/efcore - 0daa1c6e6056ec9f873fdb4bf611521f058fd7a4 + 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index d5f6f5e4572b..a518717ba8f0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -135,14 +135,14 @@ 3.2.0 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 - 5.0.0-rc.2.20460.10 + 5.0.0-rc.2.20460.11 + 5.0.0-rc.2.20460.11 + 5.0.0-rc.2.20460.11 + 5.0.0-rc.2.20460.11 + 5.0.0-rc.2.20460.11 + 5.0.0-rc.2.20460.11 + 5.0.0-rc.2.20460.11 + 5.0.0-rc.2.20460.11 5.0.0-beta.20459.8 From 59714980c9c0900d4f31479feac3a98e1cdc6233 Mon Sep 17 00:00:00 2001 From: JC Aguilera Date: Fri, 11 Sep 2020 09:05:25 -0700 Subject: [PATCH 29/66] Condition VS.Redist.* to PostBuildSign (#25793) --- .azure/pipelines/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index a7dc48c12892..b705f9c565ee 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -218,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: From a7d129cc972ab247d9b08a0755b332605d2f3c42 Mon Sep 17 00:00:00 2001 From: Brennan Date: Fri, 11 Sep 2020 09:21:02 -0700 Subject: [PATCH 30/66] Send CloseMessage in more cases (#25693) * Send CloseMessage in more cases * fb --- .../FunctionalTests/HubConnectionTests.cs | 26 ++++++++++++++----- .../server/Core/src/HubConnectionContext.cs | 15 +++++++---- .../server/Core/src/HubConnectionHandler.cs | 2 +- .../SignalR/test/HubConnectionHandlerTests.cs | 23 ++++++++-------- 4 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs b/src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs index 216a39b1c29c..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) { diff --git a/src/SignalR/server/Core/src/HubConnectionContext.cs b/src/SignalR/server/Core/src/HubConnectionContext.cs index 88ebde464c60..08913ae1395a 100644 --- a/src/SignalR/server/Core/src/HubConnectionContext.cs +++ b/src/SignalR/server/Core/src/HubConnectionContext.cs @@ -149,14 +149,19 @@ internal StreamTracker StreamTracker [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; @@ -275,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; } @@ -304,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/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(); } From 2ab6436cdd6f4d77adf68e55d11326fafadb8099 Mon Sep 17 00:00:00 2001 From: Brennan Date: Fri, 11 Sep 2020 09:21:18 -0700 Subject: [PATCH 31/66] Set ShutdownTimeout in Kestrel tests (#25743) --- .../Kestrel/shared/test/TransportTestHelpers/TestServer.cs | 7 +++++++ 1 file changed, 7 insertions(+) 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(); From c32089a5e2ea55aacaacb416a76002d9235dcdc8 Mon Sep 17 00:00:00 2001 From: Brennan Date: Fri, 11 Sep 2020 09:23:08 -0700 Subject: [PATCH 32/66] Add SignalR Client on WASM smoke test (#25526) * Add SignalR Client on WASM smoke test * Move test into BasicTestApp Co-authored-by: Steve Sanderson --- .../test/E2ETest/Tests/SignalRClientTest.cs | 51 +++++++++++++++++++ .../BasicTestApp/BasicTestApp.csproj | 1 + .../test/testassets/BasicTestApp/Index.razor | 1 + .../BasicTestApp/SignalRClientComponent.razor | 51 +++++++++++++++++++ .../test/testassets/TestServer/ChatHub.cs | 16 ++++++ .../test/testassets/TestServer/CorsStartup.cs | 4 +- 6 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 src/Components/test/E2ETest/Tests/SignalRClientTest.cs create mode 100644 src/Components/test/testassets/BasicTestApp/SignalRClientComponent.razor create mode 100644 src/Components/test/testassets/TestServer/ChatHub.cs diff --git a/src/Components/test/E2ETest/Tests/SignalRClientTest.cs b/src/Components/test/E2ETest/Tests/SignalRClientTest.cs new file mode 100644 index 000000000000..aa4e82bb1d8f --- /dev/null +++ b/src/Components/test/E2ETest/Tests/SignalRClientTest.cs @@ -0,0 +1,51 @@ +// 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.Linq; +using BasicTestApp; +using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; +using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; +using Microsoft.AspNetCore.E2ETesting; +using OpenQA.Selenium; +using TestServer; +using Xunit; +using Xunit.Abstractions; + +namespace Microsoft.AspNetCore.Components.E2ETest.Tests +{ + public class SignalRClientTest : ServerTestBase>, + IClassFixture> + { + private readonly ServerFixture _apiServerFixture; + + public SignalRClientTest( + BrowserFixture browserFixture, + DevHostServerFixture devHostServerFixture, + BasicTestAppServerSiteFixture apiServerFixture, + ITestOutputHelper output) + : base(browserFixture, devHostServerFixture, output) + { + _serverFixture.PathBase = "/subdir"; + _apiServerFixture = apiServerFixture; + } + + protected override void InitializeAsyncCore() + { + Navigate(ServerPathBase); + Browser.MountTestComponent(); + Browser.Exists(By.Id("signalr-client")); + } + + [Fact] + public void SignalRClientWorks() + { + Browser.FindElement(By.Id("hub-url")).SendKeys( + new Uri(_apiServerFixture.RootUri, "/subdir/chathub").AbsoluteUri); + Browser.FindElement(By.Id("hub-connect")).Click(); + + Browser.Equal("SignalR Client: Echo", + () => Browser.FindElements(By.CssSelector("li")).FirstOrDefault()?.Text); + } + } +} diff --git a/src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj b/src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj index 13f08442bf56..58d604dda85f 100644 --- a/src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj +++ b/src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj @@ -16,6 +16,7 @@ + diff --git a/src/Components/test/testassets/BasicTestApp/Index.razor b/src/Components/test/testassets/BasicTestApp/Index.razor index d73fb75fbfd7..99379de0bd3a 100644 --- a/src/Components/test/testassets/BasicTestApp/Index.razor +++ b/src/Components/test/testassets/BasicTestApp/Index.razor @@ -80,6 +80,7 @@ + diff --git a/src/Components/test/testassets/BasicTestApp/SignalRClientComponent.razor b/src/Components/test/testassets/BasicTestApp/SignalRClientComponent.razor new file mode 100644 index 000000000000..3f0869ee2d55 --- /dev/null +++ b/src/Components/test/testassets/BasicTestApp/SignalRClientComponent.razor @@ -0,0 +1,51 @@ +@using Microsoft.AspNetCore.SignalR.Client + +

SignalR Client

+ +

This shows that the SignalR client can be used on WebAssembly.

+ +

+ Hub URL: + + +

+ +
Connected: @IsConnected
+ +
    + @foreach (var message in messages) + { +
  • @message
  • + } +
+ +@code { + private string hubUrl; + private HubConnection hubConnection; + private List messages = new List(); + + protected async Task Connect() + { + hubConnection = new HubConnectionBuilder() + .WithUrl(hubUrl) + .Build(); + + hubConnection.On("ReceiveMessage", (user, message) => + { + var encodedMsg = $"{user}: {message}"; + messages.Add(encodedMsg); + StateHasChanged(); + }); + + await hubConnection.StartAsync(); + await hubConnection.SendAsync("SendMessage", "SignalR Client", "Echo"); + } + + public bool IsConnected => + hubConnection != null && hubConnection.State == HubConnectionState.Connected; + + public ValueTask DisposeAsync() + { + return hubConnection.DisposeAsync(); + } +} 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"); }); From 84962660a33a6a2791fd819928cbce7b7f38db1b Mon Sep 17 00:00:00 2001 From: William Godbe Date: Fri, 11 Sep 2020 10:11:10 -0700 Subject: [PATCH 33/66] Strip duplicates from BuiltProjectOutputGroupOutput (#25785) --- .../src/Microsoft.AspNetCore.App.Runtime.csproj | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) 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) - - + + + From 77be06a894306a435a5b199a4a986957dca8db91 Mon Sep 17 00:00:00 2001 From: William Godbe Date: Fri, 11 Sep 2020 10:11:29 -0700 Subject: [PATCH 34/66] Support primitive type/classes in HubConnection.on() (#25773) * Support primitive type/classes in HubConnection.on() * Small refactor * Spacing --- .../com/microsoft/signalr/HubConnection.java | 84 +++++++------------ .../java/com/microsoft/signalr/Utils.java | 14 ++++ .../microsoft/signalr/HubConnectionTest.java | 28 +++---- 3 files changed, 60 insertions(+), 66 deletions(-) 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..25b6139127a0 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 @@ -751,12 +751,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 +808,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 +897,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 +916,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 +938,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 +962,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 +989,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 +1018,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 +1049,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 +1082,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 +1100,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 +1120,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 +1142,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 +1167,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 +1195,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 +1225,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 +1257,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 +1291,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/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/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..de8db977a957 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 @@ -1959,7 +1959,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 +1967,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 +2054,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 +2063,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 +2093,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 +2102,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 +2136,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 +2145,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 +2183,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 +2191,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()); From f7a76173e4d3870860e20a5445206e2eb309e088 Mon Sep 17 00:00:00 2001 From: William Godbe Date: Fri, 11 Sep 2020 10:26:49 -0700 Subject: [PATCH 35/66] Re-enable Helix tests for signalR java client (#25783) * Re-enable Helix tests for signalR java client * Change path to test results --- .../java/signalr/test/signalr.client.java.Tests.javaproj | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) 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 @@ - - + + From 83e31342a1a4481cafaa847c83d3283cd3bb25fd Mon Sep 17 00:00:00 2001 From: Brennan Date: Fri, 11 Sep 2020 10:53:45 -0700 Subject: [PATCH 36/66] [Kestrel] Deflake app abort test (#25484) * [Kestrel] Deflake app abort test * better * fb --- .../test/InMemory.FunctionalTests/ResponseTests.cs | 13 ++++++++----- .../Buffers.MemoryPool/DiagnosticMemoryPool.cs | 2 ++ 2 files changed, 10 insertions(+), 5 deletions(-) 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(); } } From 4383118ef832ac38a461b72179be1f918a1cfbf0 Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Fri, 11 Sep 2020 11:40:25 -0700 Subject: [PATCH 37/66] IIS: Identify if a request has a body (#25381) --- .../Core/IISHttpContext.FeatureCollection.cs | 3 + .../IIS/src/Core/IISHttpContext.Features.cs | 16 + .../IIS/IIS/src/Core/IISHttpContext.cs | 17 + .../Inprocess/Http2Tests.cs | 348 ++++++++++++++++++ .../testassets/InProcessWebSite/Helpers.cs | 20 + .../testassets/InProcessWebSite/Startup.cs | 72 +++- 6 files changed, 474 insertions(+), 2 deletions(-) create mode 100644 src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/Http2Tests.cs create mode 100644 src/Servers/IIS/IIS/test/testassets/InProcessWebSite/Helpers.cs diff --git a/src/Servers/IIS/IIS/src/Core/IISHttpContext.FeatureCollection.cs b/src/Servers/IIS/IIS/src/Core/IISHttpContext.FeatureCollection.cs index b7dafbcdfa04..1fab0f694ad9 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 cded2c724f68..17796ae354b5 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/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 0d23030f82ce..7f963a7a52c8 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(); @@ -1498,5 +1566,5 @@ public Task IncreaseRequestLimit(HttpContext httpContext) HeaderNames.ContentEncoding, HeaderNames.ContentType, HeaderNames.ContentRange, HeaderNames.Trailer }; #endif + } } -} From 9eb9de6c8c089853c4041885c2230a7ac0acda1b Mon Sep 17 00:00:00 2001 From: Brennan Date: Fri, 11 Sep 2020 11:44:00 -0700 Subject: [PATCH 38/66] [Java] Catch errors from user callbacks (#25513) * [Java] Catch errors from user callbacks * test logger * rebase * fb --- .../com/microsoft/signalr/HubConnection.java | 6 ++- .../clients/java/signalr/test/build.gradle | 2 +- .../microsoft/signalr/HubConnectionTest.java | 32 +++++++++++++ .../com/microsoft/signalr/TestLogger.java | 45 +++++++++++++++++++ 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/TestLogger.java 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 25b6139127a0..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()); 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/src/main/java/com/microsoft/signalr/HubConnectionTest.java b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java index de8db977a957..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; @@ -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 From a1276de34de7dcf3c0ce9801690542a922fd16e8 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2020 20:46:42 +0000 Subject: [PATCH 39/66] [release/5.0-rc2] Update dependencies from dotnet/runtime dotnet/efcore (#25816) [release/5.0-rc2] Update dependencies from dotnet/runtime dotnet/efcore --- eng/Version.Details.xml | 296 ++++++++++++++++++++-------------------- eng/Versions.props | 148 ++++++++++---------- 2 files changed, 222 insertions(+), 222 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0bcf8f42eacc..f90f6549d756 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,309 +13,309 @@ https://github.com/dotnet/blazor cc449601d638ffaab58ae9487f0fd010bb178a12 - + https://github.com/dotnet/efcore - 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 + 844587e14662b8d4178cc99899d90a4e387e43a9 - + https://github.com/dotnet/efcore - 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 + 844587e14662b8d4178cc99899d90a4e387e43a9 - + https://github.com/dotnet/efcore - 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 + 844587e14662b8d4178cc99899d90a4e387e43a9 - + https://github.com/dotnet/efcore - 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 + 844587e14662b8d4178cc99899d90a4e387e43a9 - + https://github.com/dotnet/efcore - 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 + 844587e14662b8d4178cc99899d90a4e387e43a9 - + https://github.com/dotnet/efcore - 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 + 844587e14662b8d4178cc99899d90a4e387e43a9 - + https://github.com/dotnet/efcore - 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 + 844587e14662b8d4178cc99899d90a4e387e43a9 - + https://github.com/dotnet/efcore - 883a9e9ca8db6196d16a55c1e40e9fe7df62ff97 + 844587e14662b8d4178cc99899d90a4e387e43a9 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime - e3a1128fc78c2836c899bc5099d7e0261888f08f + 7d39776332446d8a84f5d542c80d264fa1cadbe7 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index a518717ba8f0..bb6023c253f6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -64,85 +64,85 @@ 3.8.0-2.20403.2 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 - 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20460.15 + 5.0.0-rc.2.20461.4 3.2.0 - 5.0.0-rc.2.20460.11 - 5.0.0-rc.2.20460.11 - 5.0.0-rc.2.20460.11 - 5.0.0-rc.2.20460.11 - 5.0.0-rc.2.20460.11 - 5.0.0-rc.2.20460.11 - 5.0.0-rc.2.20460.11 - 5.0.0-rc.2.20460.11 + 5.0.0-rc.2.20461.1 + 5.0.0-rc.2.20461.1 + 5.0.0-rc.2.20461.1 + 5.0.0-rc.2.20461.1 + 5.0.0-rc.2.20461.1 + 5.0.0-rc.2.20461.1 + 5.0.0-rc.2.20461.1 + 5.0.0-rc.2.20461.1 5.0.0-beta.20459.8 From 3932156a95011c9101ef956bcb2d9081f3909d48 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Fri, 11 Sep 2020 13:57:23 -0700 Subject: [PATCH 40/66] Improve Http1ContentLengthMessageBody's reset logic (#25799) --- .../Http/Http1ContentLengthMessageBody.cs | 91 ++++++++++++++----- .../src/Internal/Http/Http1MessageBody.cs | 2 +- .../Kestrel/Core/test/MessageBodyTests.cs | 33 +++++++ 3 files changed, 103 insertions(+), 23 deletions(-) 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/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)); From 004cd1a9d97476c5c461ade2f0acdb23b30e33f3 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Fri, 11 Sep 2020 14:32:02 -0700 Subject: [PATCH 41/66] PR feedback for platform compatibility update (#25815) * PR feedback for platform compatibility update Follow up to https://github.com/dotnet/aspnetcore/pull/25421 * Add SupportedOSPlatform attributes to a few more DataProtection API * Update the SDK to rc2 * Clean up warning suppression in CertificateManager * React to nit feedbacks Fixes https://github.com/dotnet/aspnetcore/issues/25781 * Apply suggestions from code review --- global.json | 4 ++-- .../AuthenticatedEncryptorFactory.cs | 7 ++++++- .../CngCbcAuthenticatedEncryptorFactory.cs | 9 ++++++++- .../CngGcmAuthenticatedEncryptorFactory.cs | 7 +++++++ .../CngCbcAuthenticatedEncryptorConfiguration.cs | 2 ++ .../CngCbcAuthenticatedEncryptorDescriptor.cs | 2 ++ ...CngCbcAuthenticatedEncryptorDescriptorDeserializer.cs | 2 ++ .../CngGcmAuthenticatedEncryptorConfiguration.cs | 2 ++ .../CngGcmAuthenticatedEncryptorDescriptor.cs | 3 ++- ...CngGcmAuthenticatedEncryptorDescriptorDeserializer.cs | 2 ++ .../src/DataProtectionBuilderExtensions.cs | 2 ++ .../src/EphemeralDataProtectionProvider.cs | 4 ++++ .../src/Microsoft.AspNetCore.DataProtection.csproj | 2 +- src/Shared/PlatformAttributes.cs | 4 ---- 14 files changed, 42 insertions(+), 10 deletions(-) diff --git a/global.json b/global.json index 97c6ea58f352..4c2009c7135f 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "5.0.100-rc.1.20429.2" + "version": "5.0.100-rc.1.20452.10" }, "tools": { - "dotnet": "5.0.100-rc.1.20429.2", + "dotnet": "5.0.100-rc.1.20452.10", "runtimes": { "dotnet/x64": [ "2.1.18", 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 e6618bd535cd..bc10fc166e7e 100644 --- a/src/DataProtection/DataProtection/src/DataProtectionBuilderExtensions.cs +++ b/src/DataProtection/DataProtection/src/DataProtectionBuilderExtensions.cs @@ -529,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) @@ -557,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/Microsoft.AspNetCore.DataProtection.csproj b/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj index 520a9f474587..ad035d5c67e4 100644 --- a/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj +++ b/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj @@ -15,7 +15,7 @@ + Condition="'$(TargetFramework)' != '$(DefaultNetCoreTargetFramework)'" /> diff --git a/src/Shared/PlatformAttributes.cs b/src/Shared/PlatformAttributes.cs index 0d44154118ce..253014480dda 100644 --- a/src/Shared/PlatformAttributes.cs +++ b/src/Shared/PlatformAttributes.cs @@ -78,10 +78,6 @@ public SupportedOSPlatformAttribute (string platformName) : base(platformName) /// /// Marks APIs that were removed in a given operating system version. /// - /// - /// Primarily used by OS bindings to indicate APIs that are only available in - /// earlier versions. - /// [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Constructor | From c1b0fb576585e0a0b77057a393c27bf879f9830a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2020 22:59:01 +0000 Subject: [PATCH 42/66] Update dependencies from https://github.com/dotnet/efcore build 20200911.2 (#25824) [release/5.0-rc2] Update dependencies from dotnet/efcore --- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f90f6549d756..3b0d3910a763 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,37 +13,37 @@ https://github.com/dotnet/blazor cc449601d638ffaab58ae9487f0fd010bb178a12 - + https://github.com/dotnet/efcore - 844587e14662b8d4178cc99899d90a4e387e43a9 + 3eeb676b39ac74802ad1e806d0956df14a7955e8 - + https://github.com/dotnet/efcore - 844587e14662b8d4178cc99899d90a4e387e43a9 + 3eeb676b39ac74802ad1e806d0956df14a7955e8 - + https://github.com/dotnet/efcore - 844587e14662b8d4178cc99899d90a4e387e43a9 + 3eeb676b39ac74802ad1e806d0956df14a7955e8 - + https://github.com/dotnet/efcore - 844587e14662b8d4178cc99899d90a4e387e43a9 + 3eeb676b39ac74802ad1e806d0956df14a7955e8 - + https://github.com/dotnet/efcore - 844587e14662b8d4178cc99899d90a4e387e43a9 + 3eeb676b39ac74802ad1e806d0956df14a7955e8 - + https://github.com/dotnet/efcore - 844587e14662b8d4178cc99899d90a4e387e43a9 + 3eeb676b39ac74802ad1e806d0956df14a7955e8 - + https://github.com/dotnet/efcore - 844587e14662b8d4178cc99899d90a4e387e43a9 + 3eeb676b39ac74802ad1e806d0956df14a7955e8 - + https://github.com/dotnet/efcore - 844587e14662b8d4178cc99899d90a4e387e43a9 + 3eeb676b39ac74802ad1e806d0956df14a7955e8 https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index bb6023c253f6..4fb307011237 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -135,14 +135,14 @@ 3.2.0 - 5.0.0-rc.2.20461.1 - 5.0.0-rc.2.20461.1 - 5.0.0-rc.2.20461.1 - 5.0.0-rc.2.20461.1 - 5.0.0-rc.2.20461.1 - 5.0.0-rc.2.20461.1 - 5.0.0-rc.2.20461.1 - 5.0.0-rc.2.20461.1 + 5.0.0-rc.2.20461.2 + 5.0.0-rc.2.20461.2 + 5.0.0-rc.2.20461.2 + 5.0.0-rc.2.20461.2 + 5.0.0-rc.2.20461.2 + 5.0.0-rc.2.20461.2 + 5.0.0-rc.2.20461.2 + 5.0.0-rc.2.20461.2 5.0.0-beta.20459.8 From b5515a8dac36f1b4d44062f5d3167a00cd884b15 Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Fri, 11 Sep 2020 11:40:25 -0700 Subject: [PATCH 43/66] IIS: Identify if a request has a body (#25381) --- .../Core/IISHttpContext.FeatureCollection.cs | 3 + .../IIS/src/Core/IISHttpContext.Features.cs | 16 + .../IIS/IIS/src/Core/IISHttpContext.cs | 17 + .../Inprocess/Http2Tests.cs | 348 ++++++++++++++++++ .../testassets/InProcessWebSite/Helpers.cs | 20 + .../testassets/InProcessWebSite/Startup.cs | 72 +++- 6 files changed, 474 insertions(+), 2 deletions(-) create mode 100644 src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/Http2Tests.cs create mode 100644 src/Servers/IIS/IIS/test/testassets/InProcessWebSite/Helpers.cs diff --git a/src/Servers/IIS/IIS/src/Core/IISHttpContext.FeatureCollection.cs b/src/Servers/IIS/IIS/src/Core/IISHttpContext.FeatureCollection.cs index b7dafbcdfa04..1fab0f694ad9 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 cded2c724f68..17796ae354b5 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/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 0d23030f82ce..7f963a7a52c8 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(); @@ -1498,5 +1566,5 @@ public Task IncreaseRequestLimit(HttpContext httpContext) HeaderNames.ContentEncoding, HeaderNames.ContentType, HeaderNames.ContentRange, HeaderNames.Trailer }; #endif + } } -} From 326507bb01f589439bf5d69fac35d222b1624e43 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Fri, 11 Sep 2020 19:17:28 -0700 Subject: [PATCH 44/66] Correct `$(SharedFxVersion)` and `$(TargetingPackVersion)` values (#25790) * Correct `$(SharedFxVersion)` and `$(TargetingPackVersion)` values - Ensure `$(SharedFxVersion)` doesn't change in `$(NoSemVer20)` projects - Ignore current project's `$(VersionSuffix)` in `$(TargetingPackVersion)` - Never assume `$(AspNetCoreBaselineVersion)` matches released targeting pack - Stabilize both versions correctly - Use these properties more widely - Remove other mechanisms to get the same values - Reduce use of the `_GetPackageVersionInfo` target - Reduce use of `$(SharedFxVersion)` for the targeting pack nits: - Correct comments about old RTMVersions.csproj project - Fix or remove a few other comments * Do not pass package filenames on Helix command Lines - remove parsing of these command-line arguments from `RuntestOptions` - instead craft the names using passed `$(SharedFxVersion)` - restore `$(DotNetRuntimeSourceFeedKey)` on Helix command line - lost somewhere along the line - correct argument count in runtests.sh - treated 11th argument as both Helix timeout and feed credential - count was messed up somewhere alone the line nits: - update C# syntax in `RuntestOptions` e.g. remove unused `public` setters - sort and group properties and their assignments --- Directory.Build.targets | 12 ++-- eng/Dependencies.props | 2 +- eng/Version.Details.xml | 2 +- eng/Versions.props | 4 +- eng/helix/content/RunTests/RunTestsOptions.cs | 67 +++++++++---------- eng/helix/content/runtests.cmd | 10 +-- eng/helix/content/runtests.sh | 8 +-- eng/targets/Helix.targets | 16 ++--- .../Microsoft.AspNetCore.App.UnitTests.csproj | 18 +---- .../InteropWebsite/Directory.Build.targets | 4 +- .../Infrastructure/GenerateTestProps.targets | 26 +------ .../Infrastructure/GenerateTestProps.targets | 26 +------ .../LoggingBranch/Directory.Build.targets | 4 -- src/SiteExtensions/Sdk/SiteExtension.targets | 4 +- 14 files changed, 66 insertions(+), 137 deletions(-) diff --git a/Directory.Build.targets b/Directory.Build.targets index 58171d37f4be..96c4576add88 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/eng/Dependencies.props b/eng/Dependencies.props index c242829120b3..5fc48ea2c3d4 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -73,7 +73,7 @@ and are generated based on the last package release. - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3b0d3910a763..7e411bdb589a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -241,7 +241,7 @@ https://github.com/dotnet/runtime 7d39776332446d8a84f5d542c80d264fa1cadbe7 - + https://github.com/dotnet/runtime 7d39776332446d8a84f5d542c80d264fa1cadbe7 diff --git a/eng/Versions.props b/eng/Versions.props index 4fb307011237..ba647ca82425 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -118,7 +118,7 @@ 5.0.0-rc.2.20461.4 5.0.0-rc.2.20461.4 5.0.0-rc.2.20461.4 - + 5.0.0-rc.2.20461.4 5.0.0-rc.2.20461.4 5.0.0-rc.2.20461.4 @@ -170,7 +170,7 @@ runtime packages for everything else. This is not an issue for assemblies available in Microsoft.NETCore.App.Ref or Microsoft.Extensions.Internal.Transport because it is next to impossible we would service those packages. - System.Security.AccessControl should only be referenced in Dependencies.props and RTMVersions.csproj. Because + System.Security.AccessControl should only be referenced in Dependencies.props and RepoTasks.csproj. Because it's a transitive reference, we reship the ref/ assembly in Microsoft.AspNetCore.App.Ref. dotnet/runtime ships the implementation assemblies in Microsoft.NETCore.App.Runtime.* packages. diff --git a/eng/helix/content/RunTests/RunTestsOptions.cs b/eng/helix/content/RunTests/RunTestsOptions.cs index bd611ef46ee5..13bd50a80fad 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") @@ -63,34 +53,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.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 TimeSpan Timeout { get; set; } } } diff --git a/eng/helix/content/runtests.cmd b/eng/helix/content/runtests.cmd index 1016d25aad8f..e8091960aa65 100644 --- a/eng/helix/content/runtests.cmd +++ b/eng/helix/content/runtests.cmd @@ -10,12 +10,8 @@ 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 @@ -40,8 +36,8 @@ 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..2458a7bcfb11 100644 --- a/eng/helix/content/runtests.sh +++ b/eng/helix/content/runtests.sh @@ -36,14 +36,14 @@ InstallDotNet $DOTNET_ROOT $dotnet_sdk_version "" "" true || { Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2 ExitWithExitCode $exit_code } -if [[ -z "${11:-}" ]]; then +if [[ -z "${10:-}" ]]; then 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} || { + 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 @@ -65,8 +65,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/targets/Helix.targets b/eng/targets/Helix.targets index 706c407778f2..ca580d1ed501 100644 --- a/eng/targets/Helix.targets +++ b/eng/targets/Helix.targets @@ -106,14 +106,8 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj - - + @@ -139,8 +133,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) $(MicrosoftNETCoreAppRuntimeVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) $(HelixTimeout) $(DotNetRuntimeSourceFeedKey) + ./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) $(HelixTimeout) $(DotNetRuntimeSourceFeedKey) $(HelixCommand) $(HelixTimeout) diff --git a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj index 2d55f9cd5025..c40284c6df37 100644 --- a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj +++ b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj @@ -70,20 +70,6 @@ - - - - - - - - - - <_Parameter1>TargetingPackDependencies @@ -119,12 +105,12 @@ <_Parameter1>RuntimePackageVersion - <_Parameter2>@(_RuntimePackageVersionInfo->'%(PackageVersion)') + <_Parameter2>$(SharedFxVersion) <_Parameter1>TargetingPackVersion - <_Parameter2>@(_TargetingPackVersionInfo->'%(PackageVersion)') + <_Parameter2>$(TargetingPackVersion) 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/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/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/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/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" /> From 340ee727150b51928be4fc48c23a5f4d3970cf88 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Sat, 12 Sep 2020 15:23:16 +1200 Subject: [PATCH 45/66] Update gRPC version in template to 2.32.0-pre1 (#25587) * Update gRPC version in template to 2.32.0-pre1 * Log server timeout detail * Only run interop tests on windows queues Co-authored-by: John Luo --- eng/Versions.props | 10 +++++----- src/Grpc/test/InteropTests/InteropTests.cs | 17 ++++++++++++++++- .../test/InteropTests/InteropTests.csproj | 2 ++ .../testassets/InteropClient/InteropClient.cs | 19 ++----------------- .../test/testassets/InteropWebsite/Startup.cs | 3 +++ 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index ba647ca82425..a873bd89668f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -251,11 +251,11 @@ 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 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/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(); From a17842a2e4749c9d9acc0d645049847aab6c9041 Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Tue, 25 Aug 2020 08:53:42 +0200 Subject: [PATCH 46/66] [Mvc] Add support for order in dynamic controller routes (#25073) * Order defaults to 1 same as conventional routes * An incremental order is applied to dynamic routes as they are defined. --- ...ontrollerEndpointRouteBuilderExtensions.cs | 18 +- .../MvcCoreServiceCollectionExtensions.cs | 1 + .../OrderedEndpointsSequenceProvider.cs | 26 +++ .../ControllerActionEndpointDataSource.cs | 41 +++-- .../ControllerActionEndpointDataSourceTest.cs | 4 +- ...azorPagesEndpointRouteBuilderExtensions.cs | 13 +- .../PageActionEndpointDataSource.cs | 32 +++- .../PageActionEndpointDataSourceTest.cs | 4 +- ...rollerActionEndpointDatasourceBenchmark.cs | 5 +- .../RoutingDynamicOrderTest.cs | 165 ++++++++++++++++++ .../Controllers/DynamicOrderController.cs | 30 ++++ .../RoutingWebSite/Pages/DynamicPage.cshtml | 2 +- .../RoutingWebSite/StartupForDynamicOrder.cs | 132 ++++++++++++++ 13 files changed, 425 insertions(+), 48 deletions(-) create mode 100644 src/Mvc/Mvc.Core/src/DependencyInjection/OrderedEndpointsSequenceProvider.cs create mode 100644 src/Mvc/test/Mvc.FunctionalTests/RoutingDynamicOrderTest.cs create mode 100644 src/Mvc/test/WebSites/RoutingWebSite/Controllers/DynamicOrderController.cs create mode 100644 src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamicOrder.cs diff --git a/src/Mvc/Mvc.Core/src/Builder/ControllerEndpointRouteBuilderExtensions.cs b/src/Mvc/Mvc.Core/src/Builder/ControllerEndpointRouteBuilderExtensions.cs index 4defbc5d2ada..6c14cca67fc0 100644 --- a/src/Mvc/Mvc.Core/src/Builder/ControllerEndpointRouteBuilderExtensions.cs +++ b/src/Mvc/Mvc.Core/src/Builder/ControllerEndpointRouteBuilderExtensions.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; @@ -506,18 +506,10 @@ public static void MapDynamicControllerRoute(this IEndpointRouteBu EnsureControllerServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; - - endpoints.Map( - pattern, - context => - { - throw new InvalidOperationException("This endpoint is not expected to be executed directly."); - }) - .Add(b => - { - b.Metadata.Add(new DynamicControllerRouteValueTransformerMetadata(typeof(TTransformer), state)); - }); + var controllerDataSource = GetOrCreateDataSource(endpoints); + + // The data source is just used to share the common order with conventionally routed actions. + controllerDataSource.AddDynamicControllerEndpoint(endpoints, pattern, typeof(TTransformer), state); } private static DynamicControllerMetadata CreateDynamicControllerMetadata(string action, string controller, string area) diff --git a/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs b/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs index 82181cd034d1..4f5593e86acd 100644 --- a/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs +++ b/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs @@ -269,6 +269,7 @@ internal static void AddMvcCoreServices(IServiceCollection services) // // Endpoint Routing / Endpoints // + services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); diff --git a/src/Mvc/Mvc.Core/src/DependencyInjection/OrderedEndpointsSequenceProvider.cs b/src/Mvc/Mvc.Core/src/DependencyInjection/OrderedEndpointsSequenceProvider.cs new file mode 100644 index 000000000000..132f7dfb6d80 --- /dev/null +++ b/src/Mvc/Mvc.Core/src/DependencyInjection/OrderedEndpointsSequenceProvider.cs @@ -0,0 +1,26 @@ +// 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.Infrastructure +{ + internal class OrderedEndpointsSequenceProvider + { + private object Lock = new object(); + + // 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 = 1; + + public int GetNext() + { + lock (Lock) + { + return _current++; + } + } + } +} diff --git a/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSource.cs b/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSource.cs index 8a27c982dc98..fb9288b9cf84 100644 --- a/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSource.cs +++ b/src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSource.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; @@ -15,27 +15,19 @@ namespace Microsoft.AspNetCore.Mvc.Routing internal class ControllerActionEndpointDataSource : ActionEndpointDataSourceBase { private readonly ActionEndpointFactory _endpointFactory; + private readonly OrderedEndpointsSequenceProvider _orderSequence; private readonly List _routes; - private int _order; - public ControllerActionEndpointDataSource( IActionDescriptorCollectionProvider actions, - ActionEndpointFactory endpointFactory) + ActionEndpointFactory endpointFactory, + OrderedEndpointsSequenceProvider orderSequence) : base(actions) { _endpointFactory = endpointFactory; - + _orderSequence = orderSequence; _routes = new List(); - // 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. - _order = 1; - DefaultBuilder = new ControllerActionEndpointConventionBuilder(Lock, Conventions); // IMPORTANT: this needs to be the last thing we do in the constructor. @@ -59,7 +51,7 @@ public ControllerActionEndpointConventionBuilder AddRoute( lock (Lock) { var conventions = new List>(); - _routes.Add(new ConventionalRouteEntry(routeName, pattern, defaults, constraints, dataTokens, _order++, conventions)); + _routes.Add(new ConventionalRouteEntry(routeName, pattern, defaults, constraints, dataTokens, _orderSequence.GetNext(), conventions)); return new ControllerActionEndpointConventionBuilder(Lock, conventions); } } @@ -108,6 +100,27 @@ protected override List CreateEndpoints(IReadOnlyList + { + throw new InvalidOperationException("This endpoint is not expected to be executed directly."); + }) + .Add(b => + { + ((RouteEndpointBuilder)b).Order = order; + b.Metadata.Add(new DynamicControllerRouteValueTransformerMetadata(transformerType, state)); + }); + } + } } } diff --git a/src/Mvc/Mvc.Core/test/Routing/ControllerActionEndpointDataSourceTest.cs b/src/Mvc/Mvc.Core/test/Routing/ControllerActionEndpointDataSourceTest.cs index deb97532ce6b..6001dab41545 100644 --- a/src/Mvc/Mvc.Core/test/Routing/ControllerActionEndpointDataSourceTest.cs +++ b/src/Mvc/Mvc.Core/test/Routing/ControllerActionEndpointDataSourceTest.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; @@ -385,7 +385,7 @@ private static bool SupportsLinkGeneration(RouteEndpoint endpoint) private protected override ActionEndpointDataSourceBase CreateDataSource(IActionDescriptorCollectionProvider actions, ActionEndpointFactory endpointFactory) { - return new ControllerActionEndpointDataSource(actions, endpointFactory); + return new ControllerActionEndpointDataSource(actions, endpointFactory, new OrderedEndpointsSequenceProvider()); } protected override ActionDescriptor CreateActionDescriptor( diff --git a/src/Mvc/Mvc.RazorPages/src/Builder/RazorPagesEndpointRouteBuilderExtensions.cs b/src/Mvc/Mvc.RazorPages/src/Builder/RazorPagesEndpointRouteBuilderExtensions.cs index a1f48fc00ee2..bd0c27186b46 100644 --- a/src/Mvc/Mvc.RazorPages/src/Builder/RazorPagesEndpointRouteBuilderExtensions.cs +++ b/src/Mvc/Mvc.RazorPages/src/Builder/RazorPagesEndpointRouteBuilderExtensions.cs @@ -337,18 +337,9 @@ public static void MapDynamicPageRoute(this IEndpointRouteBuilder EnsureRazorPagesServices(endpoints); // Called for side-effect to make sure that the data source is registered. - GetOrCreateDataSource(endpoints).CreateInertEndpoints = true; + var dataSource = GetOrCreateDataSource(endpoints); - endpoints.Map( - pattern, - context => - { - throw new InvalidOperationException("This endpoint is not expected to be executed directly."); - }) - .Add(b => - { - b.Metadata.Add(new DynamicPageRouteValueTransformerMetadata(typeof(TTransformer), state)); - }); + dataSource.AddDynamicPageEndpoint(endpoints, pattern, typeof(TTransformer), state); } private static DynamicPageMetadata CreateDynamicPageMetadata(string page, string area) diff --git a/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSource.cs b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSource.cs index d7501266a43a..cefb410c73ce 100644 --- a/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSource.cs +++ b/src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSource.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; @@ -8,18 +8,23 @@ using Microsoft.AspNetCore.Mvc.Abstractions; using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.Routing; +using Microsoft.AspNetCore.Routing; namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure { internal class PageActionEndpointDataSource : ActionEndpointDataSourceBase { private readonly ActionEndpointFactory _endpointFactory; + private readonly OrderedEndpointsSequenceProvider _orderSequence; - public PageActionEndpointDataSource(IActionDescriptorCollectionProvider actions, ActionEndpointFactory endpointFactory) + public PageActionEndpointDataSource( + IActionDescriptorCollectionProvider actions, + ActionEndpointFactory endpointFactory, + OrderedEndpointsSequenceProvider orderedEndpoints) : base(actions) { _endpointFactory = endpointFactory; - + _orderSequence = orderedEndpoints; DefaultBuilder = new PageActionEndpointConventionBuilder(Lock, Conventions); // IMPORTANT: this needs to be the last thing we do in the constructor. @@ -47,6 +52,27 @@ protected override List CreateEndpoints(IReadOnlyList + { + throw new InvalidOperationException("This endpoint is not expected to be executed directly."); + }) + .Add(b => + { + ((RouteEndpointBuilder)b).Order = order; + b.Metadata.Add(new DynamicPageRouteValueTransformerMetadata(transformerType, state)); + }); + } + } } } diff --git a/src/Mvc/Mvc.RazorPages/test/Infrastructure/PageActionEndpointDataSourceTest.cs b/src/Mvc/Mvc.RazorPages/test/Infrastructure/PageActionEndpointDataSourceTest.cs index a74d388c7fc9..291b3a801e00 100644 --- a/src/Mvc/Mvc.RazorPages/test/Infrastructure/PageActionEndpointDataSourceTest.cs +++ b/src/Mvc/Mvc.RazorPages/test/Infrastructure/PageActionEndpointDataSourceTest.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; @@ -92,7 +92,7 @@ public void Endpoints_AppliesConventions() private protected override ActionEndpointDataSourceBase CreateDataSource(IActionDescriptorCollectionProvider actions, ActionEndpointFactory endpointFactory) { - return new PageActionEndpointDataSource(actions, endpointFactory); + return new PageActionEndpointDataSource(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 c551bedb2ecc..8b965022950b 100644 --- a/src/Mvc/benchmarks/Microsoft.AspNetCore.Mvc.Performance/ControllerActionEndpointDatasourceBenchmark.cs +++ b/src/Mvc/benchmarks/Microsoft.AspNetCore.Mvc.Performance/ControllerActionEndpointDatasourceBenchmark.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; @@ -110,7 +110,8 @@ private ControllerActionEndpointDataSource CreateDataSource(IActionDescriptorCol { var dataSource = new ControllerActionEndpointDataSource( actionDescriptorCollectionProvider, - new ActionEndpointFactory(new MockRoutePatternTransformer())); + new ActionEndpointFactory(new MockRoutePatternTransformer()), + new OrderedEndpointsSequenceProvider()); return dataSource; } diff --git a/src/Mvc/test/Mvc.FunctionalTests/RoutingDynamicOrderTest.cs b/src/Mvc/test/Mvc.FunctionalTests/RoutingDynamicOrderTest.cs new file mode 100644 index 000000000000..ce0b22f21442 --- /dev/null +++ b/src/Mvc/test/Mvc.FunctionalTests/RoutingDynamicOrderTest.cs @@ -0,0 +1,165 @@ +// 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; +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 RoutingDynamicOrderTest : IClassFixture> + { + public RoutingDynamicOrderTest(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 PrefersAttributeRoutesOverDynamicControllerRoutes() + { + var factory = Factory + .WithWebHostBuilder(b => b.UseSetting("Scenario", RoutingWebSite.StartupForDynamicOrder.DynamicOrderScenarios.AttributeRouteDynamicRoute)); + + var client = factory.CreateClient(); + + // Arrange + var url = "http://localhost/attribute-dynamic-order/Controller=Home,Action=Index"; + var request = new HttpRequestMessage(HttpMethod.Get, url); + + // Act + var response = await client.SendAsync(request); + var content = await response.Content.ReadFromJsonAsync(); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal("AttributeRouteSlug", content.RouteName); + } + + [Fact] + public async Task DynamicRoutesAreMatchedInDefinitionOrderOverPrecedence() + { + AppContext.SetSwitch("Microsoft.AspNetCore.Routing.UseCorrectCatchAllBehavior", isEnabled: true); + var factory = Factory + .WithWebHostBuilder(b => b.UseSetting("Scenario", RoutingWebSite.StartupForDynamicOrder.DynamicOrderScenarios.MultipleDynamicRoute)); + + var client = factory.CreateClient(); + + // Arrange + var url = "http://localhost/dynamic-order/specific/Controller=Home,Action=Index"; + var request = new HttpRequestMessage(HttpMethod.Get, url); + + // 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("identifier", out var identifier)); + Assert.Equal("slug", identifier); + } + + [Fact] + public async Task ConventionalRoutesDefinedEarlierWinOverDynamicControllerRoutes() + { + AppContext.SetSwitch("Microsoft.AspNetCore.Routing.UseCorrectCatchAllBehavior", isEnabled: true); + var factory = Factory + .WithWebHostBuilder(b => b.UseSetting("Scenario", RoutingWebSite.StartupForDynamicOrder.DynamicOrderScenarios.ConventionalRouteDynamicRoute)); + + var client = factory.CreateClient(); + + // Arrange + var url = "http://localhost/conventional-dynamic-order-before"; + var request = new HttpRequestMessage(HttpMethod.Get, url); + + // Act + var response = await client.SendAsync(request); + var content = await response.Content.ReadFromJsonAsync(); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.False(content.RouteValues.TryGetValue("identifier", out var identifier)); + } + + [Fact] + public async Task ConventionalRoutesDefinedLaterLooseToDynamicControllerRoutes() + { + AppContext.SetSwitch("Microsoft.AspNetCore.Routing.UseCorrectCatchAllBehavior", isEnabled: true); + var factory = Factory + .WithWebHostBuilder(b => b.UseSetting("Scenario", RoutingWebSite.StartupForDynamicOrder.DynamicOrderScenarios.ConventionalRouteDynamicRoute)); + + var client = factory.CreateClient(); + + // Arrange + var url = "http://localhost/conventional-dynamic-order-after"; + var request = new HttpRequestMessage(HttpMethod.Get, url); + + // 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("identifier", out var identifier)); + Assert.Equal("slug", identifier); + } + + [Fact] + public async Task DynamicPagesDefinedEarlierWinOverDynamicControllers() + { + AppContext.SetSwitch("Microsoft.AspNetCore.Routing.UseCorrectCatchAllBehavior", isEnabled: true); + var factory = Factory + .WithWebHostBuilder(b => b.UseSetting("Scenario", RoutingWebSite.StartupForDynamicOrder.DynamicOrderScenarios.DynamicControllerAndPages)); + + var client = factory.CreateClient(); + // Arrange + var url = "http://localhost/dynamic-order-page-controller-before"; + var request = new HttpRequestMessage(HttpMethod.Get, url); + + // Act + var response = await client.SendAsync(request); + var content = await response.Content.ReadAsStringAsync(); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal("Hello from dynamic page: /DynamicPagebefore", content); + } + + [Fact] + public async Task DynamicPagesDefinedLaterLooseOverDynamicControllers() + { + AppContext.SetSwitch("Microsoft.AspNetCore.Routing.UseCorrectCatchAllBehavior", isEnabled: true); + var factory = Factory + .WithWebHostBuilder(b => b.UseSetting("Scenario", RoutingWebSite.StartupForDynamicOrder.DynamicOrderScenarios.DynamicControllerAndPages)); + + var client = factory.CreateClient(); + + // Arrange + var url = "http://localhost/dynamic-order-page-controller-after"; + var request = new HttpRequestMessage(HttpMethod.Get, url); + + // 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("identifier", out var identifier)); + Assert.Equal("controller", identifier); + } + + private record RouteInfo(string RouteName, IDictionary RouteValues); + } +} diff --git a/src/Mvc/test/WebSites/RoutingWebSite/Controllers/DynamicOrderController.cs b/src/Mvc/test/WebSites/RoutingWebSite/Controllers/DynamicOrderController.cs new file mode 100644 index 000000000000..d58b9fc24c31 --- /dev/null +++ b/src/Mvc/test/WebSites/RoutingWebSite/Controllers/DynamicOrderController.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace Mvc.RoutingWebSite.Controllers +{ + public class DynamicOrderController : Controller + { + private readonly TestResponseGenerator _generator; + + public DynamicOrderController(TestResponseGenerator generator) + { + _generator = generator; + } + + [HttpGet("attribute-dynamic-order/{**slug}", Name = "AttributeRouteSlug")] + public IActionResult Get(string slug) + { + return _generator.Generate(Url.RouteUrl("AttributeRouteSlug", new { slug })); + } + + [HttpGet] + public IActionResult Index() + { + return _generator.Generate(Url.RouteUrl(null, new { controller = "DynamicOrder", action = "Index" })); + } + } +} diff --git a/src/Mvc/test/WebSites/RoutingWebSite/Pages/DynamicPage.cshtml b/src/Mvc/test/WebSites/RoutingWebSite/Pages/DynamicPage.cshtml index f1d271bc6292..7580432bcbf9 100644 --- a/src/Mvc/test/WebSites/RoutingWebSite/Pages/DynamicPage.cshtml +++ b/src/Mvc/test/WebSites/RoutingWebSite/Pages/DynamicPage.cshtml @@ -1,3 +1,3 @@ @page @model RoutingWebSite.Pages.DynamicPageModel -Hello from dynamic page: @Url.Page("") \ No newline at end of file +Hello from dynamic page: @Url.Page("")@RouteData.Values["identifier"] \ No newline at end of file diff --git a/src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamicOrder.cs b/src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamicOrder.cs new file mode 100644 index 000000000000..2d3c96c57986 --- /dev/null +++ b/src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamicOrder.cs @@ -0,0 +1,132 @@ +// 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.Threading.Tasks; +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.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace RoutingWebSite +{ + // For by tests for dynamic routing to pages/controllers + public class StartupForDynamicOrder + { + public static class DynamicOrderScenarios + { + public const string AttributeRouteDynamicRoute = nameof(AttributeRouteDynamicRoute); + public const string MultipleDynamicRoute = nameof(MultipleDynamicRoute); + public const string ConventionalRouteDynamicRoute = nameof(ConventionalRouteDynamicRoute); + public const string DynamicControllerAndPages = nameof(DynamicControllerAndPages); + } + + public IConfiguration Configuration { get; } + + public StartupForDynamicOrder(IConfiguration configuration) + { + Configuration = configuration; + } + + public void ConfigureServices(IServiceCollection services) + { + services + .AddMvc() + .AddNewtonsoftJson() + .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)); + } + + public void Configure(IApplicationBuilder app) + { + var scenario = Configuration.GetValue("Scenario"); + app.UseRouting(); + app.UseEndpoints(endpoints => + { + // Route order definition is important for all these routes: + switch (scenario) + { + case DynamicOrderScenarios.AttributeRouteDynamicRoute: + endpoints.MapDynamicControllerRoute("attribute-dynamic-order/{**slug}", new TransformerState() { Identifier = "slug" }); + endpoints.MapControllers(); + break; + case DynamicOrderScenarios.ConventionalRouteDynamicRoute: + endpoints.MapControllerRoute(null, "{**conventional-dynamic-order-before:regex(^((?!conventional\\-dynamic\\-order\\-after).)*$)}", new { controller = "DynamicOrder", action = "Index" }); + endpoints.MapDynamicControllerRoute("{conventional-dynamic-order}", new TransformerState() { Identifier = "slug" }); + endpoints.MapControllerRoute(null, "conventional-dynamic-order-after", new { controller = "DynamicOrder", action = "Index" }); + break; + case DynamicOrderScenarios.MultipleDynamicRoute: + endpoints.MapDynamicControllerRoute("dynamic-order/{**slug}", new TransformerState() { Identifier = "slug" }); + endpoints.MapDynamicControllerRoute("dynamic-order/specific/{**slug}", new TransformerState() { Identifier = "specific" }); + break; + case DynamicOrderScenarios.DynamicControllerAndPages: + endpoints.MapDynamicPageRoute("{**dynamic-order-page-controller-before:regex(^((?!dynamic\\-order\\-page\\-controller\\-after).)*$)}", new TransformerState() { Identifier = "before", ForPages = true }); + endpoints.MapDynamicControllerRoute("{dynamic-order-page-controller}", new TransformerState() { Identifier = "controller" }); + endpoints.MapDynamicPageRoute("dynamic-order-page-controller-after", new TransformerState() { Identifier = "after", ForPages = true }); + break; + default: + throw new InvalidOperationException("Invalid scenario configuration."); + } + }); + + app.Map("/afterrouting", b => b.Run(c => + { + return c.Response.WriteAsync("Hello from middleware after routing"); + })); + } + + private class TransformerState + { + public string Identifier { get; set; } + public bool ForPages { get; set; } + } + + private class Transformer : DynamicRouteValueTransformer + { + // Turns a format like `controller=Home,action=Index` into an RVD + public override ValueTask TransformAsync(HttpContext httpContext, RouteValueDictionary values) + { + var kvps = ((string)values?["slug"])?.Split("/")?.LastOrDefault()?.Split(",") ?? Array.Empty(); + + // Go to index by default if the route doesn't follow the slug pattern, we want to make sure always match to + // test the order is applied + var state = (TransformerState)State; + var results = new RouteValueDictionary(); + if (!state.ForPages) + { + results["controller"] = "Home"; + results["action"] = "Index"; + } + else + { + results["Page"] = "/DynamicPage"; + } + + foreach (var kvp in kvps) + { + var split = kvp.Split("="); + if (split.Length == 2) + { + results[split[0]] = split[1]; + } + } + + results["identifier"] = ((TransformerState)State).Identifier; + + return new ValueTask(results); + } + } + } +} From b1e1aabc9d0d1de9b907033771e7debcd85e60ad Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Tue, 8 Sep 2020 09:17:26 -0700 Subject: [PATCH 47/66] [Mvc] Fix global state in controller and action endpoint data sources. * Create data sources "per router" instance. * Make a global shared order sequence "per router" for conventional and controller and page routes. * Create DynamicControllerEndpointSelector and DynamicPageEndpointSelector instances per data source. --- ...ontrollerEndpointRouteBuilderExtensions.cs | 73 +++++++- .../MvcCoreServiceCollectionExtensions.cs | 7 +- .../OrderedEndpointsSequenceProvider.cs | 11 +- .../OrderedEndpointsSequenceProviderCache.cs | 18 ++ .../ControllerActionEndpointDataSource.cs | 13 +- ...ntrollerActionEndpointDataSourceFactory.cs | 29 +++ ...ollerActionEndpointDataSourceIdProvider.cs | 17 ++ .../ControllerEndpointDataSourceIdMetadata.cs | 15 ++ .../DynamicControllerEndpointMatcherPolicy.cs | 27 ++- .../DynamicControllerEndpointSelector.cs | 14 +- .../DynamicControllerEndpointSelectorCache.cs | 46 +++++ .../ControllerActionEndpointDataSourceTest.cs | 9 +- ...amicControllerEndpointMatcherPolicyTest.cs | 28 +-- ...azorPagesEndpointRouteBuilderExtensions.cs | 79 +++++++- .../MvcRazorPagesMvcCoreBuilderExtensions.cs | 6 +- .../DynamicPageEndpointMatcherPolicy.cs | 26 ++- .../DynamicPageEndpointSelector.cs | 11 +- .../DynamicPageEndpointSelectorCache.cs | 47 +++++ .../PageActionEndpointDataSource.cs | 12 +- .../PageActionEndpointDataSourceFactory.cs | 30 +++ .../PageActionEndpointDataSourceIdProvider.cs | 17 ++ .../PageEndpointDataSourceIdMetadata.cs | 15 ++ .../DynamicPageEndpointMatcherPolicyTest.cs | 27 +-- .../PageActionEndpointDataSourceTest.cs | 2 +- ...rollerActionEndpointDatasourceBenchmark.cs | 1 + .../RoutingAcrossPipelineBranchesTest.cs | 172 ++++++++++++++++++ .../WebSites/Common/TestResponseGenerator.cs | 2 +- .../Controllers/BranchesController.cs | 29 +++ .../test/WebSites/RoutingWebSite/Program.cs | 2 +- .../RoutingWebSite/StartupForDynamic.cs | 3 + .../StartupRoutingDifferentBranches.cs | 104 +++++++++++ 31 files changed, 792 insertions(+), 100 deletions(-) rename src/Mvc/Mvc.Core/src/{DependencyInjection => Infrastructure}/OrderedEndpointsSequenceProvider.cs (83%) create mode 100644 src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProviderCache.cs create mode 100644 src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSourceFactory.cs create mode 100644 src/Mvc/Mvc.Core/src/Routing/ControllerActionEndpointDataSourceIdProvider.cs create mode 100644 src/Mvc/Mvc.Core/src/Routing/ControllerEndpointDataSourceIdMetadata.cs create mode 100644 src/Mvc/Mvc.Core/src/Routing/DynamicControllerEndpointSelectorCache.cs create mode 100644 src/Mvc/Mvc.RazorPages/src/Infrastructure/DynamicPageEndpointSelectorCache.cs create mode 100644 src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSourceFactory.cs create mode 100644 src/Mvc/Mvc.RazorPages/src/Infrastructure/PageActionEndpointDataSourceIdProvider.cs create mode 100644 src/Mvc/Mvc.RazorPages/src/Infrastructure/PageEndpointDataSourceIdMetadata.cs create mode 100644 src/Mvc/test/Mvc.FunctionalTests/RoutingAcrossPipelineBranchesTest.cs create mode 100644 src/Mvc/test/WebSites/RoutingWebSite/Controllers/BranchesController.cs create mode 100644 src/Mvc/test/WebSites/RoutingWebSite/StartupRoutingDifferentBranches.cs 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/DependencyInjection/OrderedEndpointsSequenceProvider.cs b/src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProvider.cs similarity index 83% rename from src/Mvc/Mvc.Core/src/DependencyInjection/OrderedEndpointsSequenceProvider.cs rename to src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProvider.cs index 132f7dfb6d80..701a5ff2ef3f 100644 --- a/src/Mvc/Mvc.Core/src/DependencyInjection/OrderedEndpointsSequenceProvider.cs +++ b/src/Mvc/Mvc.Core/src/Infrastructure/OrderedEndpointsSequenceProvider.cs @@ -1,26 +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 { - private object Lock = new object(); - // 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 = 1; + private int _current = 0; public int GetNext() { - lock (Lock) - { - return _current++; - } + 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/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" })); + } + } +} From f0c9f60903544b8393b810d44be23c24bf7e71c3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2020 09:26:31 +0000 Subject: [PATCH 48/66] [release/5.0-rc2] Update dependencies from dotnet/runtime dotnet/efcore (#25856) [release/5.0-rc2] Update dependencies from dotnet/runtime dotnet/efcore --- eng/Version.Details.xml | 296 ++++++++++++++++++++-------------------- eng/Versions.props | 148 ++++++++++---------- 2 files changed, 222 insertions(+), 222 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7e411bdb589a..ba57c1d0cae3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,309 +13,309 @@ https://github.com/dotnet/blazor cc449601d638ffaab58ae9487f0fd010bb178a12 - + https://github.com/dotnet/efcore - 3eeb676b39ac74802ad1e806d0956df14a7955e8 + 56c241b562cbf75673cfd56dd496d72cfce32dfe - + https://github.com/dotnet/efcore - 3eeb676b39ac74802ad1e806d0956df14a7955e8 + 56c241b562cbf75673cfd56dd496d72cfce32dfe - + https://github.com/dotnet/efcore - 3eeb676b39ac74802ad1e806d0956df14a7955e8 + 56c241b562cbf75673cfd56dd496d72cfce32dfe - + https://github.com/dotnet/efcore - 3eeb676b39ac74802ad1e806d0956df14a7955e8 + 56c241b562cbf75673cfd56dd496d72cfce32dfe - + https://github.com/dotnet/efcore - 3eeb676b39ac74802ad1e806d0956df14a7955e8 + 56c241b562cbf75673cfd56dd496d72cfce32dfe - + https://github.com/dotnet/efcore - 3eeb676b39ac74802ad1e806d0956df14a7955e8 + 56c241b562cbf75673cfd56dd496d72cfce32dfe - + https://github.com/dotnet/efcore - 3eeb676b39ac74802ad1e806d0956df14a7955e8 + 56c241b562cbf75673cfd56dd496d72cfce32dfe - + https://github.com/dotnet/efcore - 3eeb676b39ac74802ad1e806d0956df14a7955e8 + 56c241b562cbf75673cfd56dd496d72cfce32dfe - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 - + https://github.com/dotnet/runtime - 7d39776332446d8a84f5d542c80d264fa1cadbe7 + 54dfce73caac716251ff90e1099c4232f5587e35 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index a873bd89668f..12e34e417a34 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -64,85 +64,85 @@ 3.8.0-2.20403.2 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 - 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20461.4 + 5.0.0-rc.2.20462.5 3.2.0 - 5.0.0-rc.2.20461.2 - 5.0.0-rc.2.20461.2 - 5.0.0-rc.2.20461.2 - 5.0.0-rc.2.20461.2 - 5.0.0-rc.2.20461.2 - 5.0.0-rc.2.20461.2 - 5.0.0-rc.2.20461.2 - 5.0.0-rc.2.20461.2 + 5.0.0-rc.2.20462.2 + 5.0.0-rc.2.20462.2 + 5.0.0-rc.2.20462.2 + 5.0.0-rc.2.20462.2 + 5.0.0-rc.2.20462.2 + 5.0.0-rc.2.20462.2 + 5.0.0-rc.2.20462.2 + 5.0.0-rc.2.20462.2 5.0.0-beta.20459.8 From 99496b41a037d29edfec189cf4cf88bc1803bc48 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Sun, 13 Sep 2020 10:01:21 -0700 Subject: [PATCH 49/66] Nullability feedback for public types in Components (#25821) * EventCallback.InvokeAsync can pass a null value * Remove unused BindFormatterWithFormat --- src/Components/Components/src/BindConverter.cs | 1 - src/Components/Components/src/EventCallback.cs | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Components/Components/src/BindConverter.cs b/src/Components/Components/src/BindConverter.cs index 4c72cb728570..56c44ac5dcf3 100644 --- a/src/Components/Components/src/BindConverter.cs +++ b/src/Components/Components/src/BindConverter.cs @@ -23,7 +23,6 @@ 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, [MaybeNullWhen(false)] out T value); internal delegate bool BindParserWithFormat(object? obj, CultureInfo? culture, string? format, [MaybeNullWhen(false)] out T 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); From b760d35b54affa964d61a1b2f7c757a6a3569397 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Sun, 13 Sep 2020 11:40:09 -0700 Subject: [PATCH 50/66] Support override of PlatformManifest.txt content in servicing (#25849) - copied from release/3.1; not sure why this wasn't merged forward - doing now ensures we don't forget if we need to service targeting packs --- .../App.Ref/src/Microsoft.AspNetCore.App.Ref.csproj | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 - + From 8453a07dfa9756e0c268fcf7388db62c53d5080c Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Sun, 13 Sep 2020 11:40:33 -0700 Subject: [PATCH 51/66] Pass `$(MicrosoftNETCoreAppInternalPackageVersion)` to Helix jobs (#25850) - required for servicing, where e.g. `5.0.0` may be ambiguous - also move `%DOTNET_HOME%` into the working directory - reduces build-up in `%HELIX_CORRELATION_PAYLOAD%` and aligns w/ build.sh nit: add more debug output to `runtests.*` --- eng/helix/content/runtests.cmd | 11 +++++++++-- eng/helix/content/runtests.sh | 6 ++++++ eng/targets/Helix.targets | 6 +++--- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/eng/helix/content/runtests.cmd b/eng/helix/content/runtests.cmd index e8091960aa65..68bc1bf494e6 100644 --- a/eng/helix/content/runtests.cmd +++ b/eng/helix/content/runtests.cmd @@ -15,21 +15,28 @@ REM Batch only supports up to 9 arguments using the %# syntax, need to shift to 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 diff --git a/eng/helix/content/runtests.sh b/eng/helix/content/runtests.sh index 2458a7bcfb11..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 } +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 + 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. diff --git a/eng/targets/Helix.targets b/eng/targets/Helix.targets index ca580d1ed501..c4a943a2805f 100644 --- a/eng/targets/Helix.targets +++ b/eng/targets/Helix.targets @@ -20,7 +20,7 @@ - + @@ -137,8 +137,8 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj When the targeting pack builds, it has exactly the same version as the shared framework. Passing SharedFxVersion because that's needed even when the targeting pack isn't building. --> - call runtests.cmd $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) $(HelixTimeout) $(DotNetRuntimeSourceFeedKey) - ./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) $(HelixTimeout) $(DotNetRuntimeSourceFeedKey) + 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) From bfc1ec679202d145492ba1d1a25ff06562eac5aa Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Sun, 13 Sep 2020 14:24:23 -0700 Subject: [PATCH 52/66] Remove package version pinning for ref/ assemblies in servicing (#25851) - dotnet/runtime now keeps `$(AssemblyVersion)` values consistent - remove all use of the System.Security.AccessControl package --- eng/Dependencies.props | 7 ----- eng/Version.Details.xml | 5 ---- eng/Versions.props | 31 --------------------- eng/targets/ResolveReferences.targets | 39 --------------------------- eng/tools/RepoTasks/RepoTasks.csproj | 10 ------- 5 files changed, 92 deletions(-) diff --git a/eng/Dependencies.props b/eng/Dependencies.props index 5fc48ea2c3d4..cb76d3d15ed5 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -73,8 +73,6 @@ and are generated based on the last package release. - - @@ -196,11 +194,6 @@ and are generated based on the last package release. $(%(VersionName)PackageVersion) - $(%(VersionName)V0PackageVersion) - - - - - - https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 - https://github.com/dotnet/runtime 54dfce73caac716251ff90e1099c4232f5587e35 diff --git a/eng/Versions.props b/eng/Versions.props index 12e34e417a34..35ba690c482b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -118,8 +118,6 @@ 5.0.0-rc.2.20462.5 5.0.0-rc.2.20462.5 5.0.0-rc.2.20462.5 - - 5.0.0-rc.2.20462.5 5.0.0-rc.2.20462.5 5.0.0-rc.2.20462.5 5.0.0-rc.2.20462.5 @@ -162,36 +160,7 @@ --> $(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 - 5.0.0-preview.4.20180.4 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/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 - - - From ab5dfe537465b79a5fe809da149bb1db7354f1f6 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Sun, 13 Sep 2020 14:46:47 -0700 Subject: [PATCH 53/66] Allow dotnet-watch to look for changes to .razor.css files (#25792) Fixes https://github.com/dotnet/aspnetcore/issues/25483 --- .../integrationtests/BuildIntrospectionTest.cs | 12 ++++++++++++ .../netstandard2.0/Sdk.Razor.CurrentVersion.targets | 2 +- .../test/testassets/RazorTest.Introspection.targets | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs b/src/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs index c857f59ee4a0..ecb82a18d155 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/integrationtests/BuildIntrospectionTest.cs @@ -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/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets index 0a9b778e6f29..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 @@ -877,7 +877,7 @@ Copyright (c) .NET Foundation. All rights reserved. - + 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)')) From e3b632894da23ce276925f8afc8e2fc884b55f50 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Sun, 13 Sep 2020 21:45:23 -0700 Subject: [PATCH 54/66] Fix Helix testing issues with stable versions and local builds (#25865) - include all shipping packages in Helix payloads that need runtime - remove hard-coded `-ci` that broke Helix tests with stable versions or local builds - for local builds, do not assume `$(Configuration)` is Release - support `$(HelixTargetQueues)` property used in RunHelix.ps1 - lost somewhere along the lines; script ran full matrix nits: - clean up redundant addition of runtime and ref/ packages - `@(HelixContent)` additions in `_CreateHelixWorkItem` target are ignored - mention '+' separation of `-HelixQueues` argument to RunHelix.ps1 - allow `$(IsUnitTestProject)` override in case we need it in the future --- Directory.Build.props | 2 +- eng/helix/helix.proj | 3 +- eng/scripts/RunHelix.ps1 | 2 +- eng/targets/Helix.targets | 37 ++++++++----------- .../Microsoft.AspNetCore.App.UnitTests.csproj | 1 - 5 files changed, 19 insertions(+), 26 deletions(-) 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/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/Helix.targets b/eng/targets/Helix.targets index c4a943a2805f..ba28388707f2 100644 --- a/eng/targets/Helix.targets +++ b/eng/targets/Helix.targets @@ -16,8 +16,17 @@ - - + + + + + + + + + @@ -40,13 +49,10 @@ - + @@ -101,19 +107,6 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj - - - - - - - - - - - - - <_HelixFriendlyNameTargetQueue>$(HelixTargetQueue) diff --git a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj index c40284c6df37..dc1d583fa0e1 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 From 4d5b3159d8d8a0cecc7af69127ba83ac874ad010 Mon Sep 17 00:00:00 2001 From: Epsitha Ananth <47157394+epananth@users.noreply.github.com> Date: Mon, 14 Sep 2020 07:52:32 -0700 Subject: [PATCH 55/66] V3 publishing (#25784) * v3 changes --- .azure/pipelines/ci.yml | 1 + eng/Publishing.props | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index b705f9c565ee..3cbd594ec303 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -750,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/eng/Publishing.props b/eng/Publishing.props index 96ff7034d23c..f6c6fe21a03e 100644 --- a/eng/Publishing.props +++ b/eng/Publishing.props @@ -1,4 +1,8 @@ + + 3 + + $(ArtifactsDir.Substring(0, $([MSBuild]::Subtract($(ArtifactsDir.Length), 1)))) From 472e8297a7b35a5ab3776bd68a8d6aad8ad22d09 Mon Sep 17 00:00:00 2001 From: John Luo Date: Mon, 14 Sep 2020 07:58:03 -0700 Subject: [PATCH 56/66] Update identity web templates (#25834) * Update identity web templates * Do not generate scopeRequiredByApi if not needed --- eng/Dependencies.props | 1 - eng/Versions.props | 5 +++-- .../Web.ProjectTemplates/BlazorServerWeb-CSharp.csproj.in | 1 + .../ComponentsWebAssembly-CSharp.Server.csproj.in | 1 + .../Microsoft.DotNet.Web.ProjectTemplates.csproj | 1 + .../Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in | 1 + .../Web.ProjectTemplates/StarterWeb-CSharp.csproj.in | 1 + .../Web.ProjectTemplates/WebApi-CSharp.csproj.in | 1 + .../Server/Controllers/WeatherForecastController.cs | 2 ++ .../content/WebApi-CSharp/.template.config/template.json | 2 +- .../WebApi-CSharp/Controllers/WeatherForecastController.cs | 2 ++ 11 files changed, 14 insertions(+), 4 deletions(-) diff --git a/eng/Dependencies.props b/eng/Dependencies.props index cb76d3d15ed5..d7d3a004aca7 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -165,7 +165,6 @@ and are generated based on the last package release. - diff --git a/eng/Versions.props b/eng/Versions.props index 35ba690c482b..d6d209b8f840 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -231,8 +231,9 @@ 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/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 b61cd6f6d328..5cf045364a60 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/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/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/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; From ccbc46c076766e9969765f209575f84f7da64e77 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Mon, 14 Sep 2020 17:13:49 +0100 Subject: [PATCH 57/66] Fix RCL template to have correct filename for scoped CSS (#25870) --- .../.template.config/template.json | 1 + .../RazorClassLibrary-CSharp/Component1.razor.css | 6 ++++++ .../RazorClassLibrary-CSharp/wwwroot/styles.css | 11 ----------- 3 files changed, 7 insertions(+), 11 deletions(-) create mode 100644 src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/Component1.razor.css delete mode 100644 src/ProjectTemplates/Web.ProjectTemplates/content/RazorClassLibrary-CSharp/wwwroot/styles.css 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'); -} From 6b8ce801e816c33f9f334f5cf9bd6af810176844 Mon Sep 17 00:00:00 2001 From: Brennan Date: Mon, 14 Sep 2020 10:48:50 -0700 Subject: [PATCH 58/66] Revert 2.2 site extension version update (#25879) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index d6d209b8f840..b32c193aa66b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -210,7 +210,7 @@ 6.7.1 2.1.1 - 2.2.5 + 2.2.0 3.1.8-servicing-20421-6 $(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion) $(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion) From 6c29f44a0bd4f19b29d6a68a5b9d8fd7bdc769e6 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Mon, 14 Sep 2020 11:34:07 -0700 Subject: [PATCH 59/66] Reduce references to Microsoft.AspNetCore.App.Runtime.csproj (#25836) - dotnet-watch builds against runtime in the SDK - other projects build after runtime project due to Ref.csproj reference - but, when the targeting packs aren't building, there's no reason to use Ref.csproj - followup on 76fbd1a2831a and 84962660a33a, reducing parallelism in build --- .../test/Microsoft.AspNetCore.App.UnitTests.csproj | 6 ++++-- src/SiteExtensions/LoggingBranch/LB.csproj | 8 +++++--- src/Tools/dotnet-watch/src/dotnet-watch.csproj | 6 ------ 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj index dc1d583fa0e1..a225c92060dc 100644 --- a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj +++ b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj @@ -51,11 +51,13 @@ - + false true - + false true 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/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 @@ - - Date: Mon, 14 Sep 2020 20:07:15 +0100 Subject: [PATCH 60/66] Fix MSB4109 (#25880) Fix MSB4109 error when the Microsoft.Extensions.ApiDescription.Server NuGet package is installed. --- .../build/Microsoft.Extensions.ApiDescription.Server.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From a6f667bbb30023986942522a60822ef3f6290bde Mon Sep 17 00:00:00 2001 From: Pranav K Date: Mon, 14 Sep 2020 12:41:37 -0700 Subject: [PATCH 61/66] Add SkipAnalyzers=true to component declaration compilation (#25736) * Update to latest SDK * React to platform compatibility analyzer warnings * React to new warnings * Add platform compatibility attributes * Add SkipAnalyzers=true to component declaration compilation Fixes https://github.com/dotnet/aspnetcore/issues/25365 * Update eng/Version.Details.xml * Update Versions.props * Update Version.Details.xml * Update Versions.props * Update Version.Details.xml --- eng/Version.Details.xml | 8 ++------ eng/Versions.props | 4 +--- .../Microsoft.NET.Sdk.Razor.Component.targets | 1 + 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 30b3a034bd46..b846bb1ce38d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,10 +9,6 @@ --> - - https://github.com/dotnet/blazor - cc449601d638ffaab58ae9487f0fd010bb178a12 - https://github.com/dotnet/efcore 56c241b562cbf75673cfd56dd496d72cfce32dfe @@ -324,9 +320,9 @@ https://github.com/dotnet/arcade 91470b0b14ba016c1fb78211b12775287c17b34e - + https://github.com/dotnet/roslyn - b6a07e61473ed8a804de465f7c1cb5c17f80732d + b446afd34759150c2ea3b86ab794104e12e64db1 diff --git a/eng/Versions.props b/eng/Versions.props index b32c193aa66b..6071f0164a33 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -62,7 +62,7 @@ --> - 3.8.0-2.20403.2 + 3.8.0-3.20458.6 5.0.0-rc.2.20462.5 5.0.0-rc.2.20462.5 @@ -130,8 +130,6 @@ 5.0.0-rc.2.20462.5 5.0.0-rc.2.20462.5 - - 3.2.0 5.0.0-rc.2.20462.2 5.0.0-rc.2.20462.2 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 dd64c02b3d8d..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 @@ -234,6 +234,7 @@ Copyright (c) .NET Foundation. All rights reserved. ResponseFiles="$(CompilerResponseFile)" RuntimeMetadataVersion="$(RuntimeMetadataVersion)" SharedCompilationId="$(SharedCompilationId)" + SkipAnalyzers="true" SkipCompilerExecution="$(SkipCompilerExecution)" Sources="@(_RazorComponentDeclaration);@(Compile)" SubsystemVersion="$(SubsystemVersion)" From 7f1ca16b5815719239da18890dcebccbce2b9c27 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 21:48:52 +0000 Subject: [PATCH 62/66] Update dependencies from https://github.com/dotnet/efcore build 20200914.2 (#25876) [release/5.0-rc2] Update dependencies from dotnet/efcore --- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 17 ++++++++--------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b846bb1ce38d..150dc39eda26 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://github.com/dotnet/efcore - 56c241b562cbf75673cfd56dd496d72cfce32dfe + e96b1a2b972986c8332faac6ab3b38dd707fec09 - + https://github.com/dotnet/efcore - 56c241b562cbf75673cfd56dd496d72cfce32dfe + e96b1a2b972986c8332faac6ab3b38dd707fec09 - + https://github.com/dotnet/efcore - 56c241b562cbf75673cfd56dd496d72cfce32dfe + e96b1a2b972986c8332faac6ab3b38dd707fec09 - + https://github.com/dotnet/efcore - 56c241b562cbf75673cfd56dd496d72cfce32dfe + e96b1a2b972986c8332faac6ab3b38dd707fec09 - + https://github.com/dotnet/efcore - 56c241b562cbf75673cfd56dd496d72cfce32dfe + e96b1a2b972986c8332faac6ab3b38dd707fec09 - + https://github.com/dotnet/efcore - 56c241b562cbf75673cfd56dd496d72cfce32dfe + e96b1a2b972986c8332faac6ab3b38dd707fec09 - + https://github.com/dotnet/efcore - 56c241b562cbf75673cfd56dd496d72cfce32dfe + e96b1a2b972986c8332faac6ab3b38dd707fec09 - + https://github.com/dotnet/efcore - 56c241b562cbf75673cfd56dd496d72cfce32dfe + e96b1a2b972986c8332faac6ab3b38dd707fec09 https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index 6071f0164a33..4dc0a9ef338a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -131,14 +131,14 @@ 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.2 - 5.0.0-rc.2.20462.2 - 5.0.0-rc.2.20462.2 - 5.0.0-rc.2.20462.2 - 5.0.0-rc.2.20462.2 - 5.0.0-rc.2.20462.2 - 5.0.0-rc.2.20462.2 - 5.0.0-rc.2.20462.2 + 5.0.0-rc.2.20464.2 + 5.0.0-rc.2.20464.2 + 5.0.0-rc.2.20464.2 + 5.0.0-rc.2.20464.2 + 5.0.0-rc.2.20464.2 + 5.0.0-rc.2.20464.2 + 5.0.0-rc.2.20464.2 + 5.0.0-rc.2.20464.2 5.0.0-beta.20459.8 @@ -158,7 +158,6 @@ --> $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) - 5.0.0-preview.4.20180.4 From 45dade2b3621b0b3564041ccdf3063430b25551e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2020 00:01:45 +0000 Subject: [PATCH 63/66] Update dependencies from https://github.com/dotnet/efcore build 20200914.4 (#25886) [release/5.0-rc2] Update dependencies from dotnet/efcore --- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 150dc39eda26..6044352e416c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://github.com/dotnet/efcore - e96b1a2b972986c8332faac6ab3b38dd707fec09 + 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 - + https://github.com/dotnet/efcore - e96b1a2b972986c8332faac6ab3b38dd707fec09 + 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 - + https://github.com/dotnet/efcore - e96b1a2b972986c8332faac6ab3b38dd707fec09 + 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 - + https://github.com/dotnet/efcore - e96b1a2b972986c8332faac6ab3b38dd707fec09 + 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 - + https://github.com/dotnet/efcore - e96b1a2b972986c8332faac6ab3b38dd707fec09 + 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 - + https://github.com/dotnet/efcore - e96b1a2b972986c8332faac6ab3b38dd707fec09 + 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 - + https://github.com/dotnet/efcore - e96b1a2b972986c8332faac6ab3b38dd707fec09 + 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 - + https://github.com/dotnet/efcore - e96b1a2b972986c8332faac6ab3b38dd707fec09 + 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index 4dc0a9ef338a..9a7690ff4f5c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -131,14 +131,14 @@ 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20464.2 - 5.0.0-rc.2.20464.2 - 5.0.0-rc.2.20464.2 - 5.0.0-rc.2.20464.2 - 5.0.0-rc.2.20464.2 - 5.0.0-rc.2.20464.2 - 5.0.0-rc.2.20464.2 - 5.0.0-rc.2.20464.2 + 5.0.0-rc.2.20464.4 + 5.0.0-rc.2.20464.4 + 5.0.0-rc.2.20464.4 + 5.0.0-rc.2.20464.4 + 5.0.0-rc.2.20464.4 + 5.0.0-rc.2.20464.4 + 5.0.0-rc.2.20464.4 + 5.0.0-rc.2.20464.4 5.0.0-beta.20459.8 From d14e2730155790fc81b898e7336671b50cd934ea Mon Sep 17 00:00:00 2001 From: John Luo Date: Mon, 14 Sep 2020 18:43:42 -0700 Subject: [PATCH 64/66] [5.0.0-rc2] Backport Fix chrome/selenium tests (#25330) (#25840) * Fix chrome/selenium tests (#25330) * Revert "Disable failing/hanging tests due to Chrome/Selenium issue (#25323)" This reverts commit 332f1504128a63431cb67830703922cdeefee525. * Update Selenium to latest * Update API * Try specifying a version * Update Selenium to 4.0.0-beta5 * Disable browser log tests * Fix components e2e tests and disable blazor standalone template test * Disable tests using browser log * Disable template test * Avoid using .NET formatted strings in tests * Annotate BasicTestApp suggesting that it needs the all globalization data * Culture specific formatting relies on the ICU data carried by the OS. This causes issues in our tests if WebAssembly carries a different set than the OS. Instead updating these tests to use hardcoded strings. * Additionally fixing an issue where some projects in the solution were using tasks from the .dotnet SDK rather than the local copy of the SDK. This was causing issues building locally. Co-authored-by: Pranav K --- eng/Versions.props | 6 +-- eng/targets/CSharp.Common.props | 9 +++- ...soft.AspNetCore.Components.E2ETests.csproj | 3 -- .../MultipleRootComponentsTest.cs | 2 +- .../ServerReconnectionTest.cs | 2 +- .../Tests/WebAssemblyAuthenticationTests.cs | 2 +- .../Tests/WebAssemblyICUShardingTest.cs | 20 ++++---- .../E2ETest/Tests/WebAssemblyLazyLoadTest.cs | 2 +- .../Tests/WebAssemblyLocalizationTest.cs | 1 - .../E2ETest/Tests/WebAssemblyLoggingTest.cs | 8 +-- .../BasicTestApp/BasicTestApp.csproj | 3 ++ .../testassets/TestServer/ServerStartup.cs | 2 +- .../BlazorTemplates.Tests.csproj | 4 -- .../BlazorWasmTemplateTest.cs | 4 +- src/Shared/E2ETesting/BrowserFixture.cs | 51 ++++++++++++++----- src/Shared/E2ETesting/selenium-config.json | 6 ++- 16 files changed, 74 insertions(+), 51 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 9a7690ff4f5c..70a923a445b9 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -237,10 +237,10 @@ 1.0.2 12.0.2 13.0.4 - 3.12.1 + 4.0.0-alpha05 17.17134.0 - 2.43.0 - 3.12.1 + 85.0.4183.8300 + 4.0.0-alpha05 1.4.0 4.0.0 2.0.593 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 + + + - true - diff --git a/src/Components/test/E2ETest/ServerExecutionTests/MultipleRootComponentsTest.cs b/src/Components/test/E2ETest/ServerExecutionTests/MultipleRootComponentsTest.cs index 6fc25c2c4624..d1bc0ca7ec52 100644 --- a/src/Components/test/E2ETest/ServerExecutionTests/MultipleRootComponentsTest.cs +++ b/src/Components/test/E2ETest/ServerExecutionTests/MultipleRootComponentsTest.cs @@ -43,7 +43,7 @@ public override async Task InitializeAsync() } } - [Fact] + [Fact(Skip = "Browser logs cannot be retrieved: https://github.com/dotnet/aspnetcore/issues/25803")] public void DoesNotStartMultipleConnections() { Navigate("/multiple-components"); diff --git a/src/Components/test/E2ETest/ServerExecutionTests/ServerReconnectionTest.cs b/src/Components/test/E2ETest/ServerExecutionTests/ServerReconnectionTest.cs index 9b92d33aab63..aa8ed996e7ba 100644 --- a/src/Components/test/E2ETest/ServerExecutionTests/ServerReconnectionTest.cs +++ b/src/Components/test/E2ETest/ServerExecutionTests/ServerReconnectionTest.cs @@ -78,7 +78,7 @@ public void RendersContinueAfterReconnect() Browser.False(() => Browser.FindElement(selector).Text == currentValue); } - [Fact] + [Fact(Skip = "Browser logs cannot be retrieved: https://github.com/dotnet/aspnetcore/issues/25803")] public void ErrorsStopTheRenderingProcess() { Browser.FindElement(By.Id("cause-error")).Click(); diff --git a/src/Components/test/E2ETest/Tests/WebAssemblyAuthenticationTests.cs b/src/Components/test/E2ETest/Tests/WebAssemblyAuthenticationTests.cs index 52b25edefcb6..10a16061f892 100644 --- a/src/Components/test/E2ETest/Tests/WebAssemblyAuthenticationTests.cs +++ b/src/Components/test/E2ETest/Tests/WebAssemblyAuthenticationTests.cs @@ -306,7 +306,7 @@ public void LoggedInUser_OnTheIdP_CanLogInSilently() ValidateLoggedIn(userName); } - [Fact] + [Fact(Skip = "Browser logs cannot be retrieved: https://github.com/dotnet/aspnetcore/issues/25803")] public void CanNotRedirect_To_External_ReturnUrl() { Browser.Navigate().GoToUrl(new Uri(new Uri(Browser.Url), "/authentication/login?returnUrl=https%3A%2F%2Fwww.bing.com").AbsoluteUri); diff --git a/src/Components/test/E2ETest/Tests/WebAssemblyICUShardingTest.cs b/src/Components/test/E2ETest/Tests/WebAssemblyICUShardingTest.cs index f4d06eeda4e1..1d4990664231 100644 --- a/src/Components/test/E2ETest/Tests/WebAssemblyICUShardingTest.cs +++ b/src/Components/test/E2ETest/Tests/WebAssemblyICUShardingTest.cs @@ -1,9 +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; using System.Globalization; -using System.Linq; using GlobalizationWasmApp; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; @@ -18,7 +16,6 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests // This app covers testing this along with verifying the behavior for fallback culture for localized resources. public class WebAssemblyICUShardingTest : ServerTestBase> { - private readonly DateTime DisplayTime = new DateTime(2020, 09, 02); public WebAssemblyICUShardingTest( BrowserFixture browserFixture, ToggleExecutionModeServerFixture serverFixture, @@ -39,7 +36,7 @@ public void LoadingApp_FrenchLanguage_Works() Assert.Equal(culture.ToString(), cultureDisplay.Text); var dateDisplay = Browser.Exists(By.Id("dateTime")); - Assert.Equal(DisplayTime.ToString(culture), dateDisplay.Text); + Assert.Equal("02/09/2020 00:00:00", dateDisplay.Text); var localizedDisplay = Browser.Exists(By.Id("localizedString")); Assert.Equal("Bonjour!", localizedDisplay.Text); @@ -57,7 +54,7 @@ public void LoadingApp_KoreanLanguage_Works() Assert.Equal(culture.ToString(), cultureDisplay.Text); var dateDisplay = Browser.Exists(By.Id("dateTime")); - Assert.Equal(DisplayTime.ToString(culture), dateDisplay.Text); + Assert.Equal("2020. 9. 2. 오전 12:00:00", dateDisplay.Text); var localizedDisplay = Browser.Exists(By.Id("localizedString")); // The app has a "ko" resx file. This test verifies that we can walk up the culture hierarchy correctly. @@ -76,7 +73,7 @@ public void LoadingApp_RussianLanguage_Works() Assert.Equal(culture.ToString(), cultureDisplay.Text); var dateDisplay = Browser.Exists(By.Id("dateTime")); - Assert.Equal(DisplayTime.ToString(culture), dateDisplay.Text); + Assert.Equal("02.09.2020 00:00:00", dateDisplay.Text); var localizedDisplay = Browser.Exists(By.Id("localizedString")); Assert.Equal("Hello", localizedDisplay.Text); // No localized resources for this culture. @@ -94,7 +91,7 @@ public void LoadingApp_KannadaLanguage_Works() Assert.Equal(culture.ToString(), cultureDisplay.Text); var dateDisplay = Browser.Exists(By.Id("dateTime")); - Assert.Equal(DisplayTime.ToString(culture), dateDisplay.Text); + Assert.Equal("2/9/2020 12:00:00 ಪೂರ್ವಾಹ್ನ", dateDisplay.Text); var localizedDisplay = Browser.Exists(By.Id("localizedString")); Assert.Equal("ಹಲೋ", localizedDisplay.Text); @@ -105,15 +102,16 @@ public void LoadingApp_DynamicallySetLanguageThrows() { // Arrange // This verifies that we complain if the app programtically configures a language. - var expected = "This application's globalization settings requires using the combined globalization data file."; Navigate($"{ServerPathBase}/?culture=fr&dotNetCulture=es", noReload: false); var errorUi = Browser.Exists(By.Id("blazor-error-ui")); Browser.Equal("block", () => errorUi.GetCssValue("display")); - var logs = Browser.GetBrowserLogs(LogLevel.Severe).Select(l => l.Message); - Assert.True(logs.Any(l => l.Contains(expected)), - $"Expected to see globalization error message in the browser logs: {string.Join(Environment.NewLine, logs)}."); + // Browser logs cannot be retrieved: https://github.com/dotnet/aspnetcore/issues/25803" + // var expected = "This application's globalization settings requires using the combined globalization data file."; + // var logs = Browser.GetBrowserLogs(LogLevel.Severe).Select(l => l.Message); + // Assert.True(logs.Any(l => l.Contains(expected)), + // $"Expected to see globalization error message in the browser logs: {string.Join(Environment.NewLine, logs)}."); } private void Initialize(CultureInfo culture) diff --git a/src/Components/test/E2ETest/Tests/WebAssemblyLazyLoadTest.cs b/src/Components/test/E2ETest/Tests/WebAssemblyLazyLoadTest.cs index 8076ae61dc6b..317bae624ba0 100644 --- a/src/Components/test/E2ETest/Tests/WebAssemblyLazyLoadTest.cs +++ b/src/Components/test/E2ETest/Tests/WebAssemblyLazyLoadTest.cs @@ -111,7 +111,7 @@ public void CanLazyLoadAssemblyWithRoutes() Assert.True(renderedElement.Displayed); } - [Fact] + [Fact(Skip = "Browser logs cannot be retrieved: https://github.com/dotnet/aspnetcore/issues/25803")] public void ThrowsErrorForUnavailableAssemblies() { // Navigate to a page with lazy loaded assemblies for the first time diff --git a/src/Components/test/E2ETest/Tests/WebAssemblyLocalizationTest.cs b/src/Components/test/E2ETest/Tests/WebAssemblyLocalizationTest.cs index 81c99ccf677a..e41a6654858b 100644 --- a/src/Components/test/E2ETest/Tests/WebAssemblyLocalizationTest.cs +++ b/src/Components/test/E2ETest/Tests/WebAssemblyLocalizationTest.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using BasicTestApp; -using Microsoft.AspNetCore.Components.E2ETest; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; using Microsoft.AspNetCore.E2ETesting; diff --git a/src/Components/test/E2ETest/Tests/WebAssemblyLoggingTest.cs b/src/Components/test/E2ETest/Tests/WebAssemblyLoggingTest.cs index c6440eecd8c5..f659d2494249 100644 --- a/src/Components/test/E2ETest/Tests/WebAssemblyLoggingTest.cs +++ b/src/Components/test/E2ETest/Tests/WebAssemblyLoggingTest.cs @@ -32,7 +32,7 @@ protected override void InitializeAsyncCore() Assert.Equal("none", errorUi.GetCssValue("display")); } - [Fact] + [Fact(Skip = "Browser logs cannot be retrieved: https://github.com/dotnet/aspnetcore/issues/25803")] public void LogsSimpleExceptionsUsingLogger() { Browser.FindElement(By.Id("throw-simple-exception")).Click(); @@ -44,7 +44,7 @@ public void LogsSimpleExceptionsUsingLogger() "at BasicTestApp.ErrorComponent.ThrowSimple"); } - [Fact] + [Fact(Skip = "Browser logs cannot be retrieved: https://github.com/dotnet/aspnetcore/issues/25803")] public void LogsInnerExceptionsUsingLogger() { Browser.FindElement(By.Id("throw-inner-exception")).Click(); @@ -57,7 +57,7 @@ public void LogsInnerExceptionsUsingLogger() "at BasicTestApp.ErrorComponent.ThrowInner"); } - [Fact] + [Fact(Skip = "Browser logs cannot be retrieved: https://github.com/dotnet/aspnetcore/issues/25803")] public void LogsAggregateExceptionsUsingLogger() { Browser.FindElement(By.Id("throw-aggregate-exception")).Click(); @@ -72,7 +72,7 @@ public void LogsAggregateExceptionsUsingLogger() "System.InvalidTimeZoneException: Aggregate exception 3"); } - [Fact] + [Fact(Skip = "Browser logs cannot be retrieved: https://github.com/dotnet/aspnetcore/issues/25803")] public void LogsUsingCustomLogger() { Browser.MountTestComponent(); diff --git a/src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj b/src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj index 58d604dda85f..f6f34a7e17d3 100644 --- a/src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj +++ b/src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj @@ -8,6 +8,9 @@ false + + + true diff --git a/src/Components/test/testassets/TestServer/ServerStartup.cs b/src/Components/test/testassets/TestServer/ServerStartup.cs index 83578c5dcb3a..bcd6e56e8848 100644 --- a/src/Components/test/testassets/TestServer/ServerStartup.cs +++ b/src/Components/test/testassets/TestServer/ServerStartup.cs @@ -19,7 +19,7 @@ public ServerStartup(IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { services.AddMvc(); - services.AddServerSideBlazor(options => options.DetailedErrors = true); + services.AddServerSideBlazor(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj index 6a024814c24f..2da0e11666ef 100644 --- a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj +++ b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj @@ -10,10 +10,6 @@ true true - - - true - false true diff --git a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorWasmTemplateTest.cs b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorWasmTemplateTest.cs index a1922ddfe908..fa4c091d5400 100644 --- a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorWasmTemplateTest.cs +++ b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorWasmTemplateTest.cs @@ -40,7 +40,7 @@ public override Task InitializeAsync() return InitializeAsync(isolationContext: Guid.NewGuid().ToString()); } - [Fact] + [Fact(Skip = "Certificate issue: https://github.com/dotnet/aspnetcore/issues/25826")] public async Task BlazorWasmStandaloneTemplate_Works() { // Additional arguments are needed. See: https://github.com/dotnet/aspnetcore/issues/24278 @@ -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/Shared/E2ETesting/BrowserFixture.cs b/src/Shared/E2ETesting/BrowserFixture.cs index 557fbf37fc15..3e6fa36b6720 100644 --- a/src/Shared/E2ETesting/BrowserFixture.cs +++ b/src/Shared/E2ETesting/BrowserFixture.cs @@ -11,7 +11,10 @@ using System.Threading.Tasks; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; +using OpenQA.Selenium.Edge; +using OpenQA.Selenium.IE; using OpenQA.Selenium.Remote; +using OpenQA.Selenium.Safari; using Xunit; using Xunit.Abstractions; @@ -234,55 +237,75 @@ private string UserProfileDirectory(string context) name = $"{name} - {context}"; } - var capabilities = new DesiredCapabilities(); + DriverOptions options; + + switch (sauce.BrowserName.ToLower()) + { + case "chrome": + options = new ChromeOptions(); + break; + case "safari": + options = new SafariOptions(); + break; + case "internet explorer": + options = new InternetExplorerOptions(); + break; + case "microsoftedge": + options = new EdgeOptions(); + break; + default: + throw new InvalidOperationException($"Browser name {sauce.BrowserName} not recognized"); + } // Required config - capabilities.SetCapability("username", sauce.Username); - capabilities.SetCapability("accessKey", sauce.AccessKey); - capabilities.SetCapability("tunnelIdentifier", sauce.TunnelIdentifier); - capabilities.SetCapability("name", name); + options.AddAdditionalOption("username", sauce.Username); + options.AddAdditionalOption("accessKey", sauce.AccessKey); + options.AddAdditionalOption("tunnelIdentifier", sauce.TunnelIdentifier); + options.AddAdditionalOption("name", name); if (!string.IsNullOrEmpty(sauce.BrowserName)) { - capabilities.SetCapability("browserName", sauce.BrowserName); + options.AddAdditionalOption("browserName", sauce.BrowserName); } if (!string.IsNullOrEmpty(sauce.PlatformVersion)) { - capabilities.SetCapability("platformName", sauce.PlatformName); - capabilities.SetCapability("platformVersion", sauce.PlatformVersion); + options.PlatformName = sauce.PlatformName; + options.AddAdditionalOption("platformVersion", sauce.PlatformVersion); } else { // In some cases (like macOS), SauceLabs expects us to set "platform" instead of "platformName". - capabilities.SetCapability("platform", sauce.PlatformName); + options.AddAdditionalOption("platform", sauce.PlatformName); } if (!string.IsNullOrEmpty(sauce.BrowserVersion)) { - capabilities.SetCapability("browserVersion", sauce.BrowserVersion); + options.BrowserVersion = sauce.BrowserVersion; } if (!string.IsNullOrEmpty(sauce.DeviceName)) { - capabilities.SetCapability("deviceName", sauce.DeviceName); + options.AddAdditionalOption("deviceName", sauce.DeviceName); } if (!string.IsNullOrEmpty(sauce.DeviceOrientation)) { - capabilities.SetCapability("deviceOrientation", sauce.DeviceOrientation); + options.AddAdditionalOption("deviceOrientation", sauce.DeviceOrientation); } if (!string.IsNullOrEmpty(sauce.AppiumVersion)) { - capabilities.SetCapability("appiumVersion", sauce.AppiumVersion); + options.AddAdditionalOption("appiumVersion", sauce.AppiumVersion); } if (!string.IsNullOrEmpty(sauce.SeleniumVersion)) { - capabilities.SetCapability("seleniumVersion", sauce.SeleniumVersion); + options.AddAdditionalOption("seleniumVersion", sauce.SeleniumVersion); } + var capabilities = options.ToCapabilities(); + await SauceConnectServer.StartAsync(output); var attempt = 0; diff --git a/src/Shared/E2ETesting/selenium-config.json b/src/Shared/E2ETesting/selenium-config.json index 95c078e2c712..0682e48d3201 100644 --- a/src/Shared/E2ETesting/selenium-config.json +++ b/src/Shared/E2ETesting/selenium-config.json @@ -1,6 +1,8 @@ { "drivers": { - "chrome": {} + "chrome": { + "version" : "85.0.4183.87" + } }, - "ignoreExtraDrivers": true + "ignoreExtraDrivers": true } \ No newline at end of file From 38c9fe7437365df25ff5f5cd481e691a5072a460 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2020 03:33:16 +0000 Subject: [PATCH 65/66] Update dependencies from https://github.com/dotnet/runtime build 20200914.8 (#25895) [release/5.0-rc2] Update dependencies from dotnet/runtime --- eng/Version.Details.xml | 260 ++++++++++++++++++++-------------------- eng/Versions.props | 130 ++++++++++---------- 2 files changed, 195 insertions(+), 195 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6044352e416c..f2209557c5b0 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -41,272 +41,272 @@ https://github.com/dotnet/efcore 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e - + https://github.com/dotnet/runtime - 54dfce73caac716251ff90e1099c4232f5587e35 + 80df3e06b9d9ffe90427a19e706f7165700d7d4e https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 70a923a445b9..c2c5d3c2760a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -64,72 +64,72 @@ 3.8.0-3.20458.6 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 - 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 + 5.0.0-rc.2.20464.8 - 5.0.0-rc.2.20462.5 + 5.0.0-rc.2.20464.8 5.0.0-rc.2.20464.4 5.0.0-rc.2.20464.4 From 17e04b70b0b0364d11c2007c51a92bfacc5a71b3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2020 06:07:47 +0000 Subject: [PATCH 66/66] Update dependencies from https://github.com/dotnet/efcore build 20200914.7 (#25896) [release/5.0-rc2] Update dependencies from dotnet/efcore --- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f2209557c5b0..e6dcd3cfef62 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://github.com/dotnet/efcore - 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 + 90bca99f050b48fddd0f1a62ec386c9cf7de88ea - + https://github.com/dotnet/efcore - 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 + 90bca99f050b48fddd0f1a62ec386c9cf7de88ea - + https://github.com/dotnet/efcore - 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 + 90bca99f050b48fddd0f1a62ec386c9cf7de88ea - + https://github.com/dotnet/efcore - 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 + 90bca99f050b48fddd0f1a62ec386c9cf7de88ea - + https://github.com/dotnet/efcore - 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 + 90bca99f050b48fddd0f1a62ec386c9cf7de88ea - + https://github.com/dotnet/efcore - 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 + 90bca99f050b48fddd0f1a62ec386c9cf7de88ea - + https://github.com/dotnet/efcore - 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 + 90bca99f050b48fddd0f1a62ec386c9cf7de88ea - + https://github.com/dotnet/efcore - 9387ef9b891dc246a7a2bd2c4f76a41e61ebbc00 + 90bca99f050b48fddd0f1a62ec386c9cf7de88ea https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index c2c5d3c2760a..74ca556b86d5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -131,14 +131,14 @@ 5.0.0-rc.2.20464.8 - 5.0.0-rc.2.20464.4 - 5.0.0-rc.2.20464.4 - 5.0.0-rc.2.20464.4 - 5.0.0-rc.2.20464.4 - 5.0.0-rc.2.20464.4 - 5.0.0-rc.2.20464.4 - 5.0.0-rc.2.20464.4 - 5.0.0-rc.2.20464.4 + 5.0.0-rc.2.20464.7 + 5.0.0-rc.2.20464.7 + 5.0.0-rc.2.20464.7 + 5.0.0-rc.2.20464.7 + 5.0.0-rc.2.20464.7 + 5.0.0-rc.2.20464.7 + 5.0.0-rc.2.20464.7 + 5.0.0-rc.2.20464.7 5.0.0-beta.20459.8