@nexim/service-worker 1.0.1 → 1.0.3
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 +12 -0
- package/dist/main.cjs +6 -2
- package/dist/main.cjs.map +2 -2
- package/dist/main.d.ts +5 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.mjs +6 -2
- package/dist/main.mjs.map +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
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
|
+
## [1.0.3](https://github.com/the-nexim/nanolib/compare/@nexim/service-worker@1.0.2...@nexim/service-worker@1.0.3) (2025-01-09)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* check for service worker support before registration ([#32](https://github.com/the-nexim/nanolib/issues/32)) ([c8cc5f4](https://github.com/the-nexim/nanolib/commit/c8cc5f4275dedbccca8651a7673061c22295b9f5)) by @arashagp
|
|
11
|
+
|
|
12
|
+
## [1.0.2](https://github.com/the-nexim/nanolib/compare/@nexim/service-worker@1.0.1...@nexim/service-worker@1.0.2) (2025-01-06)
|
|
13
|
+
|
|
14
|
+
### Code Refactoring
|
|
15
|
+
|
|
16
|
+
* use new @nexim/typescript-config api ([6d656b4](https://github.com/the-nexim/nanolib/commit/6d656b483f27d556e59bdcec1220511c5c819cc8)) by @njfamirm
|
|
17
|
+
|
|
6
18
|
## [1.0.1](https://github.com/the-nexim/nanolib/compare/@nexim/service-worker@1.0.0-alpha.2...@nexim/service-worker@1.0.1) (2025-01-05)
|
|
7
19
|
|
|
8
20
|
**Note:** Version bump only for package @nexim/service-worker
|
package/dist/main.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @nexim/service-worker v1.0.
|
|
1
|
+
/* @nexim/service-worker v1.0.3 */
|
|
2
2
|
"use strict";
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -28,13 +28,17 @@ module.exports = __toCommonJS(main_exports);
|
|
|
28
28
|
var import_flux = require("@alwatr/flux");
|
|
29
29
|
var import_logger = require("@alwatr/logger");
|
|
30
30
|
var import_package_tracer = require("@alwatr/package-tracer");
|
|
31
|
-
__dev_mode__: import_package_tracer.packageTracer.add("@nexim/service-worker", "1.0.
|
|
31
|
+
__dev_mode__: import_package_tracer.packageTracer.add("@nexim/service-worker", "1.0.3");
|
|
32
32
|
var logger = /* @__PURE__ */ (0, import_logger.createLogger)("@nexim/service-worker");
|
|
33
33
|
var serviceWorkerSignal = /* @__PURE__ */ new import_flux.AlwatrSignal({
|
|
34
34
|
name: "serviceWorker"
|
|
35
35
|
});
|
|
36
36
|
async function registerServiceWorker(serviceWorkerPath) {
|
|
37
37
|
logger.logMethodArgs?.("registerServiceWorker", { serviceWorkerPath });
|
|
38
|
+
if ("serviceWorker" in navigator === false) {
|
|
39
|
+
logger.incident?.("registerServiceWorker", "service_worker_not_supported");
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
38
42
|
try {
|
|
39
43
|
const swRegistration = await navigator.serviceWorker.register(serviceWorkerPath);
|
|
40
44
|
serviceWorkerSignal.notify({ event: "service_worker_registered" });
|
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';\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\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 * import {serviceWorkerSignal} from '@nexim/service-worker';\n *\n * serviceWorkerSignal.subscribe(({event}) => {\n * console.log('Service worker event:', event);\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 serviceWorkerPath The path to the service worker.\n *\n * @example\n * import {registerServiceWorker} from '@nexim/service-worker';\n *\n * const serviceWorkerPath = '/service-worker.js';\n * registerServiceWorker(serviceWorkerPath);\n */\nexport async function registerServiceWorker(serviceWorkerPath: string): Promise<void> {\n logger.logMethodArgs?.('registerServiceWorker', {serviceWorkerPath});\n\n try {\n const swRegistration = await navigator.serviceWorker.register(serviceWorkerPath);\n serviceWorkerSignal.notify({event: 'service_worker_registered'});\n swRegistration.addEventListener('updatefound', () => serviceWorkerUpdateFoundHandler(swRegistration.installing));\n logger.logOther?.('Service worker registered.');\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_installed'});\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA2B;AAC3B,oBAA2B;AAC3B,4BAA4B;AAa5B,aAAc,qCAAc,IAAI,yBAAkB,OAAmB;AAErE,IAAM,SAAyB,gDAAa,uBAAgB;
|
|
4
|
+
"sourcesContent": ["import {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\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 * ```\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 serviceWorkerPath - The path to the service worker.\n *\n * @example\n * ```\n * import {registerServiceWorker} from '@nexim/service-worker';\n *\n * const serviceWorkerPath = '/service-worker.js';\n * registerServiceWorker(serviceWorkerPath);\n * ```\n */\nexport async function registerServiceWorker(serviceWorkerPath: string): Promise<void> {\n logger.logMethodArgs?.('registerServiceWorker', {serviceWorkerPath});\n\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(serviceWorkerPath);\n serviceWorkerSignal.notify({event: 'service_worker_registered'});\n swRegistration.addEventListener('updatefound', () => serviceWorkerUpdateFoundHandler(swRegistration.installing));\n logger.logOther?.('Service worker registered.');\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_installed'});\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA2B;AAC3B,oBAA2B;AAC3B,4BAA4B;AAa5B,aAAc,qCAAc,IAAI,yBAAkB,OAAmB;AAErE,IAAM,SAAyB,gDAAa,uBAAgB;AAcrD,IAAM,sBAAsC,oBAAI,yBAA0C;AAAA,EAC/F,MAAM;AACR,CAAC;AAeD,eAAsB,sBAAsB,mBAA0C;AACpF,SAAO,gBAAgB,yBAAyB,EAAC,kBAAiB,CAAC;AAEnE,MAAK,mBAAmB,cAAe,OAAO;AAC5C,WAAO,WAAW,yBAAyB,8BAA8B;AACzE;AAAA,EACF;AAEA,MAAI;AACF,UAAM,iBAAiB,MAAM,UAAU,cAAc,SAAS,iBAAiB;AAC/E,wBAAoB,OAAO,EAAC,OAAO,4BAA2B,CAAC;AAC/D,mBAAe,iBAAiB,eAAe,MAAM,gCAAgC,eAAe,UAAU,CAAC;AAC/G,WAAO,WAAW,4BAA4B;AAAA,EAChD,SACO,OAAO;AACZ,WAAO,MAAM,yBAAyB,wBAAwB,EAAC,MAAK,CAAC;AACrE,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,2BAA0B,CAAC;AAAA,EAChE;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/main.d.ts
CHANGED
|
@@ -7,11 +7,13 @@ export type ServiceWorkerEvent = 'service_worker_registered' | 'service_worker_r
|
|
|
7
7
|
* Signal for service worker events.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
|
+
* ```
|
|
10
11
|
* import {serviceWorkerSignal} from '@nexim/service-worker';
|
|
11
12
|
*
|
|
12
13
|
* serviceWorkerSignal.subscribe(({event}) => {
|
|
13
14
|
* console.log('Service worker event:', event);
|
|
14
15
|
* });
|
|
16
|
+
* ```
|
|
15
17
|
*/
|
|
16
18
|
export declare const serviceWorkerSignal: AlwatrSignal<{
|
|
17
19
|
event: ServiceWorkerEvent;
|
|
@@ -19,13 +21,15 @@ export declare const serviceWorkerSignal: AlwatrSignal<{
|
|
|
19
21
|
/**
|
|
20
22
|
* Register the service worker and handle updates.
|
|
21
23
|
*
|
|
22
|
-
* @param serviceWorkerPath The path to the service worker.
|
|
24
|
+
* @param serviceWorkerPath - The path to the service worker.
|
|
23
25
|
*
|
|
24
26
|
* @example
|
|
27
|
+
* ```
|
|
25
28
|
* import {registerServiceWorker} from '@nexim/service-worker';
|
|
26
29
|
*
|
|
27
30
|
* const serviceWorkerPath = '/service-worker.js';
|
|
28
31
|
* registerServiceWorker(serviceWorkerPath);
|
|
32
|
+
* ```
|
|
29
33
|
*/
|
|
30
34
|
export declare function registerServiceWorker(serviceWorkerPath: string): Promise<void>;
|
|
31
35
|
//# sourceMappingURL=main.d.ts.map
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAI1C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,2BAA2B,GAC3B,gCAAgC,GAChC,8BAA8B,GAC9B,wBAAwB,GACxB,0BAA0B,GAC1B,6BAA6B,CAAC;AAMlC
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAI1C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,2BAA2B,GAC3B,gCAAgC,GAChC,8BAA8B,GAC9B,wBAAwB,GACxB,0BAA0B,GAC1B,6BAA6B,CAAC;AAMlC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB;WAA4C,kBAAkB;EAE5F,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBpF"}
|
package/dist/main.mjs
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
/* @nexim/service-worker v1.0.
|
|
1
|
+
/* @nexim/service-worker v1.0.3 */
|
|
2
2
|
|
|
3
3
|
// src/main.ts
|
|
4
4
|
import { AlwatrSignal } from "@alwatr/flux";
|
|
5
5
|
import { createLogger } from "@alwatr/logger";
|
|
6
6
|
import { packageTracer } from "@alwatr/package-tracer";
|
|
7
|
-
__dev_mode__: packageTracer.add("@nexim/service-worker", "1.0.
|
|
7
|
+
__dev_mode__: packageTracer.add("@nexim/service-worker", "1.0.3");
|
|
8
8
|
var logger = /* @__PURE__ */ createLogger("@nexim/service-worker");
|
|
9
9
|
var serviceWorkerSignal = /* @__PURE__ */ new AlwatrSignal({
|
|
10
10
|
name: "serviceWorker"
|
|
11
11
|
});
|
|
12
12
|
async function registerServiceWorker(serviceWorkerPath) {
|
|
13
13
|
logger.logMethodArgs?.("registerServiceWorker", { serviceWorkerPath });
|
|
14
|
+
if ("serviceWorker" in navigator === false) {
|
|
15
|
+
logger.incident?.("registerServiceWorker", "service_worker_not_supported");
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
14
18
|
try {
|
|
15
19
|
const swRegistration = await navigator.serviceWorker.register(serviceWorkerPath);
|
|
16
20
|
serviceWorkerSignal.notify({ event: "service_worker_registered" });
|
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';\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\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 * import {serviceWorkerSignal} from '@nexim/service-worker';\n *\n * serviceWorkerSignal.subscribe(({event}) => {\n * console.log('Service worker event:', event);\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 serviceWorkerPath The path to the service worker.\n *\n * @example\n * import {registerServiceWorker} from '@nexim/service-worker';\n *\n * const serviceWorkerPath = '/service-worker.js';\n * registerServiceWorker(serviceWorkerPath);\n */\nexport async function registerServiceWorker(serviceWorkerPath: string): Promise<void> {\n logger.logMethodArgs?.('registerServiceWorker', {serviceWorkerPath});\n\n try {\n const swRegistration = await navigator.serviceWorker.register(serviceWorkerPath);\n serviceWorkerSignal.notify({event: 'service_worker_registered'});\n swRegistration.addEventListener('updatefound', () => serviceWorkerUpdateFoundHandler(swRegistration.installing));\n logger.logOther?.('Service worker registered.');\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_installed'});\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;AAAA,SAAQ,oBAAmB;AAC3B,SAAQ,oBAAmB;AAC3B,SAAQ,qBAAoB;AAa5B,aAAc,eAAc,IAAI,yBAAkB,OAAmB;AAErE,IAAM,SAAyB,6BAAa,uBAAgB;
|
|
4
|
+
"sourcesContent": ["import {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\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 * ```\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 serviceWorkerPath - The path to the service worker.\n *\n * @example\n * ```\n * import {registerServiceWorker} from '@nexim/service-worker';\n *\n * const serviceWorkerPath = '/service-worker.js';\n * registerServiceWorker(serviceWorkerPath);\n * ```\n */\nexport async function registerServiceWorker(serviceWorkerPath: string): Promise<void> {\n logger.logMethodArgs?.('registerServiceWorker', {serviceWorkerPath});\n\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(serviceWorkerPath);\n serviceWorkerSignal.notify({event: 'service_worker_registered'});\n swRegistration.addEventListener('updatefound', () => serviceWorkerUpdateFoundHandler(swRegistration.installing));\n logger.logOther?.('Service worker registered.');\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_installed'});\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;AAAA,SAAQ,oBAAmB;AAC3B,SAAQ,oBAAmB;AAC3B,SAAQ,qBAAoB;AAa5B,aAAc,eAAc,IAAI,yBAAkB,OAAmB;AAErE,IAAM,SAAyB,6BAAa,uBAAgB;AAcrD,IAAM,sBAAsC,oBAAI,aAA0C;AAAA,EAC/F,MAAM;AACR,CAAC;AAeD,eAAsB,sBAAsB,mBAA0C;AACpF,SAAO,gBAAgB,yBAAyB,EAAC,kBAAiB,CAAC;AAEnE,MAAK,mBAAmB,cAAe,OAAO;AAC5C,WAAO,WAAW,yBAAyB,8BAA8B;AACzE;AAAA,EACF;AAEA,MAAI;AACF,UAAM,iBAAiB,MAAM,UAAU,cAAc,SAAS,iBAAiB;AAC/E,wBAAoB,OAAO,EAAC,OAAO,4BAA2B,CAAC;AAC/D,mBAAe,iBAAiB,eAAe,MAAM,gCAAgC,eAAe,UAAU,CAAC;AAC/G,WAAO,WAAW,4BAA4B;AAAA,EAChD,SACO,OAAO;AACZ,WAAO,MAAM,yBAAyB,wBAAwB,EAAC,MAAK,CAAC;AACrE,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,2BAA0B,CAAC;AAAA,EAChE;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexim/service-worker",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Utilities to simplify the usage of service workers in your web applications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"worker",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@alwatr/nano-build": "^5.0.0",
|
|
53
53
|
"@alwatr/type-helper": "^5.0.0",
|
|
54
|
-
"@nexim/typescript-config": "^
|
|
54
|
+
"@nexim/typescript-config": "^2.0.0",
|
|
55
55
|
"ava": "^6.2.0",
|
|
56
56
|
"typescript": "^5.7.2",
|
|
57
57
|
"wireit": "^0.14.9"
|
|
@@ -99,5 +99,5 @@
|
|
|
99
99
|
"service": true
|
|
100
100
|
}
|
|
101
101
|
},
|
|
102
|
-
"gitHead": "
|
|
102
|
+
"gitHead": "67de35829cde30ef70d87361d7f104762f6ccfd5"
|
|
103
103
|
}
|