UNPKG

error-class-utils

Version:
45 lines (26 loc) 766 B
import{isObject}from"./is_object.js"; import{validateError}from"./validate.js"; export const ensureCorrectClass=(error,newTarget)=>{ validateError(error); validateNewTarget(newTarget); const newTargetProto=newTarget.prototype; if(Object.getPrototypeOf(error)!==newTargetProto){ Object.setPrototypeOf(error,newTargetProto) } if( typeof newTargetProto.constructor==="function"&& error.constructor!==newTargetProto.constructor) { delete error.constructor } }; const validateNewTarget=(newTarget)=>{ if(newTarget===undefined){ throw new TypeError( "This must be called directly inside the class's constructor." ) } if(typeof newTarget!=="function"||!isObject(newTarget.prototype)){ throw new TypeError("The second argument must be `new.target`.") } };