UNPKG

@atomist/automation-client

Version:

Atomist API for software low-level client

43 lines 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const logger_1 = require("../../util/logger"); function registerDisposable(ctx) { return (callback, description) => { if (ctx.__disposables) { ctx.__disposables.push({ how: callback, what: description }); } else { const disposables = [{ how: callback, what: description }]; ctx.__disposables = disposables; } }; } exports.registerDisposable = registerDisposable; function dispose(ctx) { return () => { if (ctx.__disposables) { function both(f1, f2) { return { how: () => f1.how() .then(() => f2.how() .catch(error => { logger_1.logger.warn("Failed to release resource %s: %s", f2.what, error); })), what: f1.what + " and " + f2.what, }; } const disposeEverything = ctx.__disposables .reduce(both, { how: () => Promise.resolve(), what: "inconceivable" }); return disposeEverything.how() .then(result => { delete ctx.__disposables; return result; }); } else { return Promise.resolve(); } }; } exports.dispose = dispose; //# sourceMappingURL=disposable.js.map