error-cause
Version:
An ES-spec-compliant shim/polyfill/replacement for the `.cause` property on all Error types that works as far down as ES3
35 lines (27 loc) • 729 B
JavaScript
var define = require('define-properties');
var globalThis = require('globalthis')();
var setProto = require('set-proto');
var trueThunk = function () {
return true;
};
module.exports = function shimHelper(name, getPolyfill) {
return function shim() {
var original = globalThis[name];
if (original) {
delete original.prototype.cause; // fix a bug in node v16.9's v8 (https://bugs.chromium.org/p/v8/issues/detail?id=12006)
}
var polyfill = getPolyfill();
if (original !== polyfill) {
var o = {};
o[name] = polyfill;
var p = {};
p[name] = trueThunk;
define(globalThis, o, p);
if (setProto && name !== 'Error') {
setProto(polyfill, Error);
}
}
return polyfill;
};
};
;