service-worker-mock
Version:
Service Worker Mock ========================= A mock service worker environment generator.
53 lines (43 loc) • 1.45 kB
JavaScript
const PushManager = require('./PushManager');
const NavigationPreloadManager = require('./NavigationPreloadManager');
const Notification = require('./Notification');
const NotificationEvent = require('./NotificationEvent');
const SyncManager = require('./SyncManager');
const EventTarget = require('./EventTarget');
// https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration
class ServiceWorkerRegistration extends EventTarget {
constructor() {
super();
this.active = null;
this.installing = null;
this.onupdatefound = null;
this.pushManager = new PushManager();
this.navigationPreload = new NavigationPreloadManager();
this.sync = new SyncManager();
this.scope = '/';
this.waiting = null;
this.notifications = [];
}
getNotifications() {
return Promise.resolve(this.notifications);
}
showNotification(title, options) {
const notification = new Notification(title, options);
this.notifications.push(notification);
notification.close = () => {
const index = this.notifications.indexOf(notification);
this.notifications.splice(index, 1);
};
return Promise.resolve(new NotificationEvent('notification', { notification }));
}
update() {
return Promise.resolve();
}
unregister() {
return Promise.resolve();
}
snapshot() {
return this.notifications.map(n => n.snapshot());
}
}
module.exports = ServiceWorkerRegistration;