@nexim/service-worker 2.0.4 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/main.cjs +3 -90
- package/dist/main.cjs.map +1 -1
- package/dist/main.mjs +3 -65
- package/dist/main.mjs.map +1 -1
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.0.5](https://github.com/the-nexim/nanolib/compare/@nexim/service-worker@2.0.4...@nexim/service-worker@2.0.5) (2025-11-22)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @nexim/service-worker
|
|
9
|
+
|
|
6
10
|
## [2.0.4](https://github.com/the-nexim/nanolib/compare/@nexim/service-worker@2.0.3...@nexim/service-worker@2.0.4) (2025-08-30)
|
|
7
11
|
|
|
8
12
|
**Note:** Version bump only for package @nexim/service-worker
|
package/dist/main.cjs
CHANGED
|
@@ -1,91 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
"
|
|
3
|
-
var __defProp = Object.
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
|
|
21
|
-
// src/main.ts
|
|
22
|
-
var main_exports = {};
|
|
23
|
-
__export(main_exports, {
|
|
24
|
-
registerServiceWorker: () => registerServiceWorker,
|
|
25
|
-
serviceWorkerSignal: () => serviceWorkerSignal
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(main_exports);
|
|
28
|
-
var import_flux = require("@alwatr/flux");
|
|
29
|
-
var import_logger = require("@alwatr/logger");
|
|
30
|
-
var import_package_tracer = require("@alwatr/package-tracer");
|
|
31
|
-
var import_parse_duration = require("@alwatr/parse-duration");
|
|
32
|
-
__dev_mode__: import_package_tracer.packageTracer.add("@nexim/service-worker", "2.0.4");
|
|
33
|
-
var logger = /* @__PURE__ */ (0, import_logger.createLogger)("@nexim/service-worker");
|
|
34
|
-
var serviceWorkerSignal = /* @__PURE__ */ new import_flux.AlwatrSignal({
|
|
35
|
-
name: "serviceWorker"
|
|
36
|
-
});
|
|
37
|
-
async function registerServiceWorker(options) {
|
|
38
|
-
logger.logMethodArgs?.("registerServiceWorker", { options });
|
|
39
|
-
if (!("serviceWorker" in navigator)) {
|
|
40
|
-
logger.incident?.("registerServiceWorker", "service_worker_not_supported");
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
try {
|
|
44
|
-
const swRegistration = await navigator.serviceWorker.register(options.serviceWorkerPath);
|
|
45
|
-
serviceWorkerSignal.notify({ event: "service_worker_registered" });
|
|
46
|
-
swRegistration.addEventListener("updatefound", () => {
|
|
47
|
-
serviceWorkerUpdateFoundHandler(swRegistration.installing);
|
|
48
|
-
});
|
|
49
|
-
logger.logOther?.("Service worker registered.");
|
|
50
|
-
if (options.timeForAutoUpdate != null) {
|
|
51
|
-
setInterval(async () => {
|
|
52
|
-
logger.logOther?.("startPeriodicUpdateChecks");
|
|
53
|
-
await swRegistration.update();
|
|
54
|
-
}, (0, import_parse_duration.parseDuration)(options.timeForAutoUpdate));
|
|
55
|
-
}
|
|
56
|
-
} catch (error) {
|
|
57
|
-
logger.error("registerServiceWorker", "registration_failed", { error });
|
|
58
|
-
serviceWorkerSignal.notify({ event: "service_worker_register_failed" });
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
function serviceWorkerUpdateFoundHandler(serviceWorker) {
|
|
62
|
-
if (serviceWorker == null) return;
|
|
63
|
-
logger.logMethod?.("swUpdateFound");
|
|
64
|
-
if (navigator.serviceWorker.controller) {
|
|
65
|
-
serviceWorkerSignal.notify({ event: "service_worker_update_found" });
|
|
66
|
-
} else {
|
|
67
|
-
serviceWorkerSignal.notify({ event: "service_worker_first_install" });
|
|
68
|
-
}
|
|
69
|
-
serviceWorker.addEventListener("statechange", () => {
|
|
70
|
-
serviceWorkerStateChangeHandler(serviceWorker);
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
function serviceWorkerStateChangeHandler(serviceWorker) {
|
|
74
|
-
logger.logMethodArgs?.("serviceWorkerStateChangeHandler", { state: serviceWorker.state });
|
|
75
|
-
if (serviceWorker.state === "installed") {
|
|
76
|
-
if (navigator.serviceWorker.controller) {
|
|
77
|
-
serviceWorkerSignal.notify({ event: "service_worker_updated" });
|
|
78
|
-
} else {
|
|
79
|
-
serviceWorkerSignal.notify({ event: "service_worker_installed" });
|
|
80
|
-
}
|
|
81
|
-
} else if (serviceWorker.state === "redundant") {
|
|
82
|
-
logger.accident("serviceWorkerStateChangeHandler", "sw_redundant", "Service worker redundant");
|
|
83
|
-
serviceWorkerSignal.notify({ event: "service_worker_update_failed" });
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
87
|
-
0 && (module.exports = {
|
|
88
|
-
registerServiceWorker,
|
|
89
|
-
serviceWorkerSignal
|
|
90
|
-
});
|
|
1
|
+
/** 📦 @nexim/service-worker v2.0.5 */
|
|
2
|
+
__dev_mode__: console.debug("📦 @nexim/service-worker v2.0.5");
|
|
3
|
+
"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);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.5");var logger=(0,import_logger.createLogger)("@nexim/service-worker");var serviceWorkerSignal=new import_flux.AlwatrSignal({name:"serviceWorker"});async function registerServiceWorker(options){logger.logMethodArgs?.("registerServiceWorker",{options});if(!("serviceWorker"in navigator)){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"})}}0&&(module.exports={registerServiceWorker,serviceWorkerSignal});
|
|
91
4
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.cjs.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/main.ts"],
|
|
4
4
|
"sourcesContent": ["import { AlwatrSignal } from '@alwatr/flux';\nimport { createLogger } from '@alwatr/logger';\nimport { packageTracer } from '@alwatr/package-tracer';\nimport { type Duration, parseDuration } from '@alwatr/parse-duration';\n\n/**\n * The events that can be emitted by the service worker.\n */\nexport type ServiceWorkerEvent =\n | 'service_worker_registered' |\n 'service_worker_register_failed' |\n 'service_worker_first_install' |\n 'service_worker_updated' |\n 'service_worker_installed' |\n 'service_worker_update_found' |\n 'service_worker_update_failed';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\nconst logger = /* @__PURE__ */ createLogger(__package_name__);\n\n/**\n * Signal for service worker events.\n *\n * @example\n * ```ts\n * import {serviceWorkerSignal} from '@nexim/service-worker';\n *\n * serviceWorkerSignal.subscribe(({event}) => {\n * console.log('Service worker event:', event);\n * });\n * ```\n */\nexport const serviceWorkerSignal = /* @__PURE__ */ new AlwatrSignal<{ event: ServiceWorkerEvent }>({\n name: 'serviceWorker',\n});\n\n/**\n * Register the service worker and handle updates.\n *\n * @param options - An object containing the service worker path and optional auto-update time.\n * @param serviceWorkerPath - [Options] The path to the service worker.\n * @param timeForAutoUpdate - [Options] Optional duration for automatically updating the service worker.\n *\n * @example\n * ```ts\n * import {registerServiceWorker} from '@nexim/service-worker';\n *\n * const serviceWorkerPath = '/service-worker.js';\n *\n * // without auto update\n * registerServiceWorker({ serviceWorkerPath });\n *\n * // with auto update\n * registerServiceWorker({ serviceWorkerPath, timeForAutoUpdate: '10m' });\n * ```\n */\nexport async function registerServiceWorker(options: { serviceWorkerPath: string; timeForAutoUpdate?: Duration }): Promise<void> {\n logger.logMethodArgs?.('registerServiceWorker', { options });\n if (!('serviceWorker' in navigator)) {\n logger.incident?.('registerServiceWorker', 'service_worker_not_supported');\n return;\n }\n\n try {\n const swRegistration = await navigator.serviceWorker.register(options.serviceWorkerPath);\n serviceWorkerSignal.notify({ event: 'service_worker_registered' });\n swRegistration.addEventListener('updatefound', () => {\n serviceWorkerUpdateFoundHandler(swRegistration.installing);\n });\n logger.logOther?.('Service worker registered.');\n\n if (options.timeForAutoUpdate != null) {\n setInterval(async () => {\n logger.logOther?.('startPeriodicUpdateChecks');\n\n await swRegistration.update();\n }, parseDuration(options.timeForAutoUpdate));\n }\n }\n catch (error) {\n logger.error('registerServiceWorker', 'registration_failed', { error });\n serviceWorkerSignal.notify({ event: 'service_worker_register_failed' });\n }\n}\n\n/**\n * Handle the 'updatefound' event\n *\n * @param serviceWorker - The service worker\n */\nfunction serviceWorkerUpdateFoundHandler(serviceWorker: ServiceWorker | null): void {\n if (serviceWorker == null) return;\n logger.logMethod?.('swUpdateFound');\n\n // Only notify update found if there's an existing controller\n if (navigator.serviceWorker.controller) {\n serviceWorkerSignal.notify({ event: 'service_worker_update_found' });\n }\n else {\n serviceWorkerSignal.notify({ event: 'service_worker_first_install' });\n }\n\n serviceWorker.addEventListener('statechange', () => {\n serviceWorkerStateChangeHandler(serviceWorker);\n });\n}\n\n/**\n * Handle the 'statechange' event.\n *\n * If the service worker state is 'installed' then it is either a new install or an update.\n * If the service worker state is 'redundant' then the service worker is redundant.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/state\n *\n * @param serviceWorker - The service worker.\n */\nfunction serviceWorkerStateChangeHandler(serviceWorker: ServiceWorker): void {\n logger.logMethodArgs?.('serviceWorkerStateChangeHandler', { state: serviceWorker.state });\n\n if (serviceWorker.state === 'installed') {\n // if old controller available then its update else its new install\n if (navigator.serviceWorker.controller) {\n serviceWorkerSignal.notify({ event: 'service_worker_updated' });\n }\n else {\n serviceWorkerSignal.notify({ event: 'service_worker_installed' });\n }\n }\n else if (serviceWorker.state === 'redundant') {\n logger.accident('serviceWorkerStateChangeHandler', 'sw_redundant', 'Service worker redundant');\n serviceWorkerSignal.notify({ event: 'service_worker_update_failed' });\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;qqBAAA,mMAA6B,wBAC7B,kBAA6B,0BAC7B,0BAA8B,kCAC9B,0BAA6C,kCAc7C,aAAc,oCAAc,IAAI,wBAAkB,OAAmB,EAErE,IAAM,UAAyB,4BAAa,uBAAgB,EAcrD,IAAM,oBAAsC,IAAI,yBAA4C,CACjG,KAAM,eACR,CAAC,EAsBD,eAAsB,sBAAsB,QAAqF,CAC/H,OAAO,gBAAgB,wBAAyB,CAAE,OAAQ,CAAC,EAC3D,GAAI,EAAE,kBAAmB,WAAY,CACnC,OAAO,WAAW,wBAAyB,8BAA8B,EACzE,MACF,CAEA,GAAI,CACF,MAAM,eAAiB,MAAM,UAAU,cAAc,SAAS,QAAQ,iBAAiB,EACvF,oBAAoB,OAAO,CAAE,MAAO,2BAA4B,CAAC,EACjE,eAAe,iBAAiB,cAAe,IAAM,CACnD,gCAAgC,eAAe,UAAU,CAC3D,CAAC,EACD,OAAO,WAAW,4BAA4B,EAE9C,GAAI,QAAQ,mBAAqB,KAAM,CACrC,YAAY,SAAY,CACtB,OAAO,WAAW,2BAA2B,EAE7C,MAAM,eAAe,OAAO,CAC9B,KAAG,qCAAc,QAAQ,iBAAiB,CAAC,CAC7C,CACF,OACO,MAAO,CACZ,OAAO,MAAM,wBAAyB,sBAAuB,CAAE,KAAM,CAAC,EACtE,oBAAoB,OAAO,CAAE,MAAO,gCAAiC,CAAC,CACxE,CACF,CAOA,SAAS,gCAAgC,cAA2C,CAClF,GAAI,eAAiB,KAAM,OAC3B,OAAO,YAAY,eAAe,EAGlC,GAAI,UAAU,cAAc,WAAY,CACtC,oBAAoB,OAAO,CAAE,MAAO,6BAA8B,CAAC,CACrE,KACK,CACH,oBAAoB,OAAO,CAAE,MAAO,8BAA+B,CAAC,CACtE,CAEA,cAAc,iBAAiB,cAAe,IAAM,CAClD,gCAAgC,aAAa,CAC/C,CAAC,CACH,CAYA,SAAS,gCAAgC,cAAoC,CAC3E,OAAO,gBAAgB,kCAAmC,CAAE,MAAO,cAAc,KAAM,CAAC,EAExF,GAAI,cAAc,QAAU,YAAa,CAEvC,GAAI,UAAU,cAAc,WAAY,CACtC,oBAAoB,OAAO,CAAE,MAAO,wBAAyB,CAAC,CAChE,KACK,CACH,oBAAoB,OAAO,CAAE,MAAO,0BAA2B,CAAC,CAClE,CACF,SACS,cAAc,QAAU,YAAa,CAC5C,OAAO,SAAS,kCAAmC,eAAgB,0BAA0B,EAC7F,oBAAoB,OAAO,CAAE,MAAO,8BAA+B,CAAC,CACtE,CACF",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/main.mjs
CHANGED
|
@@ -1,66 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { AlwatrSignal } from "@alwatr/flux";
|
|
5
|
-
import { createLogger } from "@alwatr/logger";
|
|
6
|
-
import { packageTracer } from "@alwatr/package-tracer";
|
|
7
|
-
import { parseDuration } from "@alwatr/parse-duration";
|
|
8
|
-
__dev_mode__: packageTracer.add("@nexim/service-worker", "2.0.4");
|
|
9
|
-
var logger = /* @__PURE__ */ createLogger("@nexim/service-worker");
|
|
10
|
-
var serviceWorkerSignal = /* @__PURE__ */ new AlwatrSignal({
|
|
11
|
-
name: "serviceWorker"
|
|
12
|
-
});
|
|
13
|
-
async function registerServiceWorker(options) {
|
|
14
|
-
logger.logMethodArgs?.("registerServiceWorker", { options });
|
|
15
|
-
if (!("serviceWorker" in navigator)) {
|
|
16
|
-
logger.incident?.("registerServiceWorker", "service_worker_not_supported");
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
const swRegistration = await navigator.serviceWorker.register(options.serviceWorkerPath);
|
|
21
|
-
serviceWorkerSignal.notify({ event: "service_worker_registered" });
|
|
22
|
-
swRegistration.addEventListener("updatefound", () => {
|
|
23
|
-
serviceWorkerUpdateFoundHandler(swRegistration.installing);
|
|
24
|
-
});
|
|
25
|
-
logger.logOther?.("Service worker registered.");
|
|
26
|
-
if (options.timeForAutoUpdate != null) {
|
|
27
|
-
setInterval(async () => {
|
|
28
|
-
logger.logOther?.("startPeriodicUpdateChecks");
|
|
29
|
-
await swRegistration.update();
|
|
30
|
-
}, parseDuration(options.timeForAutoUpdate));
|
|
31
|
-
}
|
|
32
|
-
} catch (error) {
|
|
33
|
-
logger.error("registerServiceWorker", "registration_failed", { error });
|
|
34
|
-
serviceWorkerSignal.notify({ event: "service_worker_register_failed" });
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function serviceWorkerUpdateFoundHandler(serviceWorker) {
|
|
38
|
-
if (serviceWorker == null) return;
|
|
39
|
-
logger.logMethod?.("swUpdateFound");
|
|
40
|
-
if (navigator.serviceWorker.controller) {
|
|
41
|
-
serviceWorkerSignal.notify({ event: "service_worker_update_found" });
|
|
42
|
-
} else {
|
|
43
|
-
serviceWorkerSignal.notify({ event: "service_worker_first_install" });
|
|
44
|
-
}
|
|
45
|
-
serviceWorker.addEventListener("statechange", () => {
|
|
46
|
-
serviceWorkerStateChangeHandler(serviceWorker);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
function serviceWorkerStateChangeHandler(serviceWorker) {
|
|
50
|
-
logger.logMethodArgs?.("serviceWorkerStateChangeHandler", { state: serviceWorker.state });
|
|
51
|
-
if (serviceWorker.state === "installed") {
|
|
52
|
-
if (navigator.serviceWorker.controller) {
|
|
53
|
-
serviceWorkerSignal.notify({ event: "service_worker_updated" });
|
|
54
|
-
} else {
|
|
55
|
-
serviceWorkerSignal.notify({ event: "service_worker_installed" });
|
|
56
|
-
}
|
|
57
|
-
} else if (serviceWorker.state === "redundant") {
|
|
58
|
-
logger.accident("serviceWorkerStateChangeHandler", "sw_redundant", "Service worker redundant");
|
|
59
|
-
serviceWorkerSignal.notify({ event: "service_worker_update_failed" });
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
export {
|
|
63
|
-
registerServiceWorker,
|
|
64
|
-
serviceWorkerSignal
|
|
65
|
-
};
|
|
1
|
+
/** 📦 @nexim/service-worker v2.0.5 */
|
|
2
|
+
__dev_mode__: console.debug("📦 @nexim/service-worker v2.0.5");
|
|
3
|
+
import{AlwatrSignal}from"@alwatr/flux";import{createLogger}from"@alwatr/logger";import{packageTracer}from"@alwatr/package-tracer";import{parseDuration}from"@alwatr/parse-duration";__dev_mode__:packageTracer.add("@nexim/service-worker","2.0.5");var logger=createLogger("@nexim/service-worker");var serviceWorkerSignal=new AlwatrSignal({name:"serviceWorker"});async function registerServiceWorker(options){logger.logMethodArgs?.("registerServiceWorker",{options});if(!("serviceWorker"in navigator)){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()},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"})}}export{registerServiceWorker,serviceWorkerSignal};
|
|
66
4
|
//# sourceMappingURL=main.mjs.map
|
package/dist/main.mjs.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/main.ts"],
|
|
4
4
|
"sourcesContent": ["import { AlwatrSignal } from '@alwatr/flux';\nimport { createLogger } from '@alwatr/logger';\nimport { packageTracer } from '@alwatr/package-tracer';\nimport { type Duration, parseDuration } from '@alwatr/parse-duration';\n\n/**\n * The events that can be emitted by the service worker.\n */\nexport type ServiceWorkerEvent =\n | 'service_worker_registered' |\n 'service_worker_register_failed' |\n 'service_worker_first_install' |\n 'service_worker_updated' |\n 'service_worker_installed' |\n 'service_worker_update_found' |\n 'service_worker_update_failed';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\nconst logger = /* @__PURE__ */ createLogger(__package_name__);\n\n/**\n * Signal for service worker events.\n *\n * @example\n * ```ts\n * import {serviceWorkerSignal} from '@nexim/service-worker';\n *\n * serviceWorkerSignal.subscribe(({event}) => {\n * console.log('Service worker event:', event);\n * });\n * ```\n */\nexport const serviceWorkerSignal = /* @__PURE__ */ new AlwatrSignal<{ event: ServiceWorkerEvent }>({\n name: 'serviceWorker',\n});\n\n/**\n * Register the service worker and handle updates.\n *\n * @param options - An object containing the service worker path and optional auto-update time.\n * @param serviceWorkerPath - [Options] The path to the service worker.\n * @param timeForAutoUpdate - [Options] Optional duration for automatically updating the service worker.\n *\n * @example\n * ```ts\n * import {registerServiceWorker} from '@nexim/service-worker';\n *\n * const serviceWorkerPath = '/service-worker.js';\n *\n * // without auto update\n * registerServiceWorker({ serviceWorkerPath });\n *\n * // with auto update\n * registerServiceWorker({ serviceWorkerPath, timeForAutoUpdate: '10m' });\n * ```\n */\nexport async function registerServiceWorker(options: { serviceWorkerPath: string; timeForAutoUpdate?: Duration }): Promise<void> {\n logger.logMethodArgs?.('registerServiceWorker', { options });\n if (!('serviceWorker' in navigator)) {\n logger.incident?.('registerServiceWorker', 'service_worker_not_supported');\n return;\n }\n\n try {\n const swRegistration = await navigator.serviceWorker.register(options.serviceWorkerPath);\n serviceWorkerSignal.notify({ event: 'service_worker_registered' });\n swRegistration.addEventListener('updatefound', () => {\n serviceWorkerUpdateFoundHandler(swRegistration.installing);\n });\n logger.logOther?.('Service worker registered.');\n\n if (options.timeForAutoUpdate != null) {\n setInterval(async () => {\n logger.logOther?.('startPeriodicUpdateChecks');\n\n await swRegistration.update();\n }, parseDuration(options.timeForAutoUpdate));\n }\n }\n catch (error) {\n logger.error('registerServiceWorker', 'registration_failed', { error });\n serviceWorkerSignal.notify({ event: 'service_worker_register_failed' });\n }\n}\n\n/**\n * Handle the 'updatefound' event\n *\n * @param serviceWorker - The service worker\n */\nfunction serviceWorkerUpdateFoundHandler(serviceWorker: ServiceWorker | null): void {\n if (serviceWorker == null) return;\n logger.logMethod?.('swUpdateFound');\n\n // Only notify update found if there's an existing controller\n if (navigator.serviceWorker.controller) {\n serviceWorkerSignal.notify({ event: 'service_worker_update_found' });\n }\n else {\n serviceWorkerSignal.notify({ event: 'service_worker_first_install' });\n }\n\n serviceWorker.addEventListener('statechange', () => {\n serviceWorkerStateChangeHandler(serviceWorker);\n });\n}\n\n/**\n * Handle the 'statechange' event.\n *\n * If the service worker state is 'installed' then it is either a new install or an update.\n * If the service worker state is 'redundant' then the service worker is redundant.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/state\n *\n * @param serviceWorker - The service worker.\n */\nfunction serviceWorkerStateChangeHandler(serviceWorker: ServiceWorker): void {\n logger.logMethodArgs?.('serviceWorkerStateChangeHandler', { state: serviceWorker.state });\n\n if (serviceWorker.state === 'installed') {\n // if old controller available then its update else its new install\n if (navigator.serviceWorker.controller) {\n serviceWorkerSignal.notify({ event: 'service_worker_updated' });\n }\n else {\n serviceWorkerSignal.notify({ event: 'service_worker_installed' });\n }\n }\n else if (serviceWorker.state === 'redundant') {\n logger.accident('serviceWorkerStateChangeHandler', 'sw_redundant', 'Service worker redundant');\n serviceWorkerSignal.notify({ event: 'service_worker_update_failed' });\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;AAAA,OAAS,iBAAoB,eAC7B,OAAS,iBAAoB,iBAC7B,OAAS,kBAAqB,yBAC9B,OAAwB,kBAAqB,yBAc7C,aAAc,cAAc,IAAI,wBAAkB,OAAmB,EAErE,IAAM,OAAyB,aAAa,uBAAgB,EAcrD,IAAM,oBAAsC,IAAI,aAA4C,CACjG,KAAM,eACR,CAAC,EAsBD,eAAsB,sBAAsB,QAAqF,CAC/H,OAAO,gBAAgB,wBAAyB,CAAE,OAAQ,CAAC,EAC3D,GAAI,EAAE,kBAAmB,WAAY,CACnC,OAAO,WAAW,wBAAyB,8BAA8B,EACzE,MACF,CAEA,GAAI,CACF,MAAM,eAAiB,MAAM,UAAU,cAAc,SAAS,QAAQ,iBAAiB,EACvF,oBAAoB,OAAO,CAAE,MAAO,2BAA4B,CAAC,EACjE,eAAe,iBAAiB,cAAe,IAAM,CACnD,gCAAgC,eAAe,UAAU,CAC3D,CAAC,EACD,OAAO,WAAW,4BAA4B,EAE9C,GAAI,QAAQ,mBAAqB,KAAM,CACrC,YAAY,SAAY,CACtB,OAAO,WAAW,2BAA2B,EAE7C,MAAM,eAAe,OAAO,CAC9B,EAAG,cAAc,QAAQ,iBAAiB,CAAC,CAC7C,CACF,OACO,MAAO,CACZ,OAAO,MAAM,wBAAyB,sBAAuB,CAAE,KAAM,CAAC,EACtE,oBAAoB,OAAO,CAAE,MAAO,gCAAiC,CAAC,CACxE,CACF,CAOA,SAAS,gCAAgC,cAA2C,CAClF,GAAI,eAAiB,KAAM,OAC3B,OAAO,YAAY,eAAe,EAGlC,GAAI,UAAU,cAAc,WAAY,CACtC,oBAAoB,OAAO,CAAE,MAAO,6BAA8B,CAAC,CACrE,KACK,CACH,oBAAoB,OAAO,CAAE,MAAO,8BAA+B,CAAC,CACtE,CAEA,cAAc,iBAAiB,cAAe,IAAM,CAClD,gCAAgC,aAAa,CAC/C,CAAC,CACH,CAYA,SAAS,gCAAgC,cAAoC,CAC3E,OAAO,gBAAgB,kCAAmC,CAAE,MAAO,cAAc,KAAM,CAAC,EAExF,GAAI,cAAc,QAAU,YAAa,CAEvC,GAAI,UAAU,cAAc,WAAY,CACtC,oBAAoB,OAAO,CAAE,MAAO,wBAAyB,CAAC,CAChE,KACK,CACH,oBAAoB,OAAO,CAAE,MAAO,0BAA2B,CAAC,CAClE,CACF,SACS,cAAc,QAAU,YAAa,CAC5C,OAAO,SAAS,kCAAmC,eAAgB,0BAA0B,EAC7F,oBAAoB,OAAO,CAAE,MAAO,8BAA+B,CAAC,CACtE,CACF",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexim/service-worker",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"description": "Utilities to simplify the usage of service workers in your web applications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"worker",
|
|
@@ -45,20 +45,20 @@
|
|
|
45
45
|
"watch": "wireit"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@alwatr/flux": "^4.
|
|
49
|
-
"@alwatr/logger": "^5.
|
|
50
|
-
"@alwatr/package-tracer": "^5.5.
|
|
51
|
-
"@alwatr/parse-duration": "^5.5.
|
|
48
|
+
"@alwatr/flux": "^4.1.2",
|
|
49
|
+
"@alwatr/logger": "^5.6.2",
|
|
50
|
+
"@alwatr/package-tracer": "^5.5.23",
|
|
51
|
+
"@alwatr/parse-duration": "^5.5.25"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@alwatr/nano-build": "^6.
|
|
54
|
+
"@alwatr/nano-build": "^6.3.9",
|
|
55
55
|
"@alwatr/type-helper": "^5.4.4",
|
|
56
56
|
"@nexim/typescript-config": "^2.0.1",
|
|
57
57
|
"ava": "^6.4.1",
|
|
58
|
-
"typedoc": "^0.28.
|
|
59
|
-
"typedoc-plugin-markdown": "^4.
|
|
58
|
+
"typedoc": "^0.28.14",
|
|
59
|
+
"typedoc-plugin-markdown": "^4.9.0",
|
|
60
60
|
"typedoc-plugin-no-inherit": "^1.6.1",
|
|
61
|
-
"typescript": "^5.9.
|
|
61
|
+
"typescript": "^5.9.3",
|
|
62
62
|
"wireit": "^0.14.12"
|
|
63
63
|
},
|
|
64
64
|
"publishConfig": {
|
|
@@ -107,5 +107,5 @@
|
|
|
107
107
|
"command": "typedoc"
|
|
108
108
|
}
|
|
109
109
|
},
|
|
110
|
-
"gitHead": "
|
|
110
|
+
"gitHead": "aa1bbda5f949163da8a2e11e658afe02aad75458"
|
|
111
111
|
}
|