24 lines
1.0 KiB
TypeScript
24 lines
1.0 KiB
TypeScript
|
|
/**
|
||
|
|
* Регистрация сервис-воркера (AGENT.md, Фаза 5): офлайн-заглушка и кэш
|
||
|
|
* собранной статики. В dev-режиме воркер не нужен — он мешал бы горячей
|
||
|
|
* перезагрузке, поэтому регистрируем только production-сборку.
|
||
|
|
*/
|
||
|
|
|
||
|
|
/** registerServiceWorker включает офлайн-режим. Возвращает признак регистрации. */
|
||
|
|
export function registerServiceWorker(): boolean {
|
||
|
|
if (typeof window === 'undefined' || typeof navigator === 'undefined') {
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
if (!('serviceWorker' in navigator)) {
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
if (!import.meta.env.PROD) {
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
// Регистрация не должна ломать запуск приложения: ошибки только в консоль.
|
||
|
|
void navigator.serviceWorker.register('/sw.js', { scope: '/' }).catch((error: unknown) => {
|
||
|
|
console.warn('service worker registration failed', error);
|
||
|
|
});
|
||
|
|
return true;
|
||
|
|
}
|