diff options
Diffstat (limited to 'lib/internal/error-serdes.js')
-rw-r--r-- | lib/internal/error-serdes.js | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/lib/internal/error-serdes.js b/lib/internal/error-serdes.js index 8647e3b78d..744098af53 100644 --- a/lib/internal/error-serdes.js +++ b/lib/internal/error-serdes.js @@ -2,10 +2,16 @@ const Buffer = require('buffer').Buffer; const { - ArrayPrototype, - FunctionPrototype, - Object, - ObjectPrototype, + ArrayPrototypeForEach, + FunctionPrototypeCall, + ObjectAssign, + ObjectCreate, + ObjectDefineProperty, + ObjectGetOwnPropertyDescriptor, + ObjectGetOwnPropertyNames, + ObjectGetPrototypeOf, + ObjectKeys, + ObjectPrototypeToString, SafeSet, } = primordials; @@ -16,24 +22,24 @@ const kInspectedError = 2; const errors = { Error, TypeError, RangeError, URIError, SyntaxError, ReferenceError, EvalError }; -const errorConstructorNames = new SafeSet(Object.keys(errors)); +const errorConstructorNames = new SafeSet(ObjectKeys(errors)); function TryGetAllProperties(object, target = object) { - const all = Object.create(null); + const all = ObjectCreate(null); if (object === null) return all; - Object.assign(all, - TryGetAllProperties(Object.getPrototypeOf(object), target)); - const keys = Object.getOwnPropertyNames(object); - ArrayPrototype.forEach(keys, (key) => { + ObjectAssign(all, + TryGetAllProperties(ObjectGetPrototypeOf(object), target)); + const keys = ObjectGetOwnPropertyNames(object); + ArrayPrototypeForEach(keys, (key) => { let descriptor; try { - descriptor = Object.getOwnPropertyDescriptor(object, key); + descriptor = ObjectGetOwnPropertyDescriptor(object, key); } catch { return; } const getter = descriptor.get; if (getter && key !== '__proto__') { try { - descriptor.value = FunctionPrototype.call(getter, target); + descriptor.value = FunctionPrototypeCall(getter, target); } catch {} } if ('value' in descriptor && typeof descriptor.value !== 'function') { @@ -50,10 +56,10 @@ function GetConstructors(object) { for (var current = object; current !== null; - current = Object.getPrototypeOf(current)) { - const desc = Object.getOwnPropertyDescriptor(current, 'constructor'); + current = ObjectGetPrototypeOf(current)) { + const desc = ObjectGetOwnPropertyDescriptor(current, 'constructor'); if (desc && desc.value) { - Object.defineProperty(constructors, constructors.length, { + ObjectDefineProperty(constructors, constructors.length, { value: desc.value, enumerable: true }); } @@ -63,7 +69,7 @@ function GetConstructors(object) { } function GetName(object) { - const desc = Object.getOwnPropertyDescriptor(object, 'name'); + const desc = ObjectGetOwnPropertyDescriptor(object, 'name'); return desc && desc.value; } @@ -80,7 +86,7 @@ function serializeError(error) { if (!serialize) serialize = require('v8').serialize; try { if (typeof error === 'object' && - ObjectPrototype.toString(error) === '[object Error]') { + ObjectPrototypeToString(error) === '[object Error]') { const constructors = GetConstructors(error); for (var i = 0; i < constructors.length; i++) { const name = GetName(constructors[i]); @@ -109,7 +115,7 @@ function deserializeError(error) { case kSerializedError: const { constructor, properties } = deserialize(error.subarray(1)); const ctor = errors[constructor]; - return Object.create(ctor.prototype, properties); + return ObjectCreate(ctor.prototype, properties); case kSerializedObject: return deserialize(error.subarray(1)); case kInspectedError: |