aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/undici/lib/web/websocket/stream/websocketerror.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/undici/lib/web/websocket/stream/websocketerror.js
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/undici/lib/web/websocket/stream/websocketerror.js')
-rw-r--r--vanilla/node_modules/undici/lib/web/websocket/stream/websocketerror.js104
1 files changed, 104 insertions, 0 deletions
diff --git a/vanilla/node_modules/undici/lib/web/websocket/stream/websocketerror.js b/vanilla/node_modules/undici/lib/web/websocket/stream/websocketerror.js
new file mode 100644
index 0000000..a34c521
--- /dev/null
+++ b/vanilla/node_modules/undici/lib/web/websocket/stream/websocketerror.js
@@ -0,0 +1,104 @@
+'use strict'
+
+const { webidl } = require('../../webidl')
+const { validateCloseCodeAndReason } = require('../util')
+const { kConstruct } = require('../../../core/symbols')
+const { kEnumerableProperty } = require('../../../core/util')
+
+function createInheritableDOMException () {
+ // https://github.com/nodejs/node/issues/59677
+ class Test extends DOMException {
+ get reason () {
+ return ''
+ }
+ }
+
+ if (new Test().reason !== undefined) {
+ return DOMException
+ }
+
+ return new Proxy(DOMException, {
+ construct (target, args, newTarget) {
+ const instance = Reflect.construct(target, args, target)
+ Object.setPrototypeOf(instance, newTarget.prototype)
+ return instance
+ }
+ })
+}
+
+class WebSocketError extends createInheritableDOMException() {
+ #closeCode
+ #reason
+
+ constructor (message = '', init = undefined) {
+ message = webidl.converters.DOMString(message, 'WebSocketError', 'message')
+
+ // 1. Set this 's name to " WebSocketError ".
+ // 2. Set this 's message to message .
+ super(message, 'WebSocketError')
+
+ if (init === kConstruct) {
+ return
+ } else if (init !== null) {
+ init = webidl.converters.WebSocketCloseInfo(init)
+ }
+
+ // 3. Let code be init [" closeCode "] if it exists , or null otherwise.
+ let code = init.closeCode ?? null
+
+ // 4. Let reason be init [" reason "] if it exists , or the empty string otherwise.
+ const reason = init.reason ?? ''
+
+ // 5. Validate close code and reason with code and reason .
+ validateCloseCodeAndReason(code, reason)
+
+ // 6. If reason is non-empty, but code is not set, then set code to 1000 ("Normal Closure").
+ if (reason.length !== 0 && code === null) {
+ code = 1000
+ }
+
+ // 7. Set this 's closeCode to code .
+ this.#closeCode = code
+
+ // 8. Set this 's reason to reason .
+ this.#reason = reason
+ }
+
+ get closeCode () {
+ return this.#closeCode
+ }
+
+ get reason () {
+ return this.#reason
+ }
+
+ /**
+ * @param {string} message
+ * @param {number|null} code
+ * @param {string} reason
+ */
+ static createUnvalidatedWebSocketError (message, code, reason) {
+ const error = new WebSocketError(message, kConstruct)
+ error.#closeCode = code
+ error.#reason = reason
+ return error
+ }
+}
+
+const { createUnvalidatedWebSocketError } = WebSocketError
+delete WebSocketError.createUnvalidatedWebSocketError
+
+Object.defineProperties(WebSocketError.prototype, {
+ closeCode: kEnumerableProperty,
+ reason: kEnumerableProperty,
+ [Symbol.toStringTag]: {
+ value: 'WebSocketError',
+ writable: false,
+ enumerable: false,
+ configurable: true
+ }
+})
+
+webidl.is.WebSocketError = webidl.util.MakeTypeAssertion(WebSocketError)
+
+module.exports = { WebSocketError, createUnvalidatedWebSocketError }