@naturalcycles/js-lib
Version:
Standard library for universal (browser + Node.js) javascript
23 lines (22 loc) • 945 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports._Timeout = _Timeout;
const assert_1 = require("../error/assert");
const pTimeout_1 = require("../promise/pTimeout");
const decorator_util_1 = require("./decorator.util");
// eslint-disable-next-line @typescript-eslint/naming-convention
function _Timeout(opt) {
return (target, key, descriptor) => {
(0, assert_1._assert)(typeof descriptor.value === 'function', '@_Timeout can be applied only to methods');
if (!opt.timeout)
return descriptor;
const originalFn = descriptor.value;
const keyStr = String(key);
descriptor.value = async function (...args) {
const ctx = this;
opt.name ||= (0, decorator_util_1._getMethodSignature)(ctx, keyStr);
return await (0, pTimeout_1.pTimeout)(() => originalFn.apply(this, args), opt);
};
return descriptor;
};
}