núcleo da caixa de trabalho

O Workbox foi criado para ser modular, permitindo que os desenvolvedores selecionem as peças que querem usar sem forçá-los a fazer o download de tudo em um único arquivo.

No entanto, há sobreposição entre os módulos. Por exemplo, cada módulo precisa interagir com o console, gerar erros significativos e usar a rede ou o cache. Para evitar que cada módulo implemente a mesma lógica, workbox-core contém esse código comum de que cada módulo depende.

Esse módulo fornece algumas funcionalidades para os desenvolvedores, mas além dos níveis de registro e do armazenamento em cache, o workbox-core oferece lógica interna para cada módulo, e não para o desenvolvedor final.

Visualizar e alterar os nomes de cache padrão

A caixa de trabalho define os caches por cacheNames:

import {cacheNames} from 'workbox-core';

console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);

Esses nomes de cache são construídos no formato de um prefixo, um nome e um sufixo, em que o nome é alterado com base no uso do cache.

<prefix>-<cache-id>-<suffix>

É possível mudar esses nomes padrão mudando todos ou alguns dos valores transmitidos para 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);

O principal caso de uso do prefixo e do sufixo é que, se você usar o Workbox para vários projetos e a mesma porta de host local para cada projeto, definir um prefixo personalizado para cada módulo impedirá que os caches entrem em conflito entre si.

Declaração dos clientes

Alguns desenvolvedores querem publicar um novo service worker e fazer com que ele controle páginas da Web já abertas assim que for ativada, o que não acontecerá por padrão.

Se você quiser esse comportamento, o workbox-core fornece um método auxiliar:

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();

O método clientsClaim() em workbox-core adiciona automaticamente um listener de eventos activate ao service worker e, dentro dele, chama self.clients.claim(). Chamar self.clients.claim() antes da ativação do service worker atual levará a uma exceção de ambiente de execução, e o wrapper de workbox-core ajuda a garantir que você o chame no momento certo.

O wrapper skipAguardando foi descontinuado

Antes do Workbox v6, os desenvolvedores também eram incentivados a usar o método skipWaiting() de workbox-core. No entanto, esse método ofereceu pouco valor além do que os desenvolvedores receberiam se chamassem self.skipWaiting() explicitamente.

Como o wrapper workbox-core legado também registrou um manipulador de eventos install em que self.skipWaiting() foi chamado, o wrapper não se comportaria como esperado se fosse chamado dentro de outro manipulador de eventos, como message, depois que a instalação já tivesse sido concluída.

Por esses motivos, o uso do skipWaiting() do workbox-core foi descontinuado, e os desenvolvedores precisam começar a chamar self.skipWaiting() diretamente. Ao contrário de self.clients.claim(), self.skipWaiting() não vai gerar uma exceção se for chamado no momento "errado". Portanto, não é necessário envolvê-lo em um manipulador de eventos.

Tipos

CacheDidUpdateCallback()

workbox-core.CacheDidUpdateCallback(
  param: CacheDidUpdateCallbackParam,
)

Parâmetros

Retorna

  • Promise<void>

CacheDidUpdateCallbackParam

Propriedades

  • cacheName

    string

  • event

    ExtendableEvent

  • newResponse

    Resposta

  • oldResponse

    Resposta opcional

  • request

    Solicitação

  • state

    MapLikeObject opcional

CachedResponseWillBeUsedCallback()

workbox-core.CachedResponseWillBeUsedCallback(
  param: CachedResponseWillBeUsedCallbackParam,
)

Retorna

  • Promise<void | Response>

CachedResponseWillBeUsedCallbackParam

Propriedades

  • cacheName

    string

  • cachedResponse

    Resposta opcional

  • event

    ExtendableEvent

  • matchOptions

    CacheQueryOptions opcional

  • request

    Solicitação

  • state

    MapLikeObject opcional

CacheKeyWillBeUsedCallback()

workbox-core.CacheKeyWillBeUsedCallback(
  param: CacheKeyWillBeUsedCallbackParam,
)

Retorna

  • Promise<string | Request>

CacheKeyWillBeUsedCallbackParam

Propriedades

  • event

    ExtendableEvent

  • modo

    string

  • params

    Qualquer opção opcional

  • request

    Solicitação

  • state

    MapLikeObject opcional

CacheWillUpdateCallback()

workbox-core.CacheWillUpdateCallback(
  param: CacheWillUpdateCallbackParam,
)

Parâmetros

Retorna

  • Promise<void | Response>

CacheWillUpdateCallbackParam

Propriedades

  • event

    ExtendableEvent

  • request

    Solicitação

  • resposta

    Resposta

  • state

    MapLikeObject opcional

FetchDidFailCallback()

workbox-core.FetchDidFailCallback(
  param: FetchDidFailCallbackParam,
)

Parâmetros

Retorna

  • Promise<void>

FetchDidFailCallbackParam

Propriedades

  • error

    Erro

  • event

    ExtendableEvent

  • originalRequest

    Solicitação

  • request

    Solicitação

  • state

    MapLikeObject opcional

FetchDidSucceedCallback()

workbox-core.FetchDidSucceedCallback(
  param: FetchDidSucceedCallbackParam,
)

Parâmetros

Retorna

  • Promessa<Resposta>

FetchDidSucceedCallbackParam

Propriedades

  • event

    ExtendableEvent

  • request

    Solicitação

  • resposta

    Resposta

  • state

    MapLikeObject opcional

HandlerCallbackOptions

HandlerDidCompleteCallback()

workbox-core.HandlerDidCompleteCallback(
  param: HandlerDidCompleteCallbackParam,
)

Retorna

  • Promise<void>

HandlerDidCompleteCallbackParam

Propriedades

  • error

    Erro opcional

  • event

    ExtendableEvent

  • request

    Solicitação

  • resposta

    Resposta opcional

  • state

    MapLikeObject opcional

HandlerDidErrorCallback()

workbox-core.HandlerDidErrorCallback(
  param: HandlerDidErrorCallbackParam,
)

Parâmetros

Retorna

  • Promessa<Resposta>

HandlerDidErrorCallbackParam

Propriedades

  • error

    Erro

  • event

    ExtendableEvent

  • request

    Solicitação

  • state

    MapLikeObject opcional

HandlerDidRespondCallback()

workbox-core.HandlerDidRespondCallback(
  param: HandlerDidRespondCallbackParam,
)

Retorna

  • Promise<void>

HandlerDidRespondCallbackParam

Propriedades

  • event

    ExtendableEvent

  • request

    Solicitação

  • resposta

    Resposta opcional

  • state

    MapLikeObject opcional

HandlerWillRespondCallback()

workbox-core.HandlerWillRespondCallback(
  param: HandlerWillRespondCallbackParam,
)

Retorna

  • Promessa<Resposta>

HandlerWillRespondCallbackParam

Propriedades

  • event

    ExtendableEvent

  • request

    Solicitação

  • resposta

    Resposta

  • state

    MapLikeObject opcional

HandlerWillStartCallback()

workbox-core.HandlerWillStartCallback(
  param: HandlerWillStartCallbackParam,
)

Retorna

  • Promise<void>

HandlerWillStartCallbackParam

Propriedades

  • event

    ExtendableEvent

  • request

    Solicitação

  • state

    MapLikeObject opcional

ManualHandlerCallback()

workbox-core.ManualHandlerCallback(
  options: ManualHandlerCallbackOptions,
)

O callback "gerenciador" é invocado sempre que um Router corresponde um URL/solicitação a um Route usando o RouteMatchCallback. Esse callback do gerenciador precisa retornar um Promise que é resolvido com um Response.

Se uma matriz ou um objeto não vazio for retornado pelo RouteMatchCallback, ele será transmitido como o argumento options.params desse gerenciador.

Parâmetros

Retorna

  • Promessa<Resposta>

ManualHandlerCallbackOptions

Opções transmitidas para uma função ManualHandlerCallback.

Propriedades

  • event

    ExtendableEvent

  • request

    string | Solicitação

MapLikeObject

PluginState

Usando um MapLikeObject simples por enquanto, mas é possível estender/restringir isso no futuro.

RequestWillFetchCallback()

workbox-core.RequestWillFetchCallback(
  param: RequestWillFetchCallbackParam,
)

Retorna

  • Promessa<Solicitação>

RequestWillFetchCallbackParam

Propriedades

  • event

    ExtendableEvent

  • request

    Solicitação

  • state

    MapLikeObject opcional

RouteHandler

Um RouteHandlerCallback ou um RouteHandlerObject. A maioria das APIs em workbox-routing que aceitam gerenciadores de rota usa uma dessas opções.

RouteHandlerCallback()

workbox-core.RouteHandlerCallback(
  options: RouteHandlerCallbackOptions,
)

O callback "gerenciador" é invocado sempre que um Router corresponde um URL/solicitação a um Route usando o RouteMatchCallback. Esse callback do gerenciador precisa retornar um Promise que é resolvido com um Response.

Se uma matriz ou um objeto não vazio for retornado pelo RouteMatchCallback, ele será transmitido como o argumento options.params desse gerenciador.

Parâmetros

Retorna

  • Promessa<Resposta>

RouteHandlerCallbackOptions

Opções transmitidas para uma função RouteHandlerCallback.

Propriedades

  • event

    ExtendableEvent

  • params

    string[] | MapLikeObject opcional

  • request

    Solicitação

  • url

    URL

RouteHandlerObject

Um objeto com um método handle do tipo RouteHandlerCallback.

Um objeto Route pode ser criado com uma função RouteHandlerCallback ou esse objeto RouteHandler. A vantagem do RouteHandler é que ele pode ser estendido, como é feito pelo pacote workbox-strategies.

Propriedades

RouteMatchCallback()

workbox-core.RouteMatchCallback(
  options: RouteMatchCallbackOptions,
)

O callback "match" é usado para determinar se um Route precisa ser aplicado a um URL e uma solicitação específicos. Quando a correspondência ocorre em resposta a um evento de busca do cliente, o objeto event também é fornecido. No entanto, como o callback de correspondência pode ser invocado fora de um evento de busca, a lógica de correspondência não presume que o objeto event vai estar sempre disponível. Se o callback de correspondência retornar um valor verdadeiro, o RouteHandlerCallback da rota correspondente será invocado imediatamente. Se o valor retornado for uma matriz ou um objeto não vazio, esse valor será definido no argumento options.params do gerenciador.

Parâmetros

Retorna

  • qualquer um

RouteMatchCallbackOptions

Opções transmitidas para uma função RouteMatchCallback.

Propriedades

  • event

    ExtendableEvent

  • request

    Solicitação

  • sameOrigin

    boolean

  • url

    URL

WorkboxPlugin

Objeto com propriedades opcionais de callback do ciclo de vida para as operações de busca e armazenamento em cache.

Propriedades

WorkboxPluginCallbackParam

Propriedades

cacheNames

Acessa os nomes de cache e o prefixo/sufixo atuais usados pelo Workbox.

cacheNames.precache é usado para recursos pré-armazenados em cache, cacheNames.googleAnalytics é usado por workbox-google-analytics para armazenar analytics.js, e cacheNames.runtime é usado para todo o restante.

cacheNames.prefix pode ser usado para recuperar apenas o valor do prefixo atual. cacheNames.suffix pode ser usado para recuperar apenas o valor do sufixo atual.

Tipo

objeto

Propriedades

  • googleAnalytics

    string

  • pré-armazenar em cache

    string

  • prefixo

    string

  • runtime

    string

  • sufixo

    string

Métodos

clientsClaim()

workbox-core.clientsClaim()

Reivindique todos os clientes disponíveis quando o service worker ficar ativo. Normalmente, é usado com skipWaiting().

copyResponse()

workbox-core.copyResponse(
  response: Response,
  modifier?: function,
)

Permite que os desenvolvedores copiem uma resposta e modifiquem os valores headers, status ou statusText (valores configuráveis por um objeto [ResponseInit]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax no construtor). Para modificar esses valores, transmita uma função como o segundo argumento. Essa função é invocada com um único objeto com as propriedades de resposta {headers, status, statusText}. O valor de retorno dessa função será usado como ResponseInit para o novo Response. Para alterar os valores, modifique os parâmetros transmitidos e retorne-os ou retorne um objeto totalmente novo.

Esse método é intencionalmente limitado a respostas da mesma origem, independente do CORS ter sido usado ou não.

Parâmetros

  • resposta

    Resposta

  • modificador

    função optional

    O parâmetro modifier tem esta aparência:

    (responseInit: ResponseInit) => ResponseInit

    • responseInit

      ResponseInit

    • retorna

      ResponseInit

Retorna

  • Promessa<Resposta>

registerQuotaErrorCallback()

workbox-core.registerQuotaErrorCallback(
  callback: Function,
)

Adiciona uma função ao conjunto de shareErrorCallbacks que será executada se houver um erro de cota.

Parâmetros

  • callback

    Função

setCacheNameDetails()

workbox-core.setCacheNameDetails(
  details: PartialCacheNameDetails,
)

Modifica os nomes de cache padrão usados pelos pacotes do Workbox. Os nomes de cache são gerados como <prefix>-<Cache Name>-<suffix>.

Parâmetros

  • detalhes

    PartialCacheNameDetails

skipWaiting()

workbox-core.skipWaiting()

Esse método foi descontinuado e será removido no Workbox v7.

Chamar self.skipAguardando() é equivalente e deve ser usado no lugar.