Check if a service worker is supported by our browser:

if(navigator.serviceWorker){
  //register the service worker.
  navigator.serviceWorker.register("your/service-worker.js file path")
  .then(res =>{
    console.log("service worker registered successfully.")  
  })
  .catch(error =>{
    console.log("error registering service worker.")  
  })
}

Service worker scope: if you don't provide any scope, then it will be root level, but you can also provide a specific portion of the application(specific folder level).

navigator.serviceWorker.register("service-worker.js", {
  scope:"./path/folder"
})
self.addEventListener("install", (event)=>{
  // execute on the page load  
})

activate: it is used to clean up the useless cache.

self.addEventListener("activate", (event)=>{})

fetch: fetch event triggers every time when a file is requested from the server.