{"ast":null,"code":"'use strict';\n\nconst {\n kForOnEventAttribute,\n kListener\n} = require('./constants');\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\nObject.defineProperty(Event.prototype, 'target', {\n enumerable: true\n});\nObject.defineProperty(Event.prototype, 'type', {\n enumerable: true\n});\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\nObject.defineProperty(CloseEvent.prototype, 'code', {\n enumerable: true\n});\nObject.defineProperty(CloseEvent.prototype, 'reason', {\n enumerable: true\n});\nObject.defineProperty(CloseEvent.prototype, 'wasClean', {\n enumerable: true\n});\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\nObject.defineProperty(ErrorEvent.prototype, 'error', {\n enumerable: true\n});\nObject.defineProperty(ErrorEvent.prototype, 'message', {\n enumerable: true\n});\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\nObject.defineProperty(MessageEvent.prototype, 'data', {\n enumerable: true\n});\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (!options[kForOnEventAttribute] && listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n return;\n }\n }\n let wrapper;\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}","map":{"version":3,"names":["kForOnEventAttribute","kListener","require","kCode","Symbol","kData","kError","kMessage","kReason","kTarget","kType","kWasClean","Event","constructor","type","target","Object","defineProperty","prototype","enumerable","CloseEvent","options","code","undefined","reason","wasClean","ErrorEvent","error","message","MessageEvent","data","EventTarget","addEventListener","handler","listener","listeners","wrapper","onMessage","isBinary","event","toString","callListener","onClose","_closeFrameReceived","_closeFrameSent","onError","onOpen","once","on","removeEventListener","removeListener","module","exports","thisArg","handleEvent","call"],"sources":["/Users/shoofle/Projects/the-forest/node_modules/@libsql/isomorphic-ws/node_modules/ws/lib/event-target.js"],"sourcesContent":["'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}