diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Components/App.razor b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Components/App.razor index 06a950ccdb..1955b90993 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Components/App.razor +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Components/App.razor @@ -1,4 +1,10 @@ -@*+:cnd:noEmit*@ +@using Boilerplate.Client.Web.Shared +@*+:cnd:noEmit*@ + +@{ + var noPrerender = HttpContext.Request.Query["no-prerender"].Count > 0; + var renderMode = noPrerender ? AppRenderMode.NoPrerenderBlazorWebAssembly : AppRenderMode.Current; +} @@ -9,9 +15,13 @@ - - + + + @if (AppRenderMode.PwaEnabled) + { + + } @@ -25,11 +35,26 @@ - + @if (HttpContext.Request.IsCrawlerClient() is false) { - + @if (AppRenderMode.PwaEnabled) + { + + + + + } + else + { + + } @*#if (sample == "Admin")*@ diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.Designer.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.Designer.cs index d94040a33f..b3e1a4aa32 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.Designer.cs +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.Designer.cs @@ -1276,6 +1276,15 @@ public static string UnknownException { } } + /// + /// Looks up a localized string similar to Update. + /// + public static string Update { + get { + return ResourceManager.GetString("Update", resourceCulture); + } + } + /// /// Looks up a localized string similar to The record was modified by another user after you got the original data. the operation was canceled.. /// diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.fr.resx b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.fr.resx index 1d5fb83607..510cf0fee2 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.fr.resx +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.fr.resx @@ -1,6 +1,6 @@  - - - - - - - + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Le champ {0} est obligatoire. - + « {0} » et « {1} » ne correspondent pas. - + Le champ {0} n'est pas une adresse e-mail valide. - + MaxLengthAttribute doit avoir une valeur de longueur supérieure à zéro. - + Le champ {0} doit être de type chaîne ou tableau avec une longueur minimale de « {1} ». - + Le champ {0} doit être compris entre {1} et {2}. - + L'e-mail « {0} » est déjà pris. - + L'utilisateur est verrouillé. Réessayez dans {0} - + L'utilisateur {0} n'existe pas. - + Requête invalide - + La demande n'a pas pu être traitée en raison d'un conflit dans la demande - + L'accès à la ressource demandée est interdit - + Les données de la demande ne sont pas valides - + Une erreur s'est produite lors de la communication avec le serveur - + Votre demande ne contient pas d'informations d'authentification valides - + Une erreur inconnue s'est produite - + L'enregistrement a été modifié par un autre utilisateur après avoir obtenu les données d'origine. - + Ressource introuvable - + Trop de demandes - + Incapable de se connecter au serveur. - + Actif - + Tous - + Alphabétique - + Complété - + Date - + Editer le profil - + Nom et prénom - + Termes - + Mise à jour du profil réussie. - + Confirmer le nouveau mot de passe - + E-mail - + Mot de passe - + Votre mot de passe a changé avec succès. - + Le lien de confirmation a été renvoyé à votre adresse e-mail. - + Le lien de réinitialisation du mot de passe a été envoyé à votre adresse e-mail. - + L'image de l'utilisateur est introuvable - + L'entité de catégorie est introuvable - + L'entité du produit est introuvable - + Cette catégorie contient certains produits, vous ne pouvez donc pas la supprimer - + Erreur - + Vous avez déjà demandé l'e-mail de réinitialisation du mot de passe. - + Est-ce que j'accepte les conditions ? - + Vous devez accepter nos conditions. - + Genre - + Date de naissance - + Nom - + Catégorie - + Description - + Prix - + Catégories - + Catégorie de produit - + Des produits - + Etes-vous sûr de vouloir supprimer la catégorie {0} - + Êtes-vous sûr de vouloir supprimer le produit {0} - + Supprimer la catégorie - + Supprimer le produit - + Vous devez être connecté pour continuer. - + Nom d'utilisateur ou mot de passe invalide - + Vous avez déjà demandé l'e-mail de confirmation. - + Votre email est déjà confirmé. - + Faire - + Titre - + L'élément à faire est introuvable - + Etes-vous sûr de vouloir supprimer {0} - + Supprimer l'élément à faire - + Maison - + Ajouter - + Vous avez déjà un compte? - + Nous avons envoyé un lien de confirmation à votre adresse e-mail. - + confirmez votre adresse email - + Supprimer le compte - + Êtes-vous sûr de vouloir supprimer votre compte ? - + Vous n'avez pas de compte ? - + Modifier - + Échec de la confirmation par e-mail ! - + confirmation de l'émail - + E-mail confirmé avec succès ! - + Une erreur s'est produite lors du téléchargement du fichier - + Veuillez saisir l'adresse e-mail avec laquelle vous avez été inscrit afin que nous puissions envoyer un lien de réinitialisation du mot de passe à votre adresse e-mail. - + Mot de passe oublié - + Mâle - + Autre - + Dépôt GitHub - + Allez à aujourd'hui - + Créez facilement votre application Blazor multimode (WASM, serveur, hybride, pré-rendu) dans les plus brefs délais ! - + Accueil Boilerplate - + Il semble que le lien de confirmation soit invalide ou ait expiré. - + nouveau mot de passe - + Non - + Vous n'avez pas reçu l'e-mail de confirmation ? - + OU - + Image de profil - + Retirer - + Ré-envoyer l'email - + Réinitialiser le mot de passe - + Sauvegarder - + Se connecter - + se déconnecter - + Êtes-vous certain de vouloir vous déconnecter? - + S'inscrire - + S'inscrire - + Soumettre - + je suis d'accord avec le - + Téléchargez une nouvelle image de profil - + Oui - + Ajouter une tâche - + Rechercher des choses à faire... - + Sélectionnez votre date de naissance - + Choisir une catégorie - + Catégories totales - + Produits totaux - + Modifier la catégorie - + Nouvelle catégorie - + Catégories - + Entrez le nom de la catégorie - + Entrez le nom du produit - + Nombre de catégories des 30 derniers jours - + Ventes de produits - + Ce graphique montre le numéro de vente de chaque produit. - + Rechercher sur le nom - + Tableau du nombre de produits par catégorie - + Ce graphique montre le nombre de produits dans chaque catégorie. - + Des produits - + Pourcentage de produits par catégorie - + Ce graphique montre le pourcentage de produits dans chaque catégorie. - + Se connecter - + Connectez-vous en tant qu'utilisateur différent - + Vous êtes connecté en tant que - + Réinitialiser le mot de passe - + Aucune tâche pour l'instant - + Ajouter un produit - + Action - + Dos - + Annuler - + Vérifiez vos spams/indésirables si vous ne les trouvez pas dans la boîte de réception. - + Couleur - + Couleur personnalisée - + Sélecteur de couleurs par défaut - + Supprimer - + Identifiant - + Mot de passe oublié? - + Nombre de produits des 30 derniers jours - + Femelle - + Modifier le produit - + Tableau de bord - + Souviens-toi de moi? + + Mise à jour + \ No newline at end of file diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.resx b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.resx index 4e70f389ee..4d903f08e0 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.resx +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Resources/AppStrings.resx @@ -442,6 +442,9 @@ Please confirm your email by clicking on the link. Remember me? + + + Update diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Extensions/IServiceCollectionExtensions.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Extensions/IServiceCollectionExtensions.cs index 1c52100957..da22f879c9 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Extensions/IServiceCollectionExtensions.cs +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Extensions/IServiceCollectionExtensions.cs @@ -13,10 +13,7 @@ public static IServiceCollection AddClientSharedServices(this IServiceCollection services.AddSharedServices(); - if (RenderModeProvider.PrerenderEnabled && RenderModeProvider.IsHybridRender() is false) - services.TryAddTransient(); - else - services.TryAddTransient(); + services.TryAddTransient(); services.TryAddSessioned(); services.TryAddTransient(); @@ -47,7 +44,7 @@ public static IServiceCollection AddSessioned(this IS where TImplementation : class, TService where TService : class { - if (RenderModeProvider.IsHybridRender() || OperatingSystem.IsBrowser()) + if (AppRenderMode.IsHybrid() || OperatingSystem.IsBrowser()) { return services.AddSingleton(); } @@ -64,7 +61,7 @@ public static IServiceCollection TryAddSessioned(this where TImplementation : class, TService where TService : class { - if (RenderModeProvider.IsHybridRender() || OperatingSystem.IsBrowser()) + if (AppRenderMode.IsHybrid() || OperatingSystem.IsBrowser()) { services.TryAddSingleton(); } diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/AppRenderMode.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/AppRenderMode.cs new file mode 100644 index 0000000000..da342b20d7 --- /dev/null +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/AppRenderMode.cs @@ -0,0 +1,30 @@ +using Microsoft.AspNetCore.Components.Web; +using OS = System.OperatingSystem; + +namespace Boilerplate.Client.Core.Services; + +public static class AppRenderMode +{ + public const bool PrerenderEnabled = false; + + private static IComponentRenderMode Auto { get; } = new InteractiveAutoRenderMode(PrerenderEnabled); + private static IComponentRenderMode BlazorWebAssembly { get; } = new InteractiveWebAssemblyRenderMode(PrerenderEnabled); + private static IComponentRenderMode BlazorServer { get; } = new InteractiveServerRenderMode(PrerenderEnabled); + public static IComponentRenderMode NoPrerenderBlazorWebAssembly => new InteractiveWebAssemblyRenderMode(prerender: false); + + public static IComponentRenderMode Current => +#if DEBUG + BlazorServer; // For better development experience. +#else + Auto; +#endif + + public static bool PwaEnabled { get; } = +#if PwaEnabled + true; +#else + false; +#endif + + public static bool IsHybrid() => OS.IsAndroid() || OS.IsIOS() || OS.IsMacCatalyst() || OS.IsMacOS() || OS.IsWindows(); +} diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/AuthenticationManager.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/AuthenticationManager.cs index db6306d69a..2655918315 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/AuthenticationManager.cs +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/AuthenticationManager.cs @@ -25,7 +25,7 @@ public async Task SignOut() { await storageService.RemoveItem("access_token"); await storageService.RemoveItem("refresh_token"); - if (RenderModeProvider.PrerenderEnabled && RenderModeProvider.IsHybridRender() is false) + if (AppRenderMode.PrerenderEnabled && AppRenderMode.IsHybrid() is false) { await jsRuntime.RemoveCookie("access_token"); } @@ -34,7 +34,7 @@ public async Task SignOut() public async Task RefreshToken() { - if (RenderModeProvider.PrerenderEnabled && RenderModeProvider.IsHybridRender() is false) + if (AppRenderMode.PrerenderEnabled && AppRenderMode.IsHybrid() is false) { await jsRuntime.RemoveCookie("access_token"); } @@ -90,7 +90,7 @@ private async Task StoreToken(TokenResponseDto tokenResponseDto, bool? rememberM } await storageService.SetItem("access_token", tokenResponseDto!.AccessToken, rememberMe is true); await storageService.SetItem("refresh_token", tokenResponseDto!.RefreshToken, rememberMe is true); - if (RenderModeProvider.PrerenderEnabled && RenderModeProvider.IsHybridRender() is false) + if (AppRenderMode.PrerenderEnabled && AppRenderMode.IsHybrid() is false) { await jsRuntime.SetCookie("access_token", tokenResponseDto.AccessToken!, tokenResponseDto.ExpiresIn, rememberMe is true); } diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/PrerenderStateService.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/PrerenderStateService.cs index 2b6b2f024d..11ba0d98a1 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/PrerenderStateService.cs +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/PrerenderStateService.cs @@ -11,14 +11,20 @@ public class PrerenderStateService : IPrerenderStateService, IAsyncDisposable private readonly PersistentComponentState applicationState; private readonly ConcurrentDictionary values = new(); - public PrerenderStateService(PersistentComponentState state) + public PrerenderStateService(IServiceProvider serviceProvider) { - applicationState = state; - subscription = applicationState.RegisterOnPersisting(PersistAsJson, RenderModeProvider.Current); + if (AppRenderMode.PrerenderEnabled) + { + applicationState = serviceProvider.GetRequiredService(); + subscription = applicationState.RegisterOnPersisting(PersistAsJson, AppRenderMode.Current); + } } public async Task GetValue(string key, Func> factory) { + if (AppRenderMode.PrerenderEnabled is false) + return await factory(); + if (applicationState.TryTakeFromJson(key, out T? value)) return value; var result = await factory(); @@ -28,6 +34,9 @@ public PrerenderStateService(PersistentComponentState state) void Persist(string key, T value) { + if (AppRenderMode.PrerenderEnabled is false) + return; + values.TryRemove(key, out object? _); values.TryAdd(key, value); } @@ -42,14 +51,9 @@ async Task PersistAsJson() public async ValueTask DisposeAsync() { - subscription?.Dispose(); - } -} + if (AppRenderMode.PrerenderEnabled is false) + return; -public class NoPrerenderStateService : IPrerenderStateService -{ - public Task GetValue(string key, Func> factory) - { - return factory(); + subscription?.Dispose(); } } diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/RenderModeProvider.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/RenderModeProvider.cs deleted file mode 100644 index c7929e90fc..0000000000 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/RenderModeProvider.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Microsoft.AspNetCore.Components.Web; -using OS = System.OperatingSystem; - -namespace Boilerplate.Client.Core.Services; -public static class RenderModeProvider -{ - public static bool PrerenderEnabled { get; set; } = false; - public static IComponentRenderMode Auto { get; } = new InteractiveAutoRenderMode(PrerenderEnabled); - public static IComponentRenderMode BlazorWasm { get; } = new InteractiveWebAssemblyRenderMode(PrerenderEnabled); - public static IComponentRenderMode BlazorServer { get; } = new InteractiveServerRenderMode(PrerenderEnabled); - - // PrerenderOnly: In order to have prerender only mode, simply remove @rendermode usages from App.razor - - public static IComponentRenderMode Current => - BuildConfigurationModeDetector.Current.IsDebug() ? BlazorServer /*for better development experience*/ : Auto; - - public static bool IsHybridRender() => OS.IsAndroid() - || OS.IsIOS() || OS.IsMacCatalyst() || OS.IsMacOS() || OS.IsWindows(); -} diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Boilerplate.Client.Web.csproj b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Boilerplate.Client.Web.csproj index 53ef094b11..519ff21d9d 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Boilerplate.Client.Web.csproj +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Boilerplate.Client.Web.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -12,16 +12,23 @@ true false + service-worker-assets.js + false + true + Default + + + + - all diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Properties/launchSettings.json b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Properties/launchSettings.json deleted file mode 100644 index dfdbeed35c..0000000000 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Properties/launchSettings.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "profiles": { - "Boilerplate.Client.Web": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:59614;http://localhost:59615" - } - } -} \ No newline at end of file diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Shared/AppBswupProgressBar.razor b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Shared/AppBswupProgressBar.razor new file mode 100644 index 0000000000..f760e02197 --- /dev/null +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Shared/AppBswupProgressBar.razor @@ -0,0 +1,73 @@ +@using Bit.Bswup +@using Bit.BlazorUI + +@inherits AppComponentBase + + + +
+ +
+ + + + + + @* *@ +
\ No newline at end of file diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/manifest.json b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/manifest.json new file mode 100644 index 0000000000..eb6745b908 --- /dev/null +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/manifest.json @@ -0,0 +1,57 @@ +{ + "dir": "ltr", + "lang": "en", + "scope": "/", + "start_url": "/", + "orientation": "any", + "id": "bitBoilerplate", + "display": "standalone", + "theme_color": "#2EA3FF", + "related_applications": [], + "name": "bit Boilerplate", + "background_color": "#0D1117", + "short_name": "bit Boilerplate", + "prefer_related_applications": false, + "display_override": [ "window-controls-overlay" ], + "description": "bit Boilerplate is a project template that includes all the necessary parts to create a fully-featured web app.", + "features": [ + "Cross Platform", + "fast", + "simple" + ], + "categories": [ + "utilities" + ], + "icons": [ + { + "sizes": "512x512", + "type": "image/png", + "src": "images/icons/bit-icon-512.png" + } + ], + "shortcuts": [ + { + "name": "Terms", + "url": "/terms" + }, + //#if (sample == "Todo") + { + "name": "Todo", + "url": "/todo" + }, + //#elif (sample == "AdminPanel") + { + "name": "Categories", + "url": "/categories" + }, + { + "name": "Products", + "url": "/products" + }, + //#endif + { + "name": "EditProfile", + "url": "/edit-profile" + } + ] +} \ No newline at end of file diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.js b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.js new file mode 100644 index 0000000000..0c4fa6ba58 --- /dev/null +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.js @@ -0,0 +1,4 @@ +// In development, always fetch from the network and do not enable offline support. +// This is because caching would make development more difficult (changes would not +// be reflected on the first load after each change). +self.addEventListener('fetch', () => { }); \ No newline at end of file diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.published.js b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.published.js new file mode 100644 index 0000000000..ee4e860377 --- /dev/null +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.published.js @@ -0,0 +1,37 @@ +// bit version: 8.2.0-pre-01 +// https://github.com/bitfoundation/bitplatform/tree/develop/src/Bswup + +self.assetsInclude = []; +self.assetsExclude = [ + /bit\.blazorui\.fluent\.css$/, + /bit\.blazorui\.fluent-dark\.css$/, + /bit\.blazorui\.fluent-light\.css$/, + /Boilerplate\.Client\.Web\.styles\.css$/ +]; +self.externalAssets = [ + { + "url": "/" + }, + { + "url": "_framework\/blazor.web.js" + } +]; + +self.serverHandledUrls = [ + /\/api\//, + /\/odata\//, + /\/jobs\//, + /\/core\//, + /\/signalr\//, + /\/healthchecks-ui/, + /\/healthz/, + /\/swagger/ +]; + +self.isPassive = true; +self.defaultUrl = "/"; +self.caseInsensitiveUrl = true; +self.noPrerenderQuery = 'no-prerender=true'; +self.disablePassiveFirstBoot = true; + +self.importScripts('_content/Bit.Bswup/bit-bswup.sw.js'); \ No newline at end of file diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props b/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props index 08492474ff..842207c836 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props @@ -11,6 +11,9 @@ en true $(DefineConstants);MultilingualEnabled + + false + $(DefineConstants);PwaEnabled 14.2 14.0