Workbox построен по модульному принципу, что позволяет разработчикам выбирать части, которые они хотят использовать, не заставляя их загружать все в одном файле.
 Однако между модулями существует перекрытие: например, каждому модулю необходимо взаимодействовать с консолью, выдавать значимые ошибки и использовать сеть или кеш. Чтобы каждый модуль не реализовал одну и ту же логику, workbox-core содержит общий код, на который опирается каждый модуль.
 Этот модуль действительно предоставляет некоторую функциональность разработчикам, но помимо уровней журналирования и кэширования, workbox-core предлагает внутреннюю логику каждому модулю, а не конечному разработчику.
Просмотр и изменение имен кэша по умолчанию
 Workbox определяет свои кеши cacheNames :
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
Эти имена кэшей создаются в формате префикса, имени и суффикса, причем имя меняется в зависимости от использования кэша.
 <prefix>-<cache-id>-<suffix>
 Вы можете изменить эти имена по умолчанию, изменив все или некоторые значения, переданные в 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);
Основной вариант использования префикса и суффикса заключается в том, что если вы используете Workbox для нескольких проектов и используете один и тот же порт локального хоста для каждого проекта, установка собственного префикса для каждого модуля предотвратит конфликт кешей друг с другом.
Претензии клиентов
Некоторые разработчики хотят иметь возможность публиковать нового сервис-воркера и позволять ему контролировать уже открытые веб-страницы сразу после его активации, чего по умолчанию не происходит.
 Если вам нужно такое поведение, workbox-core предоставляет вспомогательный метод:
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();
 Метод clientsClaim() в workbox-core автоматически добавляет прослушиватель событий activate к вашему сервис-воркеру и внутри него вызывает self.clients.claim() . Вызов self.clients.claim() до активации текущего сервисного работника приведет к исключению времени выполнения , а оболочка workbox-core помогает гарантировать, что вы вызовете его в нужное время.
Обертка SkipWaiting устарела.
 До версии Workbox v6 разработчикам также предлагалось использовать метод skipWaiting() из workbox-core . Однако этот метод не принес никакой пользы, кроме той, которую получили бы разработчики, если бы они явно вызывали self.skipWaiting() .
 Поскольку устаревшая оболочка workbox-core также зарегистрировала обработчик событий install , в котором был вызван self.skipWaiting() , оболочка не будет вести себя должным образом, если она будет вызвана внутри другого обработчика событий, например message , после того, как установка уже завершена.
 По этим причинам функция skipWaiting() в workbox-core устарела, и разработчикам следует переключиться на прямой вызов self.skipWaiting() . В отличие от self.clients.claim() , self.skipWaiting() не выдает исключение, если вызывается в «неправильное» время, поэтому нет необходимости заключать его в обработчик событий.
Типы
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
): Promise<void>
Параметры
- параметр
Возврат
- Обещание<void> 
CacheDidUpdateCallbackParam
Характеристики
- имя кэшанить 
- событиеРасширяемоеСобытие 
- новыйОтветОтвет 
- старый ответОтвет необязательный 
- запросЗапрос 
- состояниеMapLikeObject необязательно 
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
): Promise<void | Response>
Параметры
Возврат
- Обещание<недействительно | Ответ> 
CachedResponseWillBeUsedCallbackParam
Характеристики
- имя кэшанить 
- кэшированныйОтветОтвет необязательный 
- событиеРасширяемоеСобытие 
- параметры совпаденияCacheQueryOptions необязательно 
- запросЗапрос 
- состояниеMapLikeObject необязательно 
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
): Promise<string | Request>
Параметры
- параметр
Возврат
- Обещание<строка | Запрос> 
CacheKeyWillBeUsedCallbackParam
Характеристики
- событиеРасширяемоеСобытие 
- режимнить 
- параметрылюбые дополнительные 
- запросЗапрос 
- состояниеMapLikeObject необязательно 
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
): Promise<void | Response>
Параметры
- параметр
Возврат
- Обещание<недействительно | Ответ> 
CacheWillUpdateCallbackParam
Характеристики
- событиеРасширяемоеСобытие 
- запросЗапрос 
- ответОтвет 
- состояниеMapLikeObject необязательно 
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
): Promise<void>
Параметры
- параметр
Возврат
- Обещание<void> 
FetchDidFailCallbackParam
Характеристики
- ошибкаОшибка 
- событиеРасширяемоеСобытие 
- исходный запросЗапрос 
- запросЗапрос 
- состояниеMapLikeObject необязательно 
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
): Promise<Response>
Параметры
- параметр
Возврат
- Обещание<Ответ> 
FetchDidSucceedCallbackParam
Характеристики
- событиеРасширяемоеСобытие 
- запросЗапрос 
- ответОтвет 
- состояниеMapLikeObject необязательно 
HandlerCallbackOptions
Перечисление
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
): Promise<void>
Параметры
- параметр
Возврат
- Обещание<void> 
HandlerDidCompleteCallbackParam
Характеристики
- ошибкаОшибка необязательно 
- событиеРасширяемоеСобытие 
- запросЗапрос 
- ответОтвет необязательный 
- состояниеMapLikeObject необязательно 
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
): Promise<Response>
Параметры
- параметр
Возврат
- Обещание<Ответ> 
HandlerDidErrorCallbackParam
Характеристики
- ошибкаОшибка 
- событиеРасширяемоеСобытие 
- запросЗапрос 
- состояниеMapLikeObject необязательно 
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
): Promise<void>
Параметры
- параметр
Возврат
- Обещание<void> 
HandlerDidRespondCallbackParam
Характеристики
- событиеРасширяемоеСобытие 
- запросЗапрос 
- ответОтвет необязательный 
- состояниеMapLikeObject необязательно 
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
): Promise<Response>
Параметры
- параметр
Возврат
- Обещание<Ответ> 
HandlerWillRespondCallbackParam
Характеристики
- событиеРасширяемоеСобытие 
- запросЗапрос 
- ответОтвет 
- состояниеMapLikeObject необязательно 
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
): Promise<void>
Параметры
- параметр
Возврат
- Обещание<void> 
HandlerWillStartCallbackParam
Характеристики
- событиеРасширяемоеСобытие 
- запросЗапрос 
- состояниеMapLikeObject необязательно 
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
): Promise<Response>
 Обратный вызов «обработчика» вызывается всякий раз, когда Router сопоставляет URL/запрос с Route через свой RouteMatchCallback . Этот обратный вызов обработчика должен возвращать Promise , который разрешается с помощью Response .
 Если RouteMatchCallback возвращает непустой массив или объект, он будет передан в качестве аргумента options.params этого обработчика. 
Параметры
- параметры
Возврат
- Обещание<Ответ> 
ManualHandlerCallbackOptions
Параметры, передаваемые в функцию ManualHandlerCallback . 
Характеристики
- событиеРасширяемоеСобытие 
- запросстрока | Запрос 
MapLikeObject
PluginState
На данный момент используется простой MapLikeObject , но в будущем можно расширить/ограничить его. 
Тип
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
): Promise<Request>
Параметры
- параметр
Возврат
- Обещание<Запрос> 
RequestWillFetchCallbackParam
Характеристики
- событиеРасширяемоеСобытие 
- запросЗапрос 
- состояниеMapLikeObject необязательно 
RouteHandler
Либо RouteHandlerCallback , либо RouteHandlerObject . Большинство API в workbox-routing , которые принимают обработчики маршрутов, используют либо. 
Перечисление
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
): Promise<Response>
 Обратный вызов «обработчика» вызывается всякий раз, когда Router сопоставляет URL/запрос с Route через свой RouteMatchCallback . Этот обратный вызов обработчика должен возвращать Promise , который разрешается с помощью Response .
 Если RouteMatchCallback возвращает непустой массив или объект, он будет передан в качестве аргумента options.params этого обработчика. 
Параметры
- параметры
Возврат
- Обещание<Ответ> 
RouteHandlerCallbackOptions
Параметры, передаваемые в функцию RouteHandlerCallback . 
Характеристики
- событиеРасширяемоеСобытие 
- параметрыMapLikeObject | строка[] необязательно 
- запросЗапрос 
- URLURL-адрес 
RouteHandlerObject
Объект с методом handle типа RouteHandlerCallback .
 Объект Route можно создать либо с помощью функции RouteHandlerCallback , либо с помощью этого объекта RouteHandler . Преимущество RouteHandler в том, что его можно расширить (как это делает пакет workbox-strategies ). 
Характеристики
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
): any
 Обратный вызов «match» используется для определения того, должен ли Route применяться к определенному URL-адресу и запросу. Когда сопоставление происходит в ответ на событие выборки от клиента, также предоставляется объект event . Однако, поскольку обратный вызов сопоставления может быть вызван вне события выборки, логика сопоставления не должна предполагать, что объект event всегда будет доступен. Если обратный вызов сопоставления возвращает истинное значение, RouteHandlerCallback соответствующего маршрута будет вызван немедленно. Если возвращаемое значение является непустым массивом или объектом, это значение будет установлено в аргументе options.params обработчика. 
Параметры
- параметры
Возврат
- любой 
RouteMatchCallbackOptions
Параметры, передаваемые в функцию RouteMatchCallback . 
Характеристики
- событиеРасширяемоеСобытие 
- запросЗапрос 
- то же происхождениелогическое значение 
- URLURL-адрес 
WorkboxPlugin
Объект с дополнительными свойствами обратного вызова жизненного цикла для операций выборки и кэширования.
Характеристики
- кэшДидУпдатеCacheDidUpdateCallback необязательно. 
- кэшКейВиллБеИседCacheKeyWillBeUsedCallback необязательно 
- кэшВиллОбновлениеCacheWillUpdateCallback необязательно 
- кэшированныйответвиллбеуседCachedResponseWillBeUsedCallback необязательно 
- fetchDidFailFetchDidFailCallback необязательно. 
- fetchDidSucceedFetchDidSucceedCallback необязательно. 
- обработчикDidCompleteHandlerDidCompleteCallback необязательный 
- обработчикDidErrorHandlerDidErrorCallback необязательно 
- обработчикDidRespondHandlerDidRespondCallback необязательно. 
- обработчикWillRespondHandlerWillRespondCallback необязательно 
- обработчикWillStartHandlerWillStartCallback необязательно 
- запросВиллФетчRequestWillFetchCallback необязательно. 
WorkboxPluginCallbackParam
Характеристики
- кэшДидУпдате
- кэшКейВиллБеИсед
- кэшВиллОбновление
- кэшированныйответвиллбеусед
- fetchDidFail
- fetchDidSucceed
- обработчикDidComplete
- обработчикDidError
- обработчикDidRespond
- обработчикWillRespond
- обработчикWillStart
- запросВиллФетч
Характеристики
cacheNames
Получите текущие имена кэшей и префикс/суффикс, используемые Workbox.
 cacheNames.precache используется для предварительно кэшированных ресурсов, cacheNames.googleAnalytics используется workbox-google-analytics для хранения analytics.js , cacheNames.runtime используется для всего остального.
 cacheNames.prefix можно использовать для получения только текущего значения префикса. cacheNames.suffix можно использовать для получения только текущего значения суффикса. 
Тип
объект
Характеристики
- Google Аналитиканить 
- предварительное кэшированиенить 
- префикснить 
- время выполнениянить 
- суффикснить 
Методы
clientsClaim()
workbox-core.clientsClaim(): void
 Заявите права на всех доступных на данный момент клиентов, как только сервисный работник станет активным. Обычно это используется вместе с skipWaiting() .
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
): Promise<Response>
 Позволяет разработчикам копировать ответ и изменять его значения headers , status или statusText (значения, устанавливаемые через объект [ ResponseInit ] https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax в конструкторе). Чтобы изменить эти значения, передайте функцию в качестве второго аргумента. Эта функция будет вызвана с помощью одного объекта со свойствами ответа {headers, status, statusText} . Возвращаемое значение этой функции будет использоваться как ResponseInit для нового Response . Чтобы изменить значения, либо измените переданные параметры и верните их, либо верните совершенно новый объект.
Этот метод намеренно ограничен ответами одного и того же происхождения, независимо от того, использовался ли CORS или нет.
Параметры
- ответОтвет 
- модификаторфункция необязательна Параметр modifierвыглядит так:(responseInit: ResponseInit) => ResponseInit - ответинитРеспонсинит 
 - возвращаетРеспонсинит 
 
Возврат
- Обещание<Ответ> 
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
): void
Добавляет функцию в набор quotaErrorCallbacks, которая будет выполнена в случае ошибки квоты.
Параметры
- перезвонитьФункция 
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
): void
 Изменяет имена кэшей по умолчанию, используемые пакетами Workbox. Имена кэшей генерируются как <prefix>-<Cache Name>-<suffix> . 
Параметры
- подробностиЧастичное имя кэшаПодробности 
skipWaiting()
workbox-core.skipWaiting(): void
Этот метод устарел и будет удален в Workbox v7.
Вызов self.skipWaiting() эквивалентен и его следует использовать вместо этого.