/* @nexim/service-worker v2.0.0-alpha.0 */ "use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/main.ts var main_exports = {}; __export(main_exports, { registerServiceWorker: () => registerServiceWorker, serviceWorkerSignal: () => serviceWorkerSignal }); module.exports = __toCommonJS(main_exports); var import_flux = require("@alwatr/flux"); var import_logger = require("@alwatr/logger"); var import_package_tracer = require("@alwatr/package-tracer"); var import_parse_duration = require("@alwatr/parse-duration"); __dev_mode__: import_package_tracer.packageTracer.add("@nexim/service-worker", "2.0.0-alpha.0"); var logger = /* @__PURE__ */ (0, import_logger.createLogger)("@nexim/service-worker"); var serviceWorkerSignal = /* @__PURE__ */ new import_flux.AlwatrSignal({ name: "serviceWorker" }); async function registerServiceWorker(options) { logger.logMethodArgs?.("registerServiceWorker", { options }); if ("serviceWorker" in navigator === false) { logger.incident?.("registerServiceWorker", "service_worker_not_supported"); return; } try { const swRegistration = await navigator.serviceWorker.register(options.serviceWorkerPath); serviceWorkerSignal.notify({ event: "service_worker_registered" }); swRegistration.addEventListener("updatefound", () => serviceWorkerUpdateFoundHandler(swRegistration.installing)); logger.logOther?.("Service worker registered."); if (options.timeForAutoUpdate != null) { setInterval(async () => { logger.logOther?.("startPeriodicUpdateChecks"); await swRegistration.update(); }, (0, import_parse_duration.parseDuration)(options.timeForAutoUpdate)); } } catch (error) { logger.error("registerServiceWorker", "registration_failed", { error }); serviceWorkerSignal.notify({ event: "service_worker_register_failed" }); } } function serviceWorkerUpdateFoundHandler(serviceWorker) { if (serviceWorker == null) return; logger.logMethod?.("swUpdateFound"); if (navigator.serviceWorker.controller) { serviceWorkerSignal.notify({ event: "service_worker_update_found" }); } else { serviceWorkerSignal.notify({ event: "service_worker_first_install" }); } serviceWorker.addEventListener("statechange", () => serviceWorkerStateChangeHandler(serviceWorker)); } function serviceWorkerStateChangeHandler(serviceWorker) { logger.logMethodArgs?.("serviceWorkerStateChangeHandler", { state: serviceWorker.state }); if (serviceWorker.state === "installed") { if (navigator.serviceWorker.controller) { serviceWorkerSignal.notify({ event: "service_worker_updated" }); } else { serviceWorkerSignal.notify({ event: "service_worker_installed" }); } } else if (serviceWorker.state === "redundant") { logger.accident("serviceWorkerStateChangeHandler", "sw_redundant", "Service worker redundant"); serviceWorkerSignal.notify({ event: "service_worker_update_failed" }); } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { registerServiceWorker, serviceWorkerSignal }); /*! For license information please see main.cjs.LEGAL.txt */ //# sourceMappingURL=main.cjs.map