]> zoso.dev Git - buffer.git/commitdiff
Remove class syntax for better babelification (#345)
authorChristopher Jeffrey (JJ) <chjjeffrey@gmail.com>
Mon, 5 Feb 2024 06:12:57 +0000 (01:12 -0500)
committerGitHub <noreply@github.com>
Mon, 5 Feb 2024 06:12:57 +0000 (17:12 +1100)
index.js

index 58f331e41f07bd4459f83673a6fd60d1b29a358d..cbe4c51ec5f1f6f46cc15ee22fad39811cc7b33f 100644 (file)
--- a/index.js
+++ b/index.js
@@ -1836,42 +1836,36 @@ Buffer.prototype.fill = function fill (val, start, end, encoding) {
 // Simplified versions from Node, changed for Buffer-only usage
 const errors = {}
 function E (sym, getMessage, Base) {
-  errors[sym] = class NodeError extends Base {
-    constructor () {
-      super()
-
-      Object.defineProperty(this, 'message', {
-        value: getMessage.apply(this, arguments),
-        writable: true,
-        configurable: true
-      })
-
-      // Add the error code to the name to include it in the stack trace.
-      this.name = `${this.name} [${sym}]`
-      // Access the stack to generate the error message including the error code
-      // from the name.
-      this.stack // eslint-disable-line no-unused-expressions
-      // Reset the name to the actual name.
-      delete this.name
+  function NodeError () {
+    const err = new Base(getMessage.apply(null, arguments))
+
+    Object.setPrototypeOf(err, NodeError.prototype)
+
+    // Node.js `err.code` properties are own/enumerable properties.
+    err.code = sym
+    // Add the error code to the name to include it in the stack trace.
+    err.name = `${err.name} [${sym}]`
+    // Remove NodeError from the stack trace.
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(err, NodeError)
     }
+    // Access the stack to generate the error message including the error code
+    // from the name.
+    err.stack // eslint-disable-line no-unused-expressions
+    // Reset the name to the actual name.
+    delete err.name
 
-    get code () {
-      return sym
-    }
+    return err
+  }
 
-    set code (value) {
-      Object.defineProperty(this, 'code', {
-        configurable: true,
-        enumerable: true,
-        value,
-        writable: true
-      })
-    }
+  Object.setPrototypeOf(NodeError.prototype, Base.prototype)
+  Object.setPrototypeOf(NodeError, Base)
 
-    toString () {
-      return `${this.name} [${sym}]: ${this.message}`
-    }
+  NodeError.prototype.toString = function toString () {
+    return `${this.name} [${sym}]: ${this.message}`
   }
+
+  errors[sym] = NodeError
 }
 
 E('ERR_BUFFER_OUT_OF_BOUNDS',