chromium-bidi 0.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/LICENSE +201 -0
- package/README.md +245 -0
- package/package.json +58 -0
- package/src/.build/bidiMapper/mapper.js +26071 -0
- package/src/.build/bidiMapper/mapper.js.map +1 -0
- package/src/.build/bidiServer/bidiServerRunner.js +148 -0
- package/src/.build/bidiServer/bidiServerRunner.js.map +1 -0
- package/src/.build/bidiServer/cdp/cdpClient.js +122 -0
- package/src/.build/bidiServer/cdp/cdpClient.js.map +1 -0
- package/src/.build/bidiServer/cdp/cdpClient.spec.js +194 -0
- package/src/.build/bidiServer/cdp/cdpClient.spec.js.map +1 -0
- package/src/.build/bidiServer/cdp/cdpConnection.js +120 -0
- package/src/.build/bidiServer/cdp/cdpConnection.js.map +1 -0
- package/src/.build/bidiServer/cdp/cdpConnection.spec.js +154 -0
- package/src/.build/bidiServer/cdp/cdpConnection.spec.js.map +1 -0
- package/src/.build/bidiServer/cdp/cdpMessage.js +19 -0
- package/src/.build/bidiServer/cdp/cdpMessage.js.map +1 -0
- package/src/.build/bidiServer/cdp/index.js +24 -0
- package/src/.build/bidiServer/cdp/index.js.map +1 -0
- package/src/.build/bidiServer/cdp/websocketTransport.js +43 -0
- package/src/.build/bidiServer/cdp/websocketTransport.js.map +1 -0
- package/src/.build/bidiServer/index.js +95 -0
- package/src/.build/bidiServer/index.js.map +1 -0
- package/src/.build/bidiServer/mapperReader.js +28 -0
- package/src/.build/bidiServer/mapperReader.js.map +1 -0
- package/src/.build/bidiServer/mapperServer.js +137 -0
- package/src/.build/bidiServer/mapperServer.js.map +1 -0
- package/src/.build/bidiServer/tests/stubTransport.spec.js +44 -0
- package/src/.build/bidiServer/tests/stubTransport.spec.js.map +1 -0
- package/src/.build/bidiServer/utils/log.js +44 -0
- package/src/.build/bidiServer/utils/log.js.map +1 -0
- package/src/.build/bidiServer/utils/transport.js +19 -0
- package/src/.build/bidiServer/utils/transport.js.map +1 -0
- package/src/index.ts +110 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapper.js","sources":["../../utils/log.ts","../../bidiMapper/domains/context/logHelper.ts","../../bidiMapper/domains/context/logManager.ts","../../bidiMapper/domains/context/serializer.ts","../../bidiMapper/domains/context/context.ts","../../bidiMapper/domains/context/browsingContextProcessor.ts","../../bidiMapper/commandProcessor.ts","../../../node_modules/rollup-plugin-node-polyfills/polyfills/events.js","../../cdp/cdpClient.ts","../../cdp/cdpConnection.ts","../../bidiMapper/utils/bidiServer.ts","../../bidiMapper/domains/events/EventManager.ts","../../bidiMapper/mapper.ts"],"sourcesContent":[null,null,null,null,null,null,null,"'use strict';\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nexport default EventEmitter;\nexport {EventEmitter};\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) {\n this.domain = domain.active;\n }\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var needDomainExit = false;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n if (needDomainExit)\n domain.exit();\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n",null,null,null,null,null],"names":["browserProtocol.domains","jsProtocol.domains"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2021 Google LLC.
|
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.BidiServerRunner = void 0;
|
|
23
|
+
const websocket_1 = __importDefault(require("websocket"));
|
|
24
|
+
const http_1 = __importDefault(require("http"));
|
|
25
|
+
const debug_1 = __importDefault(require("debug"));
|
|
26
|
+
const debugInternal = (0, debug_1.default)('bidiServer:internal');
|
|
27
|
+
const debugSend = (0, debug_1.default)('bidiServer:SEND ►');
|
|
28
|
+
const debugRecv = (0, debug_1.default)('bidiServer:RECV ◀');
|
|
29
|
+
class BidiServerRunner {
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @param bidiPort port to start ws server on
|
|
33
|
+
* @param onNewBidiConnectionOpen delegate to be called for each new
|
|
34
|
+
* connection. `onNewBidiConnectionOpen` delegate should return another
|
|
35
|
+
* `onConnectionClose` delegate, which will be called after the connection is
|
|
36
|
+
* closed.
|
|
37
|
+
*/
|
|
38
|
+
static run(bidiPort, onNewBidiConnectionOpen) {
|
|
39
|
+
const self = this;
|
|
40
|
+
const server = http_1.default.createServer(function (request, response) {
|
|
41
|
+
debugInternal(new Date() + ' Received request for ' + request.url);
|
|
42
|
+
if (!request.url)
|
|
43
|
+
return response.end(404);
|
|
44
|
+
// https://w3c.github.io/webdriver-bidi/#transport, step 2.
|
|
45
|
+
if (request.url.startsWith('/session')) {
|
|
46
|
+
response.writeHead(200, {
|
|
47
|
+
'Content-Type': 'application/json;charset=utf-8',
|
|
48
|
+
'Cache-Control': 'no-cache',
|
|
49
|
+
});
|
|
50
|
+
response.write(JSON.stringify({
|
|
51
|
+
value: {
|
|
52
|
+
sessionId: '1',
|
|
53
|
+
capabilities: {
|
|
54
|
+
webSocketUrl: 'ws://localhost:' + bidiPort,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
response.writeHead(404);
|
|
61
|
+
}
|
|
62
|
+
response.end();
|
|
63
|
+
});
|
|
64
|
+
server.listen(bidiPort, function () {
|
|
65
|
+
console.log(`Server is listening on port ${bidiPort}`);
|
|
66
|
+
});
|
|
67
|
+
const wsServer = new websocket_1.default.server({
|
|
68
|
+
httpServer: server,
|
|
69
|
+
autoAcceptConnections: false,
|
|
70
|
+
});
|
|
71
|
+
wsServer.on('request', async function (request) {
|
|
72
|
+
debugInternal('request received');
|
|
73
|
+
const bidiServer = new BidiServer();
|
|
74
|
+
const onBidiConnectionClosed = await onNewBidiConnectionOpen(bidiServer);
|
|
75
|
+
const connection = request.accept();
|
|
76
|
+
connection.on('message', function (message) {
|
|
77
|
+
// 1. If |type| is not text, return.
|
|
78
|
+
if (message.type !== 'utf8') {
|
|
79
|
+
self._respondWithError(connection, {}, 'invalid argument', `not supported type (${message.type})`);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const plainCommandData = message.utf8Data;
|
|
83
|
+
debugRecv(plainCommandData);
|
|
84
|
+
bidiServer.onMessage(plainCommandData);
|
|
85
|
+
});
|
|
86
|
+
connection.on('close', function () {
|
|
87
|
+
debugInternal(new Date() + ' Peer ' + connection.remoteAddress + ' disconnected.');
|
|
88
|
+
onBidiConnectionClosed();
|
|
89
|
+
});
|
|
90
|
+
bidiServer.initialise((messageStr) => {
|
|
91
|
+
return self._sendClientMessageStr(messageStr, connection);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
static _sendClientMessageStr(messageStr, connection) {
|
|
96
|
+
debugSend(messageStr);
|
|
97
|
+
connection.sendUTF(messageStr);
|
|
98
|
+
return Promise.resolve();
|
|
99
|
+
}
|
|
100
|
+
static _sendClientMessage(messageObj, connection) {
|
|
101
|
+
const messageStr = JSON.stringify(messageObj);
|
|
102
|
+
return this._sendClientMessageStr(messageStr, connection);
|
|
103
|
+
}
|
|
104
|
+
static _respondWithError(connection, plainCommandData, errorCode, errorMessage) {
|
|
105
|
+
const errorResponse = this._getErrorResponse(plainCommandData, errorCode, errorMessage);
|
|
106
|
+
this._sendClientMessage(errorResponse, connection);
|
|
107
|
+
}
|
|
108
|
+
static _getErrorResponse(plainCommandData, errorCode, errorMessage) {
|
|
109
|
+
// TODO: this is bizarre per spec. We reparse the payload and
|
|
110
|
+
// extract the ID, regardless of what kind of value it was.
|
|
111
|
+
let commandId = undefined;
|
|
112
|
+
try {
|
|
113
|
+
const commandData = JSON.parse(plainCommandData);
|
|
114
|
+
if ('id' in commandData) {
|
|
115
|
+
commandId = commandData.id;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch { }
|
|
119
|
+
return {
|
|
120
|
+
id: commandId,
|
|
121
|
+
error: errorCode,
|
|
122
|
+
message: errorMessage,
|
|
123
|
+
// TODO: optional stacktrace field.
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.BidiServerRunner = BidiServerRunner;
|
|
128
|
+
class BidiServer {
|
|
129
|
+
_handlers = new Array();
|
|
130
|
+
_sendBidiMessage = null;
|
|
131
|
+
setOnMessage(handler) {
|
|
132
|
+
this._handlers.push(handler);
|
|
133
|
+
}
|
|
134
|
+
sendMessage(messageStr) {
|
|
135
|
+
if (!this._sendBidiMessage)
|
|
136
|
+
throw new Error('Bidi connection is not initialised yet');
|
|
137
|
+
return this._sendBidiMessage(messageStr);
|
|
138
|
+
}
|
|
139
|
+
close() { }
|
|
140
|
+
initialise(sendBidiMessage) {
|
|
141
|
+
this._sendBidiMessage = sendBidiMessage;
|
|
142
|
+
}
|
|
143
|
+
onMessage(messageStr) {
|
|
144
|
+
for (let handler of this._handlers)
|
|
145
|
+
handler(messageStr);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=bidiServerRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bidiServerRunner.js","sourceRoot":"","sources":["../../bidiServerRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2021 Google LLC.
|
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
21
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
22
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
23
|
+
}
|
|
24
|
+
Object.defineProperty(o, k2, desc);
|
|
25
|
+
}) : (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
o[k2] = m[k];
|
|
28
|
+
}));
|
|
29
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
30
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
31
|
+
}) : function(o, v) {
|
|
32
|
+
o["default"] = v;
|
|
33
|
+
});
|
|
34
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.createClient = void 0;
|
|
43
|
+
const events_1 = require("events");
|
|
44
|
+
const browserProtocol = __importStar(require("devtools-protocol/json/browser_protocol.json"));
|
|
45
|
+
const jsProtocol = __importStar(require("devtools-protocol/json/js_protocol.json"));
|
|
46
|
+
const mergedProtocol = [...browserProtocol.domains, ...jsProtocol.domains];
|
|
47
|
+
// Generate classes for each Domain and store constructors here.
|
|
48
|
+
const domainConstructorMap = new Map();
|
|
49
|
+
// Base class for all domains.
|
|
50
|
+
class DomainImpl extends events_1.EventEmitter {
|
|
51
|
+
_client;
|
|
52
|
+
constructor(_client) {
|
|
53
|
+
super();
|
|
54
|
+
this._client = _client;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
for (let domainInfo of mergedProtocol) {
|
|
58
|
+
// Dynamically create a subclass for this domain. Note: This class definition is scoped
|
|
59
|
+
// to this for-loop, so there will be a unique ThisDomain definition for each domain.
|
|
60
|
+
class ThisDomain extends DomainImpl {
|
|
61
|
+
constructor(_client) {
|
|
62
|
+
super(_client);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Add methods to our Domain for each available command.
|
|
66
|
+
for (let command of domainInfo.commands) {
|
|
67
|
+
Object.defineProperty(ThisDomain.prototype, command.name, {
|
|
68
|
+
value: async function (params) {
|
|
69
|
+
return await this._client.sendCommand(`${domainInfo.domain}.${command.name}`, params);
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
domainConstructorMap.set(domainInfo.domain, ThisDomain);
|
|
74
|
+
}
|
|
75
|
+
class CdpClientImpl extends events_1.EventEmitter {
|
|
76
|
+
_cdpConnection;
|
|
77
|
+
_sessionId;
|
|
78
|
+
_domains;
|
|
79
|
+
constructor(_cdpConnection, _sessionId) {
|
|
80
|
+
super();
|
|
81
|
+
this._cdpConnection = _cdpConnection;
|
|
82
|
+
this._sessionId = _sessionId;
|
|
83
|
+
this._domains = new Map();
|
|
84
|
+
for (const [domainName, ctor] of domainConstructorMap.entries()) {
|
|
85
|
+
this._domains.set(domainName, new ctor(this));
|
|
86
|
+
Object.defineProperty(this, domainName, {
|
|
87
|
+
get() {
|
|
88
|
+
return this._domains.get(domainName);
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Returns command promise, which will be resolved wth the command result after receiving CDP result.
|
|
95
|
+
* @param method Name of the CDP command to call.
|
|
96
|
+
* @param params Parameters to pass to the CDP command.
|
|
97
|
+
*/
|
|
98
|
+
sendCommand(method, params) {
|
|
99
|
+
return this._cdpConnection.sendCommand(method, params, this._sessionId);
|
|
100
|
+
}
|
|
101
|
+
_onCdpEvent(method, params) {
|
|
102
|
+
// Emit a generic "event" event from here that includes the method name. Useful as a catch-all.
|
|
103
|
+
this.emit('event', method, params);
|
|
104
|
+
// Next, get the correct domain instance and tell it to emit the strongly typed event.
|
|
105
|
+
const [domainName, eventName] = method.split('.');
|
|
106
|
+
const domain = this._domains.get(domainName);
|
|
107
|
+
if (domain) {
|
|
108
|
+
domain.emit(eventName, params);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Creates a new CDP client object that communicates with the browser using a given
|
|
114
|
+
* transport mechanism.
|
|
115
|
+
* @param transport A transport object that will be used to send and receive raw CDP messages.
|
|
116
|
+
* @returns A connected CDP client object.
|
|
117
|
+
*/
|
|
118
|
+
function createClient(cdpConnection, sessionId) {
|
|
119
|
+
return new CdpClientImpl(cdpConnection, sessionId);
|
|
120
|
+
}
|
|
121
|
+
exports.createClient = createClient;
|
|
122
|
+
//# sourceMappingURL=cdpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdpClient.js","sourceRoot":"","sources":["../../../cdp/cdpClient.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,mCAAsC;AAGtC,8FAAgF;AAChF,oFAAsE;AAetE,MAAM,cAAc,GAAG,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAE3E,gEAAgE;AAChE,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAGjC,CAAC;AAEJ,8BAA8B;AAC9B,MAAM,UAAW,SAAQ,qBAAY;IACf;IAApB,YAAoB,OAAsB;QACxC,KAAK,EAAE,CAAC;QADU,YAAO,GAAP,OAAO,CAAe;IAE1C,CAAC;CACF;AAED,KAAK,IAAI,UAAU,IAAI,cAAc,EAAE;IACrC,uFAAuF;IACvF,qFAAqF;IACrF,MAAM,UAAW,SAAQ,UAAU;QACjC,YAAY,OAAsB;YAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjB,CAAC;KACF;IAED,wDAAwD;IACxD,KAAK,IAAI,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE;QACvC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE;YACxD,KAAK,EAAE,KAAK,WAAW,MAAc;gBACnC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CACnC,GAAG,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,EACtC,MAAM,CACP,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;KACJ;IAED,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACzD;AASD,MAAM,aAAc,SAAQ,qBAAY;IAI5B;IACA;IAJF,QAAQ,CAA0B;IAE1C,YACU,cAA6B,EAC7B,UAAyB;QAEjC,KAAK,EAAE,CAAC;QAHA,mBAAc,GAAd,cAAc,CAAe;QAC7B,eAAU,GAAV,UAAU,CAAe;QAIjC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,EAAE;YAC/D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;gBACtC,GAAG;oBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACvC,CAAC;aACF,CAAC,CAAC;SACJ;IACH,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,MAAc,EAAE,MAAc;QACxC,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,MAAc;QACxC,+FAA+F;QAC/F,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAEnC,sFAAsF;QACtF,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;SAChC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAC1B,aAA4B,EAC5B,SAAwB;IAExB,OAAO,IAAI,aAAa,CAAC,aAAa,EAAE,SAAS,CAAyB,CAAC;AAC7E,CAAC;AALD,oCAKC"}
|