Workbox a été conçu pour être modulaire, ce qui permet aux développeurs de sélectionner les éléments qu'ils souhaitent utiliser sans les forcer à tout télécharger dans un seul fichier.
Il existe cependant des chevauchements entre les modules. Par exemple, chaque module devra interagir avec la console, générer des erreurs significatives et utiliser le réseau ou le cache. Pour éviter que chaque module implémente la même logique, workbox-core contient ce code commun sur lequel chaque module s'appuie.
Ce module fournit certaines fonctionnalités aux développeurs, mais au-delà des niveaux de journalisation et de la mise en cache, workbox-core offre une logique interne à chaque module, plutôt qu'au développeur final.
Afficher et modifier les noms de cache par défaut
Workbox définit ses caches via cacheNames:
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
Ces noms de cache sont construits au format d'un préfixe, d'un nom et d'un suffixe, où le nom change en fonction de l'utilisation du cache.
<prefix>-<cache-id>-<suffix>
Vous pouvez modifier ces noms par défaut en modifiant la totalité ou une partie des valeurs transmises à setCacheNameDetails().
import {cacheNames, setCacheNameDetails} from 'workbox-core';
setCacheNameDetails({
  prefix: 'my-app',
  suffix: 'v1',
  precache: 'install-time',
  runtime: 'run-time',
  googleAnalytics: 'ga',
});
// Will print 'my-app-install-time-v1'
console.log(cacheNames.precache);
// Will print 'my-app-run-time-v1'
console.log(cacheNames.runtime);
// Will print 'my-app-ga-v1'
console.log(cacheNames.googleAnalytics);
Le principal cas d'utilisation du préfixe et du suffixe est que si vous utilisez Workbox pour plusieurs projets et que vous utilisez le même port localhost pour chaque projet, définir un préfixe personnalisé pour chaque module empêchera les caches de se chevaucher.
Revendication des clients
Certains développeurs souhaitent pouvoir publier un nouveau service worker et le faire contrôler les pages Web déjà ouvertes dès qu'il s'active, ce qui ne se produit pas par défaut.
Si vous souhaitez obtenir ce comportement, workbox-core fournit une méthode d'assistance:
import {clientsClaim} from 'workbox-core';
// This clientsClaim() should be at the top level
// of your service worker, not inside of, e.g.,
// an event handler.
clientsClaim();
La méthode clientsClaim() dans workbox-core ajoute automatiquement un écouteur d'événement activate à votre service worker et, à l'intérieur, appelle self.clients.claim(). Appeler self.clients.claim() avant l'activation du worker de service actuel entraîne une exception d'exécution. Le wrapper de workbox-core vous permet de l'appeler au bon moment.
Le wrapper skipWaiting est obsolète
Avant la version 6 de Workbox, les développeurs étaient également encouragés à utiliser la méthode skipWaiting() à partir de workbox-core. Toutefois, cette méthode n'offrait que peu d'avantages par rapport à ce que les développeurs obtiendraient s'ils appelaient self.skipWaiting() explicitement.
Étant donné que l'ancien wrapper workbox-core enregistrait également un gestionnaire d'événements install dans lequel self.skipWaiting() était appelé, le wrapper ne se comportait pas comme prévu s'il était appelé dans un autre gestionnaire d'événements, comme message, une fois l'installation terminée.
C'est pourquoi skipWaiting() de workbox-core est obsolète, et les développeurs doivent passer à l'appel direct de self.skipWaiting(). Contrairement à self.clients.claim(), self.skipWaiting() ne génère pas d'exception s'il est appelé au "mauvais" moment. Il n'est donc pas nécessaire de l'encapsuler dans un gestionnaire d'événements.
Types
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
): Promise<void>
Paramètres
Renvoie
- 
            Promise<void> 
CacheDidUpdateCallbackParam
Propriétés
- 
    cacheNamechaîne 
- 
    événementExtendableEvent 
- 
    newResponseRéponse 
- 
    oldResponseRéponse facultatif 
- 
    requestRequête 
- 
    stateMapLikeObject facultatif 
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
): Promise<void | Response>
Paramètres
Renvoie
- 
            Promise<void | Response> 
CachedResponseWillBeUsedCallbackParam
Propriétés
- 
    cacheNamechaîne 
- 
    cachedResponseRéponse facultatif 
- 
    événementExtendableEvent 
- 
    matchOptionsCacheQueryOptions facultatif 
- 
    requestRequête 
- 
    stateMapLikeObject facultatif 
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
): Promise<string | Request>
Paramètres
Renvoie
- 
            Promise<string | Request> 
CacheKeyWillBeUsedCallbackParam
Propriétés
- 
    événementExtendableEvent 
- 
    modechaîne 
- 
    paramstout facultatif 
- 
    requestRequête 
- 
    stateMapLikeObject facultatif 
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
): Promise<void | Response>
Paramètres
Renvoie
- 
            Promise<void | Response> 
CacheWillUpdateCallbackParam
Propriétés
- 
    événementExtendableEvent 
- 
    requestRequête 
- 
    réponseRéponse 
- 
    stateMapLikeObject facultatif 
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
): Promise<void>
Paramètres
Renvoie
- 
            Promise<void> 
FetchDidFailCallbackParam
Propriétés
- 
    erreurErreur 
- 
    événementExtendableEvent 
- 
    originalRequestRequête 
- 
    requestRequête 
- 
    stateMapLikeObject facultatif 
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
): Promise<Response>
Paramètres
Renvoie
- 
            Promise<Response> 
FetchDidSucceedCallbackParam
Propriétés
- 
    événementExtendableEvent 
- 
    requestRequête 
- 
    réponseRéponse 
- 
    stateMapLikeObject facultatif 
HandlerCallbackOptions
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
): Promise<void>
Paramètres
Renvoie
- 
            Promise<void> 
HandlerDidCompleteCallbackParam
Propriétés
- 
    erreurErreur facultatif 
- 
    événementExtendableEvent 
- 
    requestRequête 
- 
    réponseRéponse facultatif 
- 
    stateMapLikeObject facultatif 
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
): Promise<Response>
Paramètres
Renvoie
- 
            Promise<Response> 
HandlerDidErrorCallbackParam
Propriétés
- 
    erreurErreur 
- 
    événementExtendableEvent 
- 
    requestRequête 
- 
    stateMapLikeObject facultatif 
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
): Promise<void>
Paramètres
Renvoie
- 
            Promise<void> 
HandlerDidRespondCallbackParam
Propriétés
- 
    événementExtendableEvent 
- 
    requestRequête 
- 
    réponseRéponse facultatif 
- 
    stateMapLikeObject facultatif 
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
): Promise<Response>
Paramètres
Renvoie
- 
            Promise<Response> 
HandlerWillRespondCallbackParam
Propriétés
- 
    événementExtendableEvent 
- 
    requestRequête 
- 
    réponseRéponse 
- 
    stateMapLikeObject facultatif 
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
): Promise<void>
Paramètres
Renvoie
- 
            Promise<void> 
HandlerWillStartCallbackParam
Propriétés
- 
    événementExtendableEvent 
- 
    requestRequête 
- 
    stateMapLikeObject facultatif 
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
): Promise<Response>
Le rappel "handler" est appelé chaque fois qu'un Router fait correspondre une URL/requête à un Route via son RouteMatchCallback. Ce rappel de gestionnaire doit renvoyer un Promise qui se résout avec un Response.
Si un tableau ou un objet non vide est renvoyé par RouteMatchCallback, il sera transmis en tant qu'argument options.params de ce gestionnaire.
Paramètres
- 
    options
Renvoie
- 
            Promise<Response> 
ManualHandlerCallbackOptions
Options transmises à une fonction ManualHandlerCallback.
Propriétés
- 
    événementExtendableEvent 
- 
    requestchaîne | Requête 
MapLikeObject
PluginState
Utilisation d'un MapLikeObject simple pour le moment, mais il est possible de l'étendre/de le restreindre à l'avenir.
Type
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
): Promise<Request>
Paramètres
Renvoie
- 
            Promise<Request> 
RequestWillFetchCallbackParam
Propriétés
- 
    événementExtendableEvent 
- 
    requestRequête 
- 
    stateMapLikeObject facultatif 
RouteHandler
RouteHandlerCallback ou RouteHandlerObject.
La plupart des API de workbox-routing qui acceptent des gestionnaires de parcours en prennent un ou l'autre.
Énumération
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
): Promise<Response>
Le rappel "handler" est appelé chaque fois qu'un Router fait correspondre une URL/requête à un Route via son RouteMatchCallback. Ce rappel de gestionnaire doit renvoyer un Promise qui se résout avec un Response.
Si un tableau ou un objet non vide est renvoyé par RouteMatchCallback, il sera transmis en tant qu'argument options.params de ce gestionnaire.
Paramètres
- 
    options
Renvoie
- 
            Promise<Response> 
RouteHandlerCallbackOptions
Options transmises à une fonction RouteHandlerCallback.
Propriétés
- 
    événementExtendableEvent 
- 
    paramsMapLikeObject | chaîne[] facultatif 
- 
    requestRequête 
- 
    urlURL 
RouteHandlerObject
Objet avec une méthode handle de type RouteHandlerCallback.
Un objet Route peut être créé avec une fonction RouteHandlerCallback ou cet objet RouteHandler. L'avantage de RouteHandler est qu'il peut être étendu (comme le fait le package workbox-strategies).
Propriétés
- 
    handle
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
): any
Le rappel "match" permet de déterminer si un Route doit s'appliquer à une URL et une requête spécifiques. Lorsqu'une mise en correspondance se produit en réponse à un événement de récupération du client, l'objet event est également fourni. Toutefois, comme le rappel de correspondance peut être appelé en dehors d'un événement de récupération, la logique de correspondance ne doit pas supposer que l'objet event sera toujours disponible.
Si le rappel de correspondance renvoie une valeur vraie, l'RouteHandlerCallback du parcours correspondant est appelé immédiatement. Si la valeur renvoyée est un tableau ou un objet non vide, cette valeur sera définie sur l'argument options.params du gestionnaire.
Paramètres
- 
    options
Renvoie
- 
            tous 
RouteMatchCallbackOptions
Options transmises à une fonction RouteMatchCallback.
Propriétés
- 
    événementExtendableEvent 
- 
    requestRequête 
- 
    sameOriginbooléen 
- 
    urlURL 
WorkboxPlugin
Objet avec des propriétés de rappel de cycle de vie facultatives pour les opérations de récupération et de mise en cache.
Propriétés
- 
    cacheDidUpdateCacheDidUpdateCallback facultatif 
- 
    cacheKeyWillBeUsedCacheKeyWillBeUsedCallback facultatif 
- 
    cacheWillUpdateCacheWillUpdateCallback facultatif 
- 
    cachedResponseWillBeUsedCachedResponseWillBeUsedCallback facultatif 
- 
    fetchDidFailFetchDidFailCallback facultatif 
- 
    fetchDidSucceedFetchDidSucceedCallback facultatif 
- 
    handlerDidCompleteHandlerDidCompleteCallback facultatif 
- 
    handlerDidErrorHandlerDidErrorCallback facultatif 
- 
    handlerDidRespondHandlerDidRespondCallback facultatif 
- 
    handlerWillRespondHandlerWillRespondCallback facultatif 
- 
    handlerWillStartHandlerWillStartCallback facultatif 
- 
    requestWillFetchRequestWillFetchCallback facultatif 
WorkboxPluginCallbackParam
Propriétés
- 
    cacheDidUpdate
- 
    cacheKeyWillBeUsed
- 
    cacheWillUpdate
- 
    cachedResponseWillBeUsed
- 
    fetchDidFail
- 
    fetchDidSucceed
- 
    handlerDidComplete
- 
    handlerDidError
- 
    handlerDidRespond
- 
    handlerWillRespond
- 
    handlerWillStart
- 
    requestWillFetch
Propriétés
cacheNames
Obtenez les noms de cache actuels et le préfixe/suffixe utilisés par Workbox.
cacheNames.precache est utilisé pour les éléments pré-mis en cache, cacheNames.googleAnalytics est utilisé par workbox-google-analytics pour stocker analytics.js, et cacheNames.runtime est utilisé pour tout le reste.
cacheNames.prefix permet de ne récupérer que la valeur du préfixe actuel.
cacheNames.suffix permet de ne récupérer que la valeur du suffixe actuel.
Type
objet
Propriétés
- 
    googleAnalyticschaîne 
- 
    précacherchaîne 
- 
    préfixechaîne 
- 
    runtimechaîne 
- 
    suffixechaîne 
Méthodes
clientsClaim()
workbox-core.clientsClaim(): void
Réclamez tous les clients actuellement disponibles une fois que le service worker est actif. Cette valeur est généralement utilisée avec skipWaiting().
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
): Promise<Response>
Permet aux développeurs de copier une réponse et de modifier ses valeurs headers, status ou statusText (les valeurs pouvant être définies via un objet [ResponseInit]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax dans le constructeur).
Pour modifier ces valeurs, transmettez une fonction en tant que deuxième argument. Cette fonction sera appelée avec un seul objet avec les propriétés de réponse {headers, status, statusText}. La valeur renvoyée par cette fonction sera utilisée comme ResponseInit pour le nouveau Response. Pour modifier les valeurs, modifiez le ou les paramètres transmis et renvoyez-les, ou renvoyez un objet totalement nouveau.
Cette méthode est intentionnellement limitée aux réponses de même origine, que le CORS ait été utilisé ou non.
Paramètres
- 
    réponseRéponse 
- 
    modificateurfonction facultatif Le paramètre modifierse présente comme suit :(responseInit: ResponseInit) => ResponseInit - 
    responseInitResponseInit 
 - 
            RenvoieResponseInit 
 
- 
    
Renvoie
- 
            Promise<Response> 
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
): void
Ajoute une fonction à l'ensemble de quotaErrorCallbacks qui sera exécutée en cas d'erreur de quota.
Paramètres
- 
    callbackFonction 
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
): void
Modifie les noms de cache par défaut utilisés par les packages Workbox.
Les noms de cache sont générés au format <prefix>-<Cache Name>-<suffix>.
Paramètres
- 
    détailsPartialCacheNameDetails 
skipWaiting()
workbox-core.skipWaiting(): void
Cette méthode est obsolète et sera supprimée dans la version 7 de Workbox.
Appeler self.skipWaiting() est équivalent et doit être utilisé à la place.