-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js.map
1 lines (1 loc) · 53.5 KB
/
index.js.map
1
{"version":3,"file":"index.js","sources":["source/WorkerType.js","node_modules/@actualwave/has-own/has-own.js","node_modules/@actualwave/event-dispatcher/index.js","source/WorkerEvent.js","node_modules/@actualwave/messageport-dispatcher/index.js","source/AbstractDispatcher.js","source/DedicatedWorkerDispatcher.js","source/SharedWorkerDispatcher.js","source/sharedWorker/ClientDispatcher.js","source/sharedWorker/ServerDispatcher.js","source/ServiceWorkerDispatcher.js","source/serviceWorker/ClientDispatcher.js","source/serviceWorker/ServerDispatcher.js","source/utils/create.js","source/index.js"],"sourcesContent":["const WorkerType = {\n DEDICATED_WORKER: 'dedicated',\n\n SHARED_WORKER: 'shared',\n /**\n * @private\n */\n SHARED_WORKER_SERVER: 'sharedServer',\n /**\n * @private\n */\n SHARED_WORKER_CLIENT: 'sharedClient',\n\n SERVICE_WORKER: 'service',\n /**\n * @private\n */\n SERVICE_WORKER_SERVER: 'serviceServer',\n /**\n * @private\n */\n SERVICE_WORKER_CLIENT: 'serviceClient',\n};\n\nexport default WorkerType;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst hasOwn = (\n (has) =>\n (target, property) =>\n Boolean(target && has.call(target, property))\n)(Object.prototype.hasOwnProperty);\n\nexports.hasOwn = hasOwn;\nexports.default = hasOwn;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar hasOwn = _interopDefault(require('@actualwave/has-own'));\n\n/**\n * \n */\n\n/* eslint-disable import/prefer-default-export */\nconst isObject = value => typeof value === 'object' && value !== null;\n\n/**\n * Created by Oleg Galaburda on 09.02.16.\n * \n */\nclass Event {\n constructor(type, data = null) {\n this.type = type;\n this.data = data;\n this.defaultPrevented = false;\n }\n\n toJSON() {\n return {\n type: this.type,\n data: this.data\n };\n }\n\n isDefaultPrevented() {\n return this.defaultPrevented;\n }\n\n preventDefault() {\n this.defaultPrevented = true;\n }\n\n}\nconst getEvent = (eventOrType, optionalData) => {\n let event = eventOrType;\n\n if (!isObject(eventOrType)) {\n event = new Event(String(eventOrType), optionalData);\n }\n\n return event;\n};\n\n/**\n * Created by Oleg Galaburda on 09.02.16.\n * \n */\nclass ListenersRunner {\n constructor(listeners, onStopped, onComplete) {\n this.index = -1;\n this.immediatelyStopped = false;\n\n this.stopImmediatePropagation = () => {\n this.immediatelyStopped = true;\n };\n\n this.listeners = listeners;\n this.onStopped = onStopped;\n this.onComplete = onComplete;\n }\n\n run(event, target) {\n let listener;\n const {\n listeners\n } = this;\n this.augmentEvent(event); // TODO this has to be handled in separate object ListenersRunner that should be\n // created for each call() call and asked for index validation on each listener remove.\n\n for (this.index = 0; this.index < listeners.length; this.index++) {\n if (this.immediatelyStopped) break;\n listener = listeners[this.index];\n listener.call(target, event);\n }\n\n this.clearEvent(event);\n this.onComplete(this);\n }\n\n augmentEvent(eventObject) {\n const event = eventObject;\n event.stopPropagation = this.onStopped;\n event.stopImmediatePropagation = this.stopImmediatePropagation;\n }\n /* eslint class-methods-use-this: \"off\" */\n\n\n clearEvent(eventObject) {\n const event = eventObject;\n delete event.stopPropagation;\n delete event.stopImmediatePropagation;\n }\n\n listenerRemoved(listeners, index) {\n if (listeners === this.listeners && index <= this.index) {\n this.index--;\n }\n }\n\n}\n\n/**\n * Created by Oleg Galaburda on 09.02.16.\n * \n */\nclass EventListeners {\n constructor() {\n this._listeners = {};\n this._runners = [];\n\n this.removeRunner = runner => {\n this._runners.splice(this._runners.indexOf(runner), 1);\n };\n }\n\n createList(eventType, priorityOpt) {\n const priority = parseInt(priorityOpt, 10);\n const target = this.getPrioritiesByKey(eventType);\n const key = String(priority);\n let value;\n\n if (hasOwn(target, key)) {\n value = target[key];\n } else {\n value = [];\n target[key] = value;\n }\n\n return value;\n }\n\n getPrioritiesByKey(key) {\n let value;\n\n if (hasOwn(this._listeners, key)) {\n value = this._listeners[key];\n } else {\n value = {};\n this._listeners[key] = value;\n }\n\n return value;\n }\n\n add(eventType, handler, priority) {\n const handlers = this.createList(eventType, priority);\n\n if (handlers.indexOf(handler) < 0) {\n handlers.push(handler);\n }\n }\n\n has(eventType) {\n let priority;\n let result = false;\n const priorities = this.getPrioritiesByKey(eventType);\n\n if (priorities) {\n for (priority in priorities) {\n if (hasOwn(priorities, priority)) {\n result = true;\n break;\n }\n }\n }\n\n return result;\n }\n\n remove(eventType, handler) {\n const priorities = this.getPrioritiesByKey(eventType);\n\n if (priorities) {\n const list = Object.getOwnPropertyNames(priorities);\n const {\n length\n } = list;\n\n for (let index = 0; index < length; index++) {\n const priority = list[index];\n const handlers = priorities[priority];\n const handlerIndex = handlers.indexOf(handler);\n\n if (handlerIndex >= 0) {\n handlers.splice(handlerIndex, 1);\n\n if (!handlers.length) {\n delete priorities[priority];\n }\n\n this._runners.forEach(runner => {\n runner.listenerRemoved(handlers, handlerIndex);\n });\n }\n }\n }\n }\n\n removeAll(eventType) {\n delete this._listeners[eventType];\n }\n\n createRunner(handlers, onStopped) {\n const runner = new ListenersRunner(handlers, onStopped, this.removeRunner);\n\n this._runners.push(runner);\n\n return runner;\n }\n\n call(event, target) {\n const priorities = this.getPrioritiesByKey(event.type);\n let stopped = false;\n\n const stopPropagation = () => {\n stopped = true;\n };\n\n if (priorities) {\n // getOwnPropertyNames() or keys()?\n const list = Object.getOwnPropertyNames(priorities).sort((a, b) => a - b);\n const {\n length\n } = list;\n\n for (let index = 0; index < length; index++) {\n if (stopped) break;\n const handlers = priorities[list[index]]; // in case if all handlers of priority were removed while event\n // was dispatched and handlers become undefined.\n\n if (handlers) {\n const runner = this.createRunner(handlers, stopPropagation);\n runner.run(event, target);\n if (runner.immediatelyStopped) break;\n }\n }\n }\n }\n\n}\n\n/**\n * Created by Oleg Galaburda on 09.02.16.\n * \n */\n\nclass EventDispatcher {\n constructor(eventPreprocessor = null) {\n this._eventPreprocessor = eventPreprocessor;\n this._listeners = new EventListeners();\n }\n\n addEventListener(eventType, listener, priority = 0) {\n this._listeners.add(eventType, listener, -priority || 0);\n }\n\n hasEventListener(eventType) {\n return this._listeners.has(eventType);\n }\n\n removeEventListener(eventType, listener) {\n this._listeners.remove(eventType, listener);\n }\n\n removeAllEventListeners(eventType) {\n this._listeners.removeAll(eventType);\n }\n\n dispatchEvent(event, data) {\n let eventObject = getEvent(event, data);\n\n if (this._eventPreprocessor) {\n eventObject = this._eventPreprocessor.call(this, eventObject);\n }\n\n this._listeners.call(eventObject);\n }\n\n}\n\nconst createEventDispatcher = eventPreprocessor => new EventDispatcher(eventPreprocessor);\n\nexports.default = EventDispatcher;\nexports.Event = Event;\nexports.EventDispatcher = EventDispatcher;\nexports.createEventDispatcher = createEventDispatcher;\nexports.getEvent = getEvent;\nexports.isObject = isObject;\n//# sourceMappingURL=index.js.map\n","import { Event } from '@actualwave/event-dispatcher';\n\nexport const NativeEventType = {\n CONNECT: 'connect',\n MESSAGE: 'message',\n ERROR: 'error',\n MESSAGEERROR: 'messageerror',\n LANGUAGECHANGE: 'languagechange',\n ONLINE: 'online',\n OFFLINE: 'offline',\n\n /* Service Worker specific events */\n INSTALL: 'install',\n ACTIVATE: 'activate',\n FETCH: 'fetch',\n SYNC: 'sync',\n PUSH: 'push',\n};\n\nclass WorkerEvent extends Event {\n static CONNECT = 'worker:connect';\n\n static MESSAGE = 'worker:message';\n\n static ERROR = 'worker:error';\n\n static MESSAGEERROR = 'messageerror';\n\n static LANGUAGECHANGE = 'worker:languagechange';\n\n static ONLINE = 'worker:online';\n\n static OFFLINE = 'worker:offline';\n\n /* Service Worker specific events */\n\n static INSTALL: 'worker:install';\n\n static ACTIVATE: 'worker:activate';\n\n static FETCH: 'worker:fetch';\n\n static SYNC: 'worker:sync';\n\n static PUSH: 'worker:push';\n\n constructor(type, data, nativeEvent, client) {\n super(type, data);\n this.nativeEvent = nativeEvent;\n this.client = client;\n }\n}\n\nexport const getWorkerEventType = (type) => {\n switch (type) {\n case NativeEventType.CONNECT:\n return WorkerEvent.CONNECT;\n case NativeEventType.MESSAGE:\n return WorkerEvent.MESSAGE;\n case NativeEventType.ERROR:\n return WorkerEvent.ERROR;\n case NativeEventType.MESSAGEERROR:\n return WorkerEvent.MESSAGEERROR;\n case NativeEventType.LANGUAGECHANGE:\n return WorkerEvent.LANGUAGECHANGE;\n case NativeEventType.ONLINE:\n return WorkerEvent.ONLINE;\n case NativeEventType.OFFLINE:\n return WorkerEvent.OFFLINE;\n\n /* Service Worker specific events */\n case NativeEventType.INSTALL:\n return WorkerEvent.INSTALL;\n case NativeEventType.ACTIVATE:\n return WorkerEvent.ACTIVATE;\n case NativeEventType.FETCH:\n return WorkerEvent.FETCH;\n case NativeEventType.SYNC:\n return WorkerEvent.SYNC;\n case NativeEventType.PUSH:\n return WorkerEvent.PUSH;\n default:\n return type;\n }\n};\n\nexport const dispatchWorkerEvent = (type, source, target) => {\n const eventType = getWorkerEventType(type);\n\n const handler = (event) => {\n if (target.hasEventListener(eventType)) {\n target.dispatchEvent(new WorkerEvent(eventType, event, event));\n }\n };\n\n source.addEventListener(type, handler);\n return handler;\n};\n\nexport const dispatchWorkerEvents = (source, target) => {\n dispatchWorkerEvent(NativeEventType.ERROR, source, target);\n dispatchWorkerEvent(NativeEventType.LANGUAGECHANGE, source, target);\n dispatchWorkerEvent(NativeEventType.ONLINE, source, target);\n dispatchWorkerEvent(NativeEventType.OFFLINE, source, target);\n};\n\nexport const dispatchServiceWorkerEvents = (source, target) => {\n dispatchWorkerEvent(NativeEventType.INSTALL, source, target);\n dispatchWorkerEvent(NativeEventType.ACTIVATE, source, target);\n dispatchWorkerEvent(NativeEventType.FETCH, source, target);\n dispatchWorkerEvent(NativeEventType.SYNC, source, target);\n dispatchWorkerEvent(NativeEventType.PUSH, source, target);\n};\n\nexport const dispatchWorkerErrorEvent = (source, target) => {\n dispatchWorkerEvent(NativeEventType.ERROR, source, target);\n dispatchWorkerEvent(NativeEventType.MESSAGEERROR, source, target);\n};\n\nexport default WorkerEvent;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar eventDispatcher = require('@actualwave/event-dispatcher');\nvar hasOwn = _interopDefault(require('@actualwave/has-own'));\n\n/**\n * Created by Oleg Galaburda on 09.02.16.\n */\nconst createId = () => `MP/${Math.ceil(Math.random() * 10000)}/${Date.now()}`;\n/**\n * If toJSON method implemented on object, it will be called instead of converting to JSON string.\n * This was made to utilize structured cloning algorithm for raw objects.\n * https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm\n * In this case developer is responsible for converting linked objects.\n * @param object\n * @returns {Object}\n */\n\nconst toRawData = object => {\n if (typeof object.toJSON === 'function') {\n return object.toJSON();\n }\n\n return JSON.stringify(object);\n};\n/**\n *\n * @param data {Object|String}\n * @returns {Object}\n */\n\nconst parseRawData = data => {\n let object; // keep it undefined in case of error\n\n if (eventDispatcher.isObject(data)) {\n return data;\n }\n\n try {\n return JSON.parse(data);\n } catch (error) {// this isn't an event we are waiting for.\n }\n\n return object;\n};\n\n/**\n * Created by Oleg Galaburda on 09.02.16.\n */\nclass MessagePortEvent {\n constructor(event, dispatcherId) {\n this.event = event;\n this.dispatcherId = dispatcherId;\n }\n\n toJSON() {\n return {\n event: toRawData(this.event),\n dispatcherId: this.dispatcherId\n };\n }\n\n}\nconst isMessagePortEvent = object => eventDispatcher.isObject(object) && hasOwn(object, 'dispatcherId') && hasOwn(object, 'event');\nconst parseMessagePortEvent = object => {\n const result = parseRawData(object);\n\n if (result && isMessagePortEvent(result)) {\n const {\n event,\n dispatcherId\n } = result;\n return new MessagePortEvent(parseRawData(event), dispatcherId);\n }\n\n return null;\n};\n\n/**\n * Created by Oleg Galaburda on 09.02.16.\n */\nclass MessagePortDispatcher {\n constructor(target = null, customPostMessageHandler = null, receiverEventPreprocessor = null, senderEventPreprocessor = null) {\n this.dispatcherId = createId();\n this.targetOrigin = '*';\n this.target = target || self;\n this.customPostMessageHandler = customPostMessageHandler;\n this.senderEventPreprocessor = senderEventPreprocessor;\n this.sender = eventDispatcher.createEventDispatcher();\n this.receiver = eventDispatcher.createEventDispatcher(receiverEventPreprocessor);\n this.target.addEventListener('message', event => this._postMessageListener(event));\n }\n\n addEventListener(eventType, listener, priority) {\n this.receiver.addEventListener(eventType, listener, priority);\n }\n\n hasEventListener(eventType) {\n return this.receiver.hasEventListener(eventType);\n }\n\n removeEventListener(eventType, listener) {\n this.receiver.removeEventListener(eventType, listener);\n }\n\n removeAllEventListeners(eventType) {\n this.receiver.removeAllEventListeners(eventType);\n }\n\n dispatchEvent(eventType, data, transferList) {\n let event = eventDispatcher.getEvent(eventType, data);\n\n if (this.senderEventPreprocessor) {\n event = this.senderEventPreprocessor.call(this, event);\n }\n\n const eventJson = toRawData(new MessagePortEvent(event, this.dispatcherId));\n return this._postMessageHandler(eventJson, transferList);\n }\n /**\n * @private\n */\n\n\n _postMessageHandler(data, transferList) {\n const handler = this.customPostMessageHandler;\n\n if (handler) {\n return handler.call(this, data, this.targetOrigin, transferList);\n }\n\n return this.target.postMessage(data, this.targetOrigin, transferList);\n }\n /**\n * @private\n */\n\n\n _postMessageListener(event) {\n // INFO .nativeEvent react-native thing, it contains event object coming from WebView\n event = event.nativeEvent || event;\n const message = parseMessagePortEvent(event.data);\n\n if (message) {\n if (message.dispatcherId === this.dispatcherId) {\n this.sender.dispatchEvent(message.event);\n } else {\n this.receiver.dispatchEvent(message.event);\n }\n }\n }\n\n}\nconst createMessagePortDispatcher = (target, customPostMessageHandler, receiverEventPreprocessor, senderEventPreprocessor) => new MessagePortDispatcher(target, customPostMessageHandler, receiverEventPreprocessor, senderEventPreprocessor);\nconst factory = (getTarget, dispatcher = null) => () => {\n if (!dispatcher) {\n dispatcher = createMessagePortDispatcher(getTarget());\n }\n\n return dispatcher;\n};\nconst getForSelf = factory(() => self);\nconst getForParent = factory(() => parent);\nconst getForTop = factory(() => top);\n\nexports.MessagePortDispatcher = MessagePortDispatcher;\nexports.MessagePortEvent = MessagePortEvent;\nexports.createMessagePortDispatcher = createMessagePortDispatcher;\nexports.default = MessagePortDispatcher;\nexports.factory = factory;\nexports.getForParent = getForParent;\nexports.getForSelf = getForSelf;\nexports.getForTop = getForTop;\nexports.isMessagePortEvent = isMessagePortEvent;\nexports.parseMessagePortEvent = parseMessagePortEvent;\n//# sourceMappingURL=index.js.map\n","import MessagePortDispatcher from '@actualwave/messageport-dispatcher';\n\n/**\n *\n * @param target {String|Worker}\n * @param customPostMessageHandler {?Function}\n * @param receiverEventPreprocessor {?Function}\n * @param senderEventPreprocessor {?Function}\n * @extends MessagePortDispatcher\n * @constructor\n */\nclass AbstractDispatcher extends MessagePortDispatcher {\n constructor(\n type,\n target,\n receiverEventPreprocessor = null,\n senderEventPreprocessor = null,\n ) {\n super(\n target,\n (data, targetOrigin, transferList) => target.postMessage(data, transferList),\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n\n this.type = type;\n }\n}\n\nexport default AbstractDispatcher;\n","import { isObject } from '@actualwave/event-dispatcher';\nimport WorkerType from './WorkerType';\nimport { dispatchWorkerEvents } from './WorkerEvent';\nimport AbstractDispatcher from './AbstractDispatcher';\n\nconst getTarget = (worker) => {\n // eslint-disable-next-line no-restricted-globals\n let target = worker || self;\n\n if (!isObject(target)) {\n target = new Worker(String(worker));\n }\n\n return target;\n};\n\n/**\n *\n * @param target {Worker|String}\n * @param receiverEventPreprocessor {?Function}\n * @param senderEventPreprocessor {?Function}\n * @extends MessagePortDispatcher\n * @constructor\n */\nclass DedicatedWorkerDispatcher extends AbstractDispatcher {\n constructor(worker, receiverEventPreprocessor, senderEventPreprocessor) {\n super(\n WorkerType.DEDICATED_WORKER,\n getTarget(worker),\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n\n dispatchWorkerEvents(this.target, this.receiver);\n }\n\n terminate() {\n return this.target.terminate();\n }\n}\n\nexport default DedicatedWorkerDispatcher;\n","import { isObject } from '@actualwave/event-dispatcher';\nimport WorkerType from './WorkerType';\nimport { dispatchWorkerErrorEvent } from './WorkerEvent';\nimport AbstractDispatcher from './AbstractDispatcher';\n\nconst getTarget = (target, name) => {\n if (!isObject(target)) {\n return new SharedWorker(String(target), name);\n }\n\n return target;\n};\n\n/**\n *\n * @param worker {SharedWorker}\n * @param name {String}\n * @param receiverEventPreprocessor {?Function}\n * @param senderEventPreprocessor {?Function}\n * @extends WorkerMessenger\n * @constructor\n */\nclass SharedWorkerDispatcher extends AbstractDispatcher {\n constructor(\n target,\n name,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n ) {\n const worker = getTarget(target, name);\n\n super(\n WorkerType.SHARED_WORKER,\n worker.port,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n\n this.worker = worker;\n\n dispatchWorkerErrorEvent(this.worker, this.receiver);\n\n this.start();\n }\n\n start() {\n this.target.start();\n }\n\n close() {\n this.target.close();\n }\n}\n\nexport default SharedWorkerDispatcher;\n","import WorkerType from '../WorkerType';\nimport AbstractDispatcher from '../AbstractDispatcher';\n\n/**\n * @param target {MessagePort}\n * @param receiverEventPreprocessor {?Function}\n * @param senderEventPreprocessor {?Function}\n * @extends MessagePortDispatcher\n * @constructor\n */\nclass SharedClientDispatcher extends AbstractDispatcher {\n constructor(target, receiverEventPreprocessor, senderEventPreprocessor) {\n super(\n WorkerType.SHARED_WORKER_CLIENT,\n target,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n }\n\n start() {\n this.target.start();\n }\n\n close() {\n this.target.close();\n }\n}\n\nexport default SharedClientDispatcher;\n","/* eslint-disable no-restricted-globals */\nimport { createEventDispatcher } from '@actualwave/event-dispatcher';\nimport WorkerType from '../WorkerType';\nimport WorkerEvent, {\n NativeEventType,\n dispatchWorkerEvents,\n} from '../WorkerEvent';\nimport SharedClientDispatcher from './ClientDispatcher';\n\n/**\n * Read-only interface, mainly will listen to \"connect\" event.\n * You should listen to WorkerEvent.CONNECT to intercept client\n * instance to be able to communicate.\n * @param worker\n * @param receiverEventPreprocessor {?Function}\n * @constructor\n */\nclass SharedServerDispatcher {\n constructor(\n target = self,\n receiverEventPreprocessor,\n clientReceiverEventPreprocessor,\n clientSenderEventPreprocessor,\n ) {\n this.type = WorkerType.SHARED_WORKER_SERVER;\n this.target = target;\n this.clientFactory = (client) => new SharedClientDispatcher(\n client,\n clientReceiverEventPreprocessor,\n clientSenderEventPreprocessor,\n );\n this.receiver = createEventDispatcher(receiverEventPreprocessor);\n this.target.addEventListener(NativeEventType.CONNECT, this.handleConnect);\n dispatchWorkerEvents(this.target, this.receiver);\n }\n\n addEventListener = (...args) => this.receiver.addEventListener(...args);\n\n hasEventListener = (...args) => this.receiver.hasEventListener(...args);\n\n removeEventListener = (...args) => this.receiver.removeEventListener(...args);\n\n removeAllEventListeners = (...args) => this.receiver.removeAllEventListeners(...args);\n\n handleConnect = (event) => {\n const [target] = event.ports;\n const client = this.clientFactory(target);\n\n this.receiver.dispatchEvent(\n new WorkerEvent(WorkerEvent.CONNECT, client, event, client),\n );\n };\n}\n\nexport default SharedServerDispatcher;\n","/* eslint-disable class-methods-use-this */\nimport WorkerType from './WorkerType';\nimport { dispatchWorkerErrorEvent } from './WorkerEvent';\nimport AbstractDispatcher from './AbstractDispatcher';\n\nconst getServiceWorker = async () => {\n await navigator.serviceWorker.ready;\n const registration = await navigator.serviceWorker.getRegistration();\n\n return registration.active;\n};\n\nconst createTarget = () => {\n const channel = new MessageChannel();\n let neutered = false;\n\n return {\n postMessage: async (message) => {\n const worker = await getServiceWorker();\n\n if(neutered) {\n return worker.postMessage(message);\n }\n\n neutered = true;\n \n return worker.postMessage(message, [channel.port2]);\n },\n get onmessage() {\n return channel.port1.onmessage;\n },\n set onmessage(handler) {\n channel.port1.onmessage = handler;\n },\n start: () => {\n channel.port1.start();\n },\n close: () => {\n channel.port1.close();\n },\n addEventListener: (...args) => channel.port1.addEventListener(...args),\n };\n};\n\n/**\n *\n * @param receiverEventPreprocessor {?Function}\n * @param senderEventPreprocessor {?Function}\n * @extends WorkerMessenger\n * @constructor\n */\nclass ServiceWorkerDispatcher extends AbstractDispatcher {\n constructor(receiverEventPreprocessor, senderEventPreprocessor) {\n super(\n WorkerType.SERVICE_WORKER,\n createTarget(),\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n\n this.start();\n\n dispatchWorkerErrorEvent(this.target, this.receiver);\n }\n\n start() {\n return this.target.start();\n }\n\n close() {\n return this.target.close();\n }\n\n onReady(handler) {\n return navigator.serviceWorker.ready.then(handler);\n }\n\n get ready() {\n return navigator.serviceWorker.ready;\n }\n}\n\nexport default ServiceWorkerDispatcher;\n","import WorkerType from '../WorkerType';\nimport AbstractDispatcher from '../AbstractDispatcher';\n\n/**\n * @param target {MessagePort}\n * @param receiverEventPreprocessor {?Function}\n * @param senderEventPreprocessor {?Function}\n * @extends MessagePortDispatcher\n * @constructor\n */\nclass ServiceClientDispatcher extends AbstractDispatcher {\n constructor(target, receiverEventPreprocessor, senderEventPreprocessor) {\n super(\n WorkerType.SERVICE_WORKER_CLIENT,\n target,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n }\n\n start() {\n this.target.start();\n }\n\n close() {\n this.target.close();\n }\n}\n\nexport default ServiceClientDispatcher;\n","/* eslint-disable no-restricted-globals */\nimport { createEventDispatcher } from '@actualwave/event-dispatcher';\nimport { parseMessagePortEvent } from '@actualwave/messageport-dispatcher';\nimport WorkerType from '../WorkerType';\nimport WorkerEvent, {\n NativeEventType,\n dispatchWorkerErrorEvent,\n} from '../WorkerEvent';\nimport ServiceClientDispatcher from './ClientDispatcher';\n\n/**\n * Read-only interface, mainly will listen to \"connect\" event.\n * You should listen to WorkerEvent.CONNECT to intercept client\n * instance to be able to communicate.\n * @param worker\n * @param receiverEventPreprocessor {?Function}\n * @constructor\n */\nclass ServiceServerDispatcher {\n constructor(\n target = self,\n receiverEventPreprocessor,\n clientReceiverEventPreprocessor,\n clientSenderEventPreprocessor,\n ) {\n this.type = WorkerType.SERVICE_WORKER_SERVER;\n this.target = target;\n\n this.clientFactory = (port) => {\n if (!port) {\n return null;\n }\n\n return new ServiceClientDispatcher(\n port,\n clientReceiverEventPreprocessor,\n clientSenderEventPreprocessor,\n );\n };\n\n this.receiver = createEventDispatcher(receiverEventPreprocessor);\n\n dispatchWorkerErrorEvent(target, this.receiver);\n target.addEventListener(NativeEventType.MESSAGE, (event) => this._postMessageListener(event),\n );\n }\n\n addEventListener = (...args) => this.receiver.addEventListener(...args);\n\n hasEventListener = (...args) => this.receiver.hasEventListener(...args);\n\n removeEventListener = (...args) => this.receiver.removeEventListener(...args);\n\n removeAllEventListeners = (...args) => this.receiver.removeAllEventListeners(...args);\n\n /**\n * @private\n */\n _postMessageListener(nativeEvent) {\n const {\n data: rawMessage,\n ports: [client],\n } = nativeEvent;\n\n if (!rawMessage) {\n return;\n }\n\n const {\n event: { type: eventType, data: eventData },\n } = parseMessagePortEvent(rawMessage);\n\n const event = new WorkerEvent(\n eventType,\n eventData,\n nativeEvent,\n this.clientFactory(client),\n );\n\n this.receiver.dispatchEvent(event);\n }\n}\n\nexport default ServiceServerDispatcher;\n","/* eslint-disable no-restricted-globals */\nimport WorkerType from '../WorkerType';\nimport DedicatedWorkerDispatcher from '../DedicatedWorkerDispatcher';\nimport SharedWorkerDispatcher from '../SharedWorkerDispatcher';\nimport SharedClientDispatcher from '../sharedWorker/ClientDispatcher';\nimport SharedServerDispatcher from '../sharedWorker/ServerDispatcher';\nimport ServiceWorkerDispatcher from '../ServiceWorkerDispatcher';\nimport ServiceClientDispatcher from '../serviceWorker/ClientDispatcher';\nimport ServiceServerDispatcher from '../serviceWorker/ServerDispatcher';\n\nexport const createForDedicatedWorker = (\n target,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n) => new DedicatedWorkerDispatcher(\n target,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n);\n\nexport const createForSharedWorker = (\n target,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n) => new SharedWorkerDispatcher(\n target,\n null,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n);\n\nexport const createForServiceWorker = (\n receiverEventPreprocessor,\n senderEventPreprocessor,\n) => new ServiceWorkerDispatcher(\n receiverEventPreprocessor,\n senderEventPreprocessor,\n);\n\n/**\n *\n * @param worker {String|Worker|SharedWorker|MessagePort}\n * @param type {String}\n * @param receiverEventPreprocessor {?Function}\n * @param senderEventPreprocessor {?Function}\n * @returns {AbstractDispatcher}\n */\nexport const create = (\n target,\n type,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n) => {\n switch (type) {\n default:\n case WorkerType.DEDICATED_WORKER:\n return createForDedicatedWorker(\n target,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n case WorkerType.SHARED_WORKER:\n return createForSharedWorker(\n target,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n case WorkerType.SHARED_WORKER_SERVER:\n return new SharedServerDispatcher(target, receiverEventPreprocessor);\n case WorkerType.SHARED_WORKER_CLIENT:\n return new SharedClientDispatcher(\n target,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n case WorkerType.SERVICE_WORKER:\n return createForServiceWorker(\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n case WorkerType.SERVICE_WORKER_SERVER:\n return new ServiceServerDispatcher(target, receiverEventPreprocessor);\n case WorkerType.SERVICE_WORKER_CLIENT:\n return new ServiceClientDispatcher(\n target,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n }\n};\n\n/**\n *\n * @param receiverEventPreprocessor {?Function}\n * @param senderEventPreprocessor {?Function}\n * @returns {AbstractDispatcher}\n */\nexport const createForSelf = (\n receiverEventPreprocessor,\n senderEventPreprocessor,\n) => {\n // Only dedicated WebWorker has postMessage since they have single client\n if (typeof self.postMessage === 'function') {\n return new DedicatedWorkerDispatcher(\n self,\n receiverEventPreprocessor,\n senderEventPreprocessor,\n );\n }\n\n // Only ServiceWorker has registration object\n if (self.registration && typeof self.registration.scope === 'string') {\n return new ServiceServerDispatcher(self, receiverEventPreprocessor);\n }\n\n return new SharedServerDispatcher(self, receiverEventPreprocessor);\n};\n","import WorkerType from './WorkerType';\nimport WorkerEvent, { NativeEventType } from './WorkerEvent';\nimport DedicatedWorkerDispatcher from './DedicatedWorkerDispatcher';\nimport SharedWorkerDispatcher from './SharedWorkerDispatcher';\nimport SharedClientDispatcher from './sharedWorker/ClientDispatcher';\nimport SharedServerDispatcher from './sharedWorker/ServerDispatcher';\nimport ServiceWorkerDispatcher from './ServiceWorkerDispatcher';\nimport ServiceClientDispatcher from './serviceWorker/ClientDispatcher';\nimport ServiceServerDispatcher from './serviceWorker/ServerDispatcher';\nimport {\n create,\n createForSelf,\n createForDedicatedWorker,\n createForSharedWorker,\n createForServiceWorker,\n} from './utils/create';\n\nconst CONNECT_EVENT = WorkerEvent.CONNECT;\nconst { DEDICATED_WORKER, SHARED_WORKER, SERVICE_WORKER } = WorkerType;\n\nexport default DedicatedWorkerDispatcher;\n\nexport {\n create,\n createForSelf,\n createForDedicatedWorker,\n createForSharedWorker,\n createForServiceWorker,\n CONNECT_EVENT,\n DEDICATED_WORKER,\n SHARED_WORKER,\n SERVICE_WORKER,\n WorkerEvent,\n WorkerType,\n NativeEventType,\n SharedClientDispatcher,\n SharedServerDispatcher,\n SharedWorkerDispatcher,\n ServiceWorkerDispatcher,\n ServiceClientDispatcher,\n ServiceServerDispatcher,\n DedicatedWorkerDispatcher,\n};\n"],"names":["WorkerType","DEDICATED_WORKER","SHARED_WORKER","SHARED_WORKER_SERVER","SHARED_WORKER_CLIENT","SERVICE_WORKER","SERVICE_WORKER_SERVER","SERVICE_WORKER_CLIENT","require$$0","NativeEventType","CONNECT","MESSAGE","ERROR","MESSAGEERROR","LANGUAGECHANGE","ONLINE","OFFLINE","INSTALL","ACTIVATE","FETCH","SYNC","PUSH","WorkerEvent","Event","constructor","type","data","nativeEvent","client","getWorkerEventType","dispatchWorkerEvent","source","target","eventType","handler","event","hasEventListener","dispatchEvent","addEventListener","dispatchWorkerEvents","dispatchWorkerErrorEvent","AbstractDispatcher","MessagePortDispatcher","receiverEventPreprocessor","senderEventPreprocessor","targetOrigin","transferList","postMessage","getTarget","worker","self","isObject","Worker","String","DedicatedWorkerDispatcher","receiver","terminate","name","SharedWorker","SharedWorkerDispatcher","port","start","close","SharedClientDispatcher","SharedServerDispatcher","clientReceiverEventPreprocessor","clientSenderEventPreprocessor","clientFactory","createEventDispatcher","handleConnect","args","removeEventListener","removeAllEventListeners","ports","getServiceWorker","navigator","serviceWorker","ready","registration","getRegistration","active","createTarget","channel","MessageChannel","neutered","message","port2","onmessage","port1","ServiceWorkerDispatcher","onReady","then","ServiceClientDispatcher","ServiceServerDispatcher","_postMessageListener","rawMessage","eventData","parseMessagePortEvent","createForDedicatedWorker","createForSharedWorker","createForServiceWorker","create","createForSelf","scope","CONNECT_EVENT"],"mappings":"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"}