@nexim/service-worker 2.0.0-alpha.0 → 2.0.0

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 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.0](https://github.com/the-nexim/nanolib/compare/@nexim/service-worker@2.0.0-alpha.0...@nexim/service-worker@2.0.0) (2025-04-21)
7
+
8
+ **Note:** Version bump only for package @nexim/service-worker
9
+
6
10
  ## [2.0.0-alpha.0](https://github.com/the-nexim/nanolib/compare/@nexim/service-worker@1.0.4...@nexim/service-worker@2.0.0-alpha.0) (2025-01-19)
7
11
 
8
12
  ### Features
package/dist/main.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /* @nexim/service-worker v2.0.0-alpha.0 */
1
+ /* @nexim/service-worker v2.0.0 */
2
2
  "use strict";
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -25,25 +25,27 @@ __export(main_exports, {
25
25
  serviceWorkerSignal: () => serviceWorkerSignal
26
26
  });
27
27
  module.exports = __toCommonJS(main_exports);
28
+ var import_parse_duration = require("@alwatr/parse-duration");
28
29
  var import_flux = require("@alwatr/flux");
29
30
  var import_logger = require("@alwatr/logger");
30
31
  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.0-alpha.0");
32
+ __dev_mode__: import_package_tracer.packageTracer.add("@nexim/service-worker", "2.0.0");
33
33
  var logger = /* @__PURE__ */ (0, import_logger.createLogger)("@nexim/service-worker");
34
34
  var serviceWorkerSignal = /* @__PURE__ */ new import_flux.AlwatrSignal({
35
35
  name: "serviceWorker"
36
36
  });
37
37
  async function registerServiceWorker(options) {
38
38
  logger.logMethodArgs?.("registerServiceWorker", { options });
39
- if ("serviceWorker" in navigator === false) {
39
+ if (!("serviceWorker" in navigator)) {
40
40
  logger.incident?.("registerServiceWorker", "service_worker_not_supported");
41
41
  return;
42
42
  }
43
43
  try {
44
44
  const swRegistration = await navigator.serviceWorker.register(options.serviceWorkerPath);
45
45
  serviceWorkerSignal.notify({ event: "service_worker_registered" });
46
- swRegistration.addEventListener("updatefound", () => serviceWorkerUpdateFoundHandler(swRegistration.installing));
46
+ swRegistration.addEventListener("updatefound", () => {
47
+ serviceWorkerUpdateFoundHandler(swRegistration.installing);
48
+ });
47
49
  logger.logOther?.("Service worker registered.");
48
50
  if (options.timeForAutoUpdate != null) {
49
51
  setInterval(async () => {
@@ -64,7 +66,9 @@ function serviceWorkerUpdateFoundHandler(serviceWorker) {
64
66
  } else {
65
67
  serviceWorkerSignal.notify({ event: "service_worker_first_install" });
66
68
  }
67
- serviceWorker.addEventListener("statechange", () => serviceWorkerStateChangeHandler(serviceWorker));
69
+ serviceWorker.addEventListener("statechange", () => {
70
+ serviceWorkerStateChangeHandler(serviceWorker);
71
+ });
68
72
  }
69
73
  function serviceWorkerStateChangeHandler(serviceWorker) {
70
74
  logger.logMethodArgs?.("serviceWorkerStateChangeHandler", { state: serviceWorker.state });
@@ -84,5 +88,4 @@ function serviceWorkerStateChangeHandler(serviceWorker) {
84
88
  registerServiceWorker,
85
89
  serviceWorkerSignal
86
90
  });
87
- /*! For license information please see main.cjs.LEGAL.txt */
88
91
  //# sourceMappingURL=main.cjs.map
package/dist/main.cjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts"],
4
- "sourcesContent": ["import {AlwatrSignal} from '@alwatr/flux';\nimport {createLogger} from '@alwatr/logger';\nimport {packageTracer} from '@alwatr/package-tracer';\nimport {parseDuration, type Duration} 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 === false) {\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', () => serviceWorkerUpdateFoundHandler(swRegistration.installing));\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', () => serviceWorkerStateChangeHandler(serviceWorker));\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": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA2B;AAC3B,oBAA2B;AAC3B,4BAA4B;AAC5B,4BAA2C;AAc3C,aAAc,qCAAc,IAAI,yBAAkB,eAAmB;AAErE,IAAM,SAAyB,gDAAa,uBAAgB;AAcrD,IAAM,sBAAsC,oBAAI,yBAA0C;AAAA,EAC/F,MAAM;AACR,CAAC;AAsBD,eAAsB,sBAAsB,SAAmF;AAC7H,SAAO,gBAAgB,yBAAyB,EAAC,QAAO,CAAC;AACzD,MAAI,mBAAmB,cAAc,OAAO;AAC1C,WAAO,WAAW,yBAAyB,8BAA8B;AACzE;AAAA,EACF;AAEA,MAAI;AACF,UAAM,iBAAiB,MAAM,UAAU,cAAc,SAAS,QAAQ,iBAAiB;AACvF,wBAAoB,OAAO,EAAC,OAAO,4BAA2B,CAAC;AAC/D,mBAAe,iBAAiB,eAAe,MAAM,gCAAgC,eAAe,UAAU,CAAC;AAC/G,WAAO,WAAW,4BAA4B;AAE9C,QAAI,QAAQ,qBAAqB,MAAM;AACrC,kBAAY,YAAY;AACtB,eAAO,WAAW,2BAA2B;AAE7C,cAAM,eAAe,OAAO;AAAA,MAC9B,OAAG,qCAAc,QAAQ,iBAAiB,CAAC;AAAA,IAC7C;AAAA,EACF,SACO,OAAO;AACZ,WAAO,MAAM,yBAAyB,uBAAuB,EAAC,MAAK,CAAC;AACpE,wBAAoB,OAAO,EAAC,OAAO,iCAAgC,CAAC;AAAA,EACtE;AACF;AAOA,SAAS,gCAAgC,eAA2C;AAClF,MAAI,iBAAiB,KAAM;AAC3B,SAAO,YAAY,eAAe;AAGlC,MAAI,UAAU,cAAc,YAAY;AACtC,wBAAoB,OAAO,EAAC,OAAO,8BAA6B,CAAC;AAAA,EACnE,OACK;AACH,wBAAoB,OAAO,EAAC,OAAO,+BAA8B,CAAC;AAAA,EACpE;AAEA,gBAAc,iBAAiB,eAAe,MAAM,gCAAgC,aAAa,CAAC;AACpG;AAYA,SAAS,gCAAgC,eAAoC;AAC3E,SAAO,gBAAgB,mCAAmC,EAAC,OAAO,cAAc,MAAK,CAAC;AAEtF,MAAI,cAAc,UAAU,aAAa;AAEvC,QAAI,UAAU,cAAc,YAAY;AACtC,0BAAoB,OAAO,EAAC,OAAO,yBAAwB,CAAC;AAAA,IAC9D,OACK;AACH,0BAAoB,OAAO,EAAC,OAAO,2BAA0B,CAAC;AAAA,IAChE;AAAA,EACF,WACS,cAAc,UAAU,aAAa;AAC5C,WAAO,SAAS,mCAAmC,gBAAgB,0BAA0B;AAC7F,wBAAoB,OAAO,EAAC,OAAO,+BAA8B,CAAC;AAAA,EACpE;AACF;",
4
+ "sourcesContent": ["import { type Duration, parseDuration } from '@alwatr/parse-duration';\nimport { AlwatrSignal } from '@alwatr/flux';\nimport { createLogger } from '@alwatr/logger';\nimport { packageTracer } from '@alwatr/package-tracer';\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": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAA6C;AAC7C,kBAA6B;AAC7B,oBAA6B;AAC7B,4BAA8B;AAc9B,aAAc,qCAAc,IAAI,yBAAkB,OAAmB;AAErE,IAAM,SAAyB,gDAAa,uBAAgB;AAcrD,IAAM,sBAAsC,oBAAI,yBAA4C;AAAA,EACjG,MAAM;AACR,CAAC;AAsBD,eAAsB,sBAAsB,SAAqF;AAC/H,SAAO,gBAAgB,yBAAyB,EAAE,QAAQ,CAAC;AAC3D,MAAI,EAAE,mBAAmB,YAAY;AACnC,WAAO,WAAW,yBAAyB,8BAA8B;AACzE;AAAA,EACF;AAEA,MAAI;AACF,UAAM,iBAAiB,MAAM,UAAU,cAAc,SAAS,QAAQ,iBAAiB;AACvF,wBAAoB,OAAO,EAAE,OAAO,4BAA4B,CAAC;AACjE,mBAAe,iBAAiB,eAAe,MAAM;AACnD,sCAAgC,eAAe,UAAU;AAAA,IAC3D,CAAC;AACD,WAAO,WAAW,4BAA4B;AAE9C,QAAI,QAAQ,qBAAqB,MAAM;AACrC,kBAAY,YAAY;AACtB,eAAO,WAAW,2BAA2B;AAE7C,cAAM,eAAe,OAAO;AAAA,MAC9B,OAAG,qCAAc,QAAQ,iBAAiB,CAAC;AAAA,IAC7C;AAAA,EACF,SACO,OAAO;AACZ,WAAO,MAAM,yBAAyB,uBAAuB,EAAE,MAAM,CAAC;AACtE,wBAAoB,OAAO,EAAE,OAAO,iCAAiC,CAAC;AAAA,EACxE;AACF;AAOA,SAAS,gCAAgC,eAA2C;AAClF,MAAI,iBAAiB,KAAM;AAC3B,SAAO,YAAY,eAAe;AAGlC,MAAI,UAAU,cAAc,YAAY;AACtC,wBAAoB,OAAO,EAAE,OAAO,8BAA8B,CAAC;AAAA,EACrE,OACK;AACH,wBAAoB,OAAO,EAAE,OAAO,+BAA+B,CAAC;AAAA,EACtE;AAEA,gBAAc,iBAAiB,eAAe,MAAM;AAClD,oCAAgC,aAAa;AAAA,EAC/C,CAAC;AACH;AAYA,SAAS,gCAAgC,eAAoC;AAC3E,SAAO,gBAAgB,mCAAmC,EAAE,OAAO,cAAc,MAAM,CAAC;AAExF,MAAI,cAAc,UAAU,aAAa;AAEvC,QAAI,UAAU,cAAc,YAAY;AACtC,0BAAoB,OAAO,EAAE,OAAO,yBAAyB,CAAC;AAAA,IAChE,OACK;AACH,0BAAoB,OAAO,EAAE,OAAO,2BAA2B,CAAC;AAAA,IAClE;AAAA,EACF,WACS,cAAc,UAAU,aAAa;AAC5C,WAAO,SAAS,mCAAmC,gBAAgB,0BAA0B;AAC7F,wBAAoB,OAAO,EAAE,OAAO,+BAA+B,CAAC;AAAA,EACtE;AACF;",
6
6
  "names": []
7
7
  }
package/dist/main.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { AlwatrSignal } from '@alwatr/flux';
2
1
  import { type Duration } from '@alwatr/parse-duration';
2
+ import { AlwatrSignal } from '@alwatr/flux';
3
3
  /**
4
4
  * The events that can be emitted by the service worker.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAgB,KAAK,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,2BAA2B,GAC3B,gCAAgC,GAChC,8BAA8B,GAC9B,wBAAwB,GACxB,0BAA0B,GAC1B,6BAA6B,GAC7B,8BAA8B,CAAC;AAMnC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB;WAA4C,kBAAkB;EAE5F,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAA;CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB7H"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,2BAA2B,GAC3B,gCAAgC,GAChC,8BAA8B,GAC9B,wBAAwB,GACxB,0BAA0B,GAC1B,6BAA6B,GAC7B,8BAA8B,CAAC;AAMnC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB;WAA6C,kBAAkB;EAE7F,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B/H"}
package/dist/main.mjs CHANGED
@@ -1,25 +1,27 @@
1
- /* @nexim/service-worker v2.0.0-alpha.0 */
1
+ /* @nexim/service-worker v2.0.0 */
2
2
 
3
3
  // src/main.ts
4
+ import { parseDuration } from "@alwatr/parse-duration";
4
5
  import { AlwatrSignal } from "@alwatr/flux";
5
6
  import { createLogger } from "@alwatr/logger";
6
7
  import { packageTracer } from "@alwatr/package-tracer";
7
- import { parseDuration } from "@alwatr/parse-duration";
8
- __dev_mode__: packageTracer.add("@nexim/service-worker", "2.0.0-alpha.0");
8
+ __dev_mode__: packageTracer.add("@nexim/service-worker", "2.0.0");
9
9
  var logger = /* @__PURE__ */ createLogger("@nexim/service-worker");
10
10
  var serviceWorkerSignal = /* @__PURE__ */ new AlwatrSignal({
11
11
  name: "serviceWorker"
12
12
  });
13
13
  async function registerServiceWorker(options) {
14
14
  logger.logMethodArgs?.("registerServiceWorker", { options });
15
- if ("serviceWorker" in navigator === false) {
15
+ if (!("serviceWorker" in navigator)) {
16
16
  logger.incident?.("registerServiceWorker", "service_worker_not_supported");
17
17
  return;
18
18
  }
19
19
  try {
20
20
  const swRegistration = await navigator.serviceWorker.register(options.serviceWorkerPath);
21
21
  serviceWorkerSignal.notify({ event: "service_worker_registered" });
22
- swRegistration.addEventListener("updatefound", () => serviceWorkerUpdateFoundHandler(swRegistration.installing));
22
+ swRegistration.addEventListener("updatefound", () => {
23
+ serviceWorkerUpdateFoundHandler(swRegistration.installing);
24
+ });
23
25
  logger.logOther?.("Service worker registered.");
24
26
  if (options.timeForAutoUpdate != null) {
25
27
  setInterval(async () => {
@@ -40,7 +42,9 @@ function serviceWorkerUpdateFoundHandler(serviceWorker) {
40
42
  } else {
41
43
  serviceWorkerSignal.notify({ event: "service_worker_first_install" });
42
44
  }
43
- serviceWorker.addEventListener("statechange", () => serviceWorkerStateChangeHandler(serviceWorker));
45
+ serviceWorker.addEventListener("statechange", () => {
46
+ serviceWorkerStateChangeHandler(serviceWorker);
47
+ });
44
48
  }
45
49
  function serviceWorkerStateChangeHandler(serviceWorker) {
46
50
  logger.logMethodArgs?.("serviceWorkerStateChangeHandler", { state: serviceWorker.state });
@@ -59,5 +63,4 @@ export {
59
63
  registerServiceWorker,
60
64
  serviceWorkerSignal
61
65
  };
62
- /*! For license information please see main.mjs.LEGAL.txt */
63
66
  //# sourceMappingURL=main.mjs.map
package/dist/main.mjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts"],
4
- "sourcesContent": ["import {AlwatrSignal} from '@alwatr/flux';\nimport {createLogger} from '@alwatr/logger';\nimport {packageTracer} from '@alwatr/package-tracer';\nimport {parseDuration, type Duration} 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 === false) {\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', () => serviceWorkerUpdateFoundHandler(swRegistration.installing));\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', () => serviceWorkerStateChangeHandler(serviceWorker));\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": ";;;AAAA,SAAQ,oBAAmB;AAC3B,SAAQ,oBAAmB;AAC3B,SAAQ,qBAAoB;AAC5B,SAAQ,qBAAmC;AAc3C,aAAc,eAAc,IAAI,yBAAkB,eAAmB;AAErE,IAAM,SAAyB,6BAAa,uBAAgB;AAcrD,IAAM,sBAAsC,oBAAI,aAA0C;AAAA,EAC/F,MAAM;AACR,CAAC;AAsBD,eAAsB,sBAAsB,SAAmF;AAC7H,SAAO,gBAAgB,yBAAyB,EAAC,QAAO,CAAC;AACzD,MAAI,mBAAmB,cAAc,OAAO;AAC1C,WAAO,WAAW,yBAAyB,8BAA8B;AACzE;AAAA,EACF;AAEA,MAAI;AACF,UAAM,iBAAiB,MAAM,UAAU,cAAc,SAAS,QAAQ,iBAAiB;AACvF,wBAAoB,OAAO,EAAC,OAAO,4BAA2B,CAAC;AAC/D,mBAAe,iBAAiB,eAAe,MAAM,gCAAgC,eAAe,UAAU,CAAC;AAC/G,WAAO,WAAW,4BAA4B;AAE9C,QAAI,QAAQ,qBAAqB,MAAM;AACrC,kBAAY,YAAY;AACtB,eAAO,WAAW,2BAA2B;AAE7C,cAAM,eAAe,OAAO;AAAA,MAC9B,GAAG,cAAc,QAAQ,iBAAiB,CAAC;AAAA,IAC7C;AAAA,EACF,SACO,OAAO;AACZ,WAAO,MAAM,yBAAyB,uBAAuB,EAAC,MAAK,CAAC;AACpE,wBAAoB,OAAO,EAAC,OAAO,iCAAgC,CAAC;AAAA,EACtE;AACF;AAOA,SAAS,gCAAgC,eAA2C;AAClF,MAAI,iBAAiB,KAAM;AAC3B,SAAO,YAAY,eAAe;AAGlC,MAAI,UAAU,cAAc,YAAY;AACtC,wBAAoB,OAAO,EAAC,OAAO,8BAA6B,CAAC;AAAA,EACnE,OACK;AACH,wBAAoB,OAAO,EAAC,OAAO,+BAA8B,CAAC;AAAA,EACpE;AAEA,gBAAc,iBAAiB,eAAe,MAAM,gCAAgC,aAAa,CAAC;AACpG;AAYA,SAAS,gCAAgC,eAAoC;AAC3E,SAAO,gBAAgB,mCAAmC,EAAC,OAAO,cAAc,MAAK,CAAC;AAEtF,MAAI,cAAc,UAAU,aAAa;AAEvC,QAAI,UAAU,cAAc,YAAY;AACtC,0BAAoB,OAAO,EAAC,OAAO,yBAAwB,CAAC;AAAA,IAC9D,OACK;AACH,0BAAoB,OAAO,EAAC,OAAO,2BAA0B,CAAC;AAAA,IAChE;AAAA,EACF,WACS,cAAc,UAAU,aAAa;AAC5C,WAAO,SAAS,mCAAmC,gBAAgB,0BAA0B;AAC7F,wBAAoB,OAAO,EAAC,OAAO,+BAA8B,CAAC;AAAA,EACpE;AACF;",
4
+ "sourcesContent": ["import { type Duration, parseDuration } from '@alwatr/parse-duration';\nimport { AlwatrSignal } from '@alwatr/flux';\nimport { createLogger } from '@alwatr/logger';\nimport { packageTracer } from '@alwatr/package-tracer';\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": ";;;AAAA,SAAwB,qBAAqB;AAC7C,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAc9B,aAAc,eAAc,IAAI,yBAAkB,OAAmB;AAErE,IAAM,SAAyB,6BAAa,uBAAgB;AAcrD,IAAM,sBAAsC,oBAAI,aAA4C;AAAA,EACjG,MAAM;AACR,CAAC;AAsBD,eAAsB,sBAAsB,SAAqF;AAC/H,SAAO,gBAAgB,yBAAyB,EAAE,QAAQ,CAAC;AAC3D,MAAI,EAAE,mBAAmB,YAAY;AACnC,WAAO,WAAW,yBAAyB,8BAA8B;AACzE;AAAA,EACF;AAEA,MAAI;AACF,UAAM,iBAAiB,MAAM,UAAU,cAAc,SAAS,QAAQ,iBAAiB;AACvF,wBAAoB,OAAO,EAAE,OAAO,4BAA4B,CAAC;AACjE,mBAAe,iBAAiB,eAAe,MAAM;AACnD,sCAAgC,eAAe,UAAU;AAAA,IAC3D,CAAC;AACD,WAAO,WAAW,4BAA4B;AAE9C,QAAI,QAAQ,qBAAqB,MAAM;AACrC,kBAAY,YAAY;AACtB,eAAO,WAAW,2BAA2B;AAE7C,cAAM,eAAe,OAAO;AAAA,MAC9B,GAAG,cAAc,QAAQ,iBAAiB,CAAC;AAAA,IAC7C;AAAA,EACF,SACO,OAAO;AACZ,WAAO,MAAM,yBAAyB,uBAAuB,EAAE,MAAM,CAAC;AACtE,wBAAoB,OAAO,EAAE,OAAO,iCAAiC,CAAC;AAAA,EACxE;AACF;AAOA,SAAS,gCAAgC,eAA2C;AAClF,MAAI,iBAAiB,KAAM;AAC3B,SAAO,YAAY,eAAe;AAGlC,MAAI,UAAU,cAAc,YAAY;AACtC,wBAAoB,OAAO,EAAE,OAAO,8BAA8B,CAAC;AAAA,EACrE,OACK;AACH,wBAAoB,OAAO,EAAE,OAAO,+BAA+B,CAAC;AAAA,EACtE;AAEA,gBAAc,iBAAiB,eAAe,MAAM;AAClD,oCAAgC,aAAa;AAAA,EAC/C,CAAC;AACH;AAYA,SAAS,gCAAgC,eAAoC;AAC3E,SAAO,gBAAgB,mCAAmC,EAAE,OAAO,cAAc,MAAM,CAAC;AAExF,MAAI,cAAc,UAAU,aAAa;AAEvC,QAAI,UAAU,cAAc,YAAY;AACtC,0BAAoB,OAAO,EAAE,OAAO,yBAAyB,CAAC;AAAA,IAChE,OACK;AACH,0BAAoB,OAAO,EAAE,OAAO,2BAA2B,CAAC;AAAA,IAClE;AAAA,EACF,WACS,cAAc,UAAU,aAAa;AAC5C,WAAO,SAAS,mCAAmC,gBAAgB,0BAA0B;AAC7F,wBAAoB,OAAO,EAAE,OAAO,+BAA+B,CAAC;AAAA,EACtE;AACF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.test.d.ts","sourceRoot":"","sources":["../src/main.test.js"],"names":[],"mappings":""}
package/docs/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Type Aliases
4
4
 
5
- | Type alias | Description |
5
+ | Type Alias | Description |
6
6
  | -------------------------------------------------------- | ----------------------------------------------------- |
7
7
  | [ServiceWorkerEvent](type-aliases/ServiceWorkerEvent.md) | The events that can be emitted by the service worker. |
8
8
 
@@ -12,7 +12,7 @@ Register the service worker and handle updates.
12
12
  | ---------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------- |
13
13
  | `options` | \{ `serviceWorkerPath`: `string`; `timeForAutoUpdate`: `Duration`; \} | An object containing the service worker path and optional auto-update time. |
14
14
  | `options.serviceWorkerPath` | `string` | - |
15
- | `options.timeForAutoUpdate`? | `Duration` | - |
15
+ | `options.timeForAutoUpdate?` | `Duration` | - |
16
16
 
17
17
  ## Returns
18
18
 
@@ -21,13 +21,13 @@ Register the service worker and handle updates.
21
21
  ## Example
22
22
 
23
23
  ```ts
24
- import {registerServiceWorker} from '@nexim/service-worker';
24
+ import { registerServiceWorker } from '@nexim/service-worker';
25
25
 
26
26
  const serviceWorkerPath = '/service-worker.js';
27
27
 
28
28
  // without auto update
29
- registerServiceWorker({serviceWorkerPath});
29
+ registerServiceWorker({ serviceWorkerPath });
30
30
 
31
31
  // with auto update
32
- registerServiceWorker({serviceWorkerPath, timeForAutoUpdate: '10m'});
32
+ registerServiceWorker({ serviceWorkerPath, timeForAutoUpdate: '10m' });
33
33
  ```
@@ -2,6 +2,6 @@
2
2
 
3
3
  # Type Alias: ServiceWorkerEvent
4
4
 
5
- > **ServiceWorkerEvent**: `"service_worker_registered"` \| `"service_worker_register_failed"` \| `"service_worker_first_install"` \| `"service_worker_updated"` \| `"service_worker_installed"` \| `"service_worker_update_found"` \| `"service_worker_update_failed"`
5
+ > **ServiceWorkerEvent** = `"service_worker_registered"` \| `"service_worker_register_failed"` \| `"service_worker_first_install"` \| `"service_worker_updated"` \| `"service_worker_installed"` \| `"service_worker_update_found"` \| `"service_worker_update_failed"`
6
6
 
7
7
  The events that can be emitted by the service worker.
@@ -9,9 +9,9 @@ Signal for service worker events.
9
9
  ## Example
10
10
 
11
11
  ```ts
12
- import {serviceWorkerSignal} from '@nexim/service-worker';
12
+ import { serviceWorkerSignal } from '@nexim/service-worker';
13
13
 
14
- serviceWorkerSignal.subscribe(({event}) => {
14
+ serviceWorkerSignal.subscribe(({ event }) => {
15
15
  console.log('Service worker event:', event);
16
16
  });
17
17
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexim/service-worker",
3
- "version": "2.0.0-alpha.0",
3
+ "version": "2.0.0",
4
4
  "description": "Utilities to simplify the usage of service workers in your web applications.",
5
5
  "keywords": [
6
6
  "worker",
@@ -45,21 +45,21 @@
45
45
  "watch": "wireit"
46
46
  },
47
47
  "dependencies": {
48
- "@alwatr/flux": "^4.0.2",
49
- "@alwatr/logger": "^5.0.0",
50
- "@alwatr/package-tracer": "^5.0.0",
51
- "@alwatr/parse-duration": "^5.0.0"
48
+ "@alwatr/flux": "^4.0.5",
49
+ "@alwatr/logger": "^5.5.3",
50
+ "@alwatr/package-tracer": "^5.5.3",
51
+ "@alwatr/parse-duration": "^5.5.4"
52
52
  },
53
53
  "devDependencies": {
54
- "@alwatr/nano-build": "^5.0.0",
55
- "@alwatr/type-helper": "^5.0.0",
54
+ "@alwatr/nano-build": "^5.5.3",
55
+ "@alwatr/type-helper": "^5.4.1",
56
56
  "@nexim/typescript-config": "^2.0.0",
57
57
  "ava": "^6.2.0",
58
- "typedoc": "^0.27.6",
59
- "typedoc-plugin-markdown": "^4.4.1",
60
- "typedoc-plugin-no-inherit": "^1.5.0",
61
- "typescript": "^5.7.3",
62
- "wireit": "^0.14.9"
58
+ "typedoc": "^0.28.3",
59
+ "typedoc-plugin-markdown": "^4.6.2",
60
+ "typedoc-plugin-no-inherit": "^1.6.1",
61
+ "typescript": "^5.8.3",
62
+ "wireit": "^0.14.12"
63
63
  },
64
64
  "publishConfig": {
65
65
  "access": "public"
@@ -75,7 +75,7 @@
75
75
  ]
76
76
  },
77
77
  "build:es": {
78
- "command": "nano-build --preset=module",
78
+ "command": "yarn nano-build --preset=module",
79
79
  "files": [
80
80
  "src",
81
81
  "tsconfig.json"
@@ -100,12 +100,12 @@
100
100
  "service": true
101
101
  },
102
102
  "watch:es": {
103
- "command": "nano-build --preset=module --watch",
103
+ "command": "yarn nano-build --preset=module --watch",
104
104
  "service": true
105
105
  },
106
106
  "doc": {
107
107
  "command": "typedoc"
108
108
  }
109
109
  },
110
- "gitHead": "5862c1b0a19bbdd7318268e3a88f20735f3f5bde"
110
+ "gitHead": "274503ac545a83a930686f09205cb3ed06ab475d"
111
111
  }
File without changes
File without changes