Packages
plinth
0.10.2
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.13
0.1.12
0.1.11
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Bindings to Node.js and browser platform APIs
Current section
Files
Jump to
Current section
Files
src/plinth/browser/service_worker.gleam
import gleam/json.{type Json}
import plinth/browser/message.{type Client, type Message}
import gleam/javascript/promise.{type Promise}
pub type ServiceWorker
@external(javascript, "../../service_worker_ffi.mjs", "onFullMessage")
pub fn self_on_message(worker: GlobalScope, handle: fn(Message) -> Nil) -> Nil
@external(javascript, "../../service_worker_ffi.mjs", "onMessage")
pub fn service_worker_on_message(handle: fn(Json) -> Nil) -> Nil
pub type GlobalScope
@external(javascript, "../../service_worker_ffi.mjs", "self")
pub fn self() -> Result(GlobalScope, String)
@external(javascript, "../../service_worker_ffi.mjs", "skipWaiting")
pub fn skip_waiting(self: GlobalScope) -> Promise(Nil)
/// self.serviceWorker not available in firefox https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/serviceWorker
@deprecated("self.serviceWorker not available in firefox.")
@external(javascript, "../../service_worker_ffi.mjs", "scriptURL")
pub fn script_url(self: GlobalScope) -> String
@external(javascript, "../../service_worker_ffi.mjs", "origin")
pub fn origin(self: GlobalScope) -> String
pub type FetchEvent
@external(javascript, "../../service_worker_ffi.mjs", "addFetchListener")
pub fn add_fetch_listener(
self: GlobalScope,
listener: fn(FetchEvent) -> Nil,
) -> Nil
pub type ActivateEvent
@external(javascript, "../../service_worker_ffi.mjs", "addActivateListener")
pub fn add_activate_listener(
self: GlobalScope,
listener: fn(ActivateEvent) -> Nil,
) -> Nil
@external(javascript, "../../service_worker_ffi.mjs", "doClaim")
pub fn do_claim(self: GlobalScope) -> Promise(Nil)
@external(javascript, "../../service_worker_ffi.mjs", "clientId")
pub fn client_id(event: FetchEvent) -> String
@external(javascript, "../../service_worker_ffi.mjs", "fetchEventClient")
pub fn fetch_event_client(event: FetchEvent) -> Client
pub type Request
pub type Response
@external(javascript, "../../service_worker_ffi.mjs", "request")
pub fn request(event: FetchEvent) -> Request
@external(javascript, "../../service_worker_ffi.mjs", "resultingClientId")
pub fn resulting_client_id(event: FetchEvent) -> String
@external(javascript, "../../service_worker_ffi.mjs", "respondWith")
pub fn respond_with(
event: FetchEvent,
response: Response,
) -> Result(Nil, String)
@external(javascript, "../../service_worker_ffi.mjs", "respondWith")
pub fn async_respond_with(
event: FetchEvent,
response: Promise(Response),
) -> Result(Nil, String)
// clients
@external(javascript, "../../service_worker_ffi.mjs", "frameType")
pub fn frame_type(client: Client) -> String
@external(javascript, "../../service_worker_ffi.mjs", "clientGet")
pub fn client_get(self: GlobalScope, id: String) -> Promise(Result(Client, Nil))
@external(javascript, "../../service_worker_ffi.mjs", "openWindow")
pub fn open_window(self: GlobalScope, url: String) -> Promise(Result(Int, Nil))
@external(javascript, "../../worker_ffi.mjs", "postMessage")
pub fn client_post_message(worker: Client, message: Json) -> Nil
@external(javascript, "../../worker_ffi.mjs", "postMessage")
pub fn service_worker_post_message(worker: ServiceWorker, message: Json) -> Nil
pub type Registration
@external(javascript, "../../service_worker_ffi.mjs", "register")
pub fn register(script_url: String) -> Promise(Result(Registration, String))
// returns a promise that never rejects
@external(javascript, "../../service_worker_ffi.mjs", "ready")
pub fn ready() -> Promise(Registration)
@external(javascript, "../../service_worker_ffi.mjs", "active")
pub fn active(registration: Registration) -> Result(ServiceWorker, Nil)
@external(javascript, "../../service_worker_ffi.mjs", "installing")
pub fn installing(registration: Registration) -> Result(ServiceWorker, Nil)
@external(javascript, "../../service_worker_ffi.mjs", "waiting")
pub fn waiting(registration: Registration) -> Result(ServiceWorker, Nil)