@solarity/hardhat-migrate
Version:
The simplest way to deploy smart contracts
45 lines • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.catchError = catchError;
const errors_1 = require("../errors");
function catchError(target, propertyName, descriptor) {
// Method decorator
if (descriptor) {
_generateDescriptor(propertyName, descriptor);
}
// Class decorator
else {
for (const propertyName of Reflect.ownKeys(target.prototype).filter((prop) => prop !== "constructor")) {
const desc = Object.getOwnPropertyDescriptor(target.prototype, propertyName);
const isMethod = desc.value instanceof Function;
if (!isMethod)
continue;
Object.defineProperty(target.prototype, propertyName, _generateDescriptor(`${target.prototype.constructor.name}.${propertyName.toString()}`, desc));
}
}
}
function _generateDescriptor(propertyName, descriptor) {
const method = descriptor.value;
descriptor.value = function ___ErrorCatcher(...args) {
try {
const result = method.apply(this, args);
// Check if the method is asynchronous
if (result && result instanceof Promise) {
// Return promise
return result.catch((e) => {
_handleError(propertyName, e);
});
}
// Return actual result
return result;
}
catch (e) {
_handleError(propertyName, e);
}
};
return descriptor;
}
function _handleError(propertyName, error) {
throw new errors_1.MigrateError(`${propertyName}(): ${error.message ?? error}`, { cause: error });
}
//# sourceMappingURL=error.js.map