importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.1.5/workbox-sw.js');

workbox.precaching.precacheAndRoute([]);

addEventListener('message', (event) => {
  if (event.data && event.data.type === 'SKIP_WAITING') {
    skipWaiting();
  }
});

workbox.routing.registerRoute(
  ({
    url
  }) => [
    'https://fonts.gstatic.com',
    'https://fonts.googleapis.com',
    'https://storage.googleapis.com'
  ].includes(url.origin),
  new workbox.strategies.CacheFirst({
    cacheName: 'google-fonts-webfonts',
    plugins: [
      new workbox.cacheableResponse.CacheableResponsePlugin({
        statuses: [0, 200],
      }),
      new workbox.expiration.ExpirationPlugin({
        maxAgeSeconds: 60 * 60 * 24 * 365,
        maxEntries: 30,
      }),
    ],
  })
);

// workbox.routing.registerRoute(
//   ({
//     url
//   }) => [
//     'https://cdn.jsdelivr.net',
//     'https://unpkg.com',
//     'https://cdn.skypack.dev',
//     'https://jspm.dev',
//     'https://fonts.googleapis.com',
//     'https://cdn.startinblox.com'
//   ].includes(url.origin) || /cdn/.test(url.origin),
//   new workbox.strategies.StaleWhileRevalidate({
//     cacheName: 'cdn',
//   })
// );

workbox.routing.registerRoute(
  ({
    request
  }) => request.destination === 'image',
  new workbox.strategies.CacheFirst({
    cacheName: 'images',
    plugins: [
      new workbox.cacheableResponse.CacheableResponsePlugin({
        statuses: [200],
      }),
      new workbox.expiration.ExpirationPlugin({
        maxEntries: 300,
        maxAgeSeconds: 60 * 60 * 24 * 30,
      }),
    ],
  }),
);

// workbox.routing.registerRoute(
//   ({
//     request
//   }) =>
//   request.destination === 'style' ||
//   request.destination === 'script',
//   new workbox.strategies.StaleWhileRevalidate({
//     cacheName: 'assets',
//     plugins: [
//       new workbox.cacheableResponse.CacheableResponsePlugin({
//         statuses: [200],
//       }),
//     ],
//   }),
// );

// workbox.routing.registerRoute(
//   ({
//     request
//   }) => request.mode === 'navigate',
//   new workbox.strategies.NetworkFirst({
//     cacheName: 'pages',
//     plugins: [
//       new workbox.cacheableResponse.CacheableResponsePlugin({
//         statuses: [200],
//       }),
//     ],
//   }),
// );

// workbox.routing.registerRoute(() => true,
//   new workbox.strategies.StaleWhileRevalidate({
//     cacheName: 'apis',
//     plugins: [
//       new workbox.broadcastUpdate.BroadcastUpdatePlugin(),
//       new workbox.expiration.ExpirationPlugin({
//         maxAgeSeconds: 60 * 60 * 24 * 30,
//       }),
//     ],
//   })
// );