Skip to content

Instantly share code, notes, and snippets.

@gterzian
Last active February 19, 2025 12:24
Show Gist options
  • Save gterzian/fa16c3cfa14073bac6754b60589e3b90 to your computer and use it in GitHub Desktop.
Save gterzian/fa16c3cfa14073bac6754b60589e3b90 to your computer and use it in GitHub Desktop.

ServiceWorker implementation items:

Interfaces

Client Context

  • ServiceWorker
  • ServiceWorkerRegistration
  • ServiceWorkerContainer
  • NavigationPreloadManager

Execution Context

  • ServiceWorkerGlobalScope
  • Client
  • Clients
  • ExtendableEvent
  • InstallEvent
  • FetchEvent
  • ExtendableMessageEvent

Caches

  • Cache
  • CacheStorate

Algorithms

  • Create Job (ServiceWorkerRegistration::register and ::update, Start Register, Soft Update)
  • Schedule Job (ServiceWorkerRegistration::register and ::update, Start Register, Soft Update)
  • Run Job (Schedule Job, Finish Job)
  • Finish Job (Register, Update, Install, Unregister)
  • Resolve Job Promise (Register, Update, Install, Unregister)
  • Reject Job Promise (Register, Update, Install, Unregister)
  • Start Register (ServiceWorkerContainer::register)
  • Register (Run Job)
  • Update (Run Job, Register, Update)
  • Soft Update (Update, Handle Fetch, Create Fetch Event and Dispatch, Fire Functional Event)
  • Install (Update)
  • Activate (Install, Try Activate, Handle User Agent Shutdown)
  • Try Activate (ServiceWorkerGlobalScope::skipWaiting, Install, Handle Service Worker Client Unload)
  • Setup ServiceWorkerGlobalScope (Run Service Worker, Handle Fetch)
  • Run Service Worker (ServiceWorker::postMessage, Update, Install, Activate, Setup ServiceWorkerGlobalScope, Create Fetch Event and Dispatch, Fire Functional Event)
  • All Fetch Listeners Are Empty (Run Service Worker)
  • Terminate Service Worker (Install, Activate, Run Service Worker, Handle Service Worker Client Unload, Clear Registrations)
  • Handle Fetch (ServiceWorkerContainer::register, FetchEvent::respondWith)
  • Create Fetch Event and Dispatch (Handle Fetch)
  • Parse URL Pattern (Verify Router Condition, Match Router Condition)
  • Verify Router Condition (InstallEvent::addRoutes)
  • Match Router Condition (Get Router Source)
  • Check Router Registration Limit (InstallEvent::addRoutes)
  • Count Router Inner Conditions (Check Router Registration Limit)
  • Get Router Source (Handle Fetch)
  • Should Skip Event (postMessage, Install, Activate, Create Fetch Event and Dispatch, Fire Functional Event )
  • Fire Functional Event (outside specs)
  • Handle Service Worker Client Unload (Clients::claim, Install, Unregister)
  • Handle User Agent Shutdown (internally)
  • Update Service Worker Extended Events Set (postMessage, Create Fetch Event and Dispatch, Fire Functional Event)
  • Unregister (Run Job)
  • Set Registration (Register)
  • Clear Registration (Handle User Agent Shutdown, Unregister, Try Clear Registration)
  • Try Clear Registration (ExtendableEvent, Handle Service Worker Client Unload, Unregister)
  • Update Registration State (Install, Activate, Clear Registration)
  • Update Worker State (Install, Activate, Clear Registration)
  • Notify Controller Change(claim, Activate)
  • Match Service Worker Registration (ServiceWorker::scriptURL, ServiceWorkerContainer::ready, others)
  • Get Registration (many places)
  • Get Newest Worker (many)
  • Service Worker Has No Pending Events (many)
  • Create Client(many)
  • Create Window Client(many)
  • Get Frame Type(many)
  • Resolve Get Client Promise(clients.get(id))
  • Query Cache (cache and fetch)
  • Request Matches Cached Item(Query Cache)
  • Batch Cache Operations(cache)
  • Is Async Module

Extended HTTP headers

  • Service Worker Script Request
  • Service Worker Script Response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment