UNPKG

matrix-react-sdk

Version:
81 lines (78 loc) 10.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.EchoContext = exports.ContextTransactionState = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _EchoTransaction = require("./EchoTransaction"); var _arrays = require("../../utils/arrays"); var _Whenable = require("../../utils/Whenable"); /* Copyright 2024 New Vector Ltd. Copyright 2020 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ let ContextTransactionState = exports.ContextTransactionState = /*#__PURE__*/function (ContextTransactionState) { ContextTransactionState[ContextTransactionState["NotStarted"] = 0] = "NotStarted"; ContextTransactionState[ContextTransactionState["PendingErrors"] = 1] = "PendingErrors"; ContextTransactionState[ContextTransactionState["AllSuccessful"] = 2] = "AllSuccessful"; return ContextTransactionState; }({}); class EchoContext extends _Whenable.Whenable { constructor(...args) { super(...args); (0, _defineProperty2.default)(this, "_transactions", []); (0, _defineProperty2.default)(this, "_state", ContextTransactionState.NotStarted); (0, _defineProperty2.default)(this, "checkTransactions", () => { let status = ContextTransactionState.AllSuccessful; for (const txn of this.transactions) { if (txn.status === _EchoTransaction.TransactionStatus.Error || txn.didPreviouslyFail) { status = ContextTransactionState.PendingErrors; break; } else if (txn.status === _EchoTransaction.TransactionStatus.Pending) { status = ContextTransactionState.NotStarted; // no break as we might hit something which broke } } this._state = status; this.notifyCondition(status); }); } get transactions() { return (0, _arrays.arrayFastClone)(this._transactions); } get state() { return this._state; } get firstFailedTime() { const failedTxn = this.transactions.find(t => t.didPreviouslyFail || t.status === _EchoTransaction.TransactionStatus.Error); if (failedTxn) return failedTxn.startTime; return null; } disownTransaction(txn) { const idx = this._transactions.indexOf(txn); if (idx >= 0) this._transactions.splice(idx, 1); txn.destroy(); this.checkTransactions(); } beginTransaction(auditName, runFn) { const txn = new _EchoTransaction.EchoTransaction(auditName, runFn); this._transactions.push(txn); txn.whenAnything(this.checkTransactions); // We have no intent to call the transaction again if it succeeds (in fact, it'll // be really angry at us if we do), so call that the end of the road for the events. txn.when(_EchoTransaction.TransactionStatus.Success, () => txn.destroy()); return txn; } destroy() { for (const txn of this.transactions) { txn.destroy(); } this._transactions = []; super.destroy(); } } exports.EchoContext = EchoContext; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRWNob1RyYW5zYWN0aW9uIiwicmVxdWlyZSIsIl9hcnJheXMiLCJfV2hlbmFibGUiLCJDb250ZXh0VHJhbnNhY3Rpb25TdGF0ZSIsImV4cG9ydHMiLCJFY2hvQ29udGV4dCIsIldoZW5hYmxlIiwiY29uc3RydWN0b3IiLCJhcmdzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJOb3RTdGFydGVkIiwic3RhdHVzIiwiQWxsU3VjY2Vzc2Z1bCIsInR4biIsInRyYW5zYWN0aW9ucyIsIlRyYW5zYWN0aW9uU3RhdHVzIiwiRXJyb3IiLCJkaWRQcmV2aW91c2x5RmFpbCIsIlBlbmRpbmdFcnJvcnMiLCJQZW5kaW5nIiwiX3N0YXRlIiwibm90aWZ5Q29uZGl0aW9uIiwiYXJyYXlGYXN0Q2xvbmUiLCJfdHJhbnNhY3Rpb25zIiwic3RhdGUiLCJmaXJzdEZhaWxlZFRpbWUiLCJmYWlsZWRUeG4iLCJmaW5kIiwidCIsInN0YXJ0VGltZSIsImRpc293blRyYW5zYWN0aW9uIiwiaWR4IiwiaW5kZXhPZiIsInNwbGljZSIsImRlc3Ryb3kiLCJjaGVja1RyYW5zYWN0aW9ucyIsImJlZ2luVHJhbnNhY3Rpb24iLCJhdWRpdE5hbWUiLCJydW5GbiIsIkVjaG9UcmFuc2FjdGlvbiIsInB1c2giLCJ3aGVuQW55dGhpbmciLCJ3aGVuIiwiU3VjY2VzcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZXMvbG9jYWwtZWNoby9FY2hvQ29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBFY2hvVHJhbnNhY3Rpb24sIFJ1bkZuLCBUcmFuc2FjdGlvblN0YXR1cyB9IGZyb20gXCIuL0VjaG9UcmFuc2FjdGlvblwiO1xuaW1wb3J0IHsgYXJyYXlGYXN0Q2xvbmUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvYXJyYXlzXCI7XG5pbXBvcnQgeyBJRGVzdHJveWFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvSURlc3Ryb3lhYmxlXCI7XG5pbXBvcnQgeyBXaGVuYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy9XaGVuYWJsZVwiO1xuXG5leHBvcnQgZW51bSBDb250ZXh0VHJhbnNhY3Rpb25TdGF0ZSB7XG4gICAgTm90U3RhcnRlZCxcbiAgICBQZW5kaW5nRXJyb3JzLFxuICAgIEFsbFN1Y2Nlc3NmdWwsXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFY2hvQ29udGV4dCBleHRlbmRzIFdoZW5hYmxlPENvbnRleHRUcmFuc2FjdGlvblN0YXRlPiBpbXBsZW1lbnRzIElEZXN0cm95YWJsZSB7XG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25zOiBFY2hvVHJhbnNhY3Rpb25bXSA9IFtdO1xuICAgIHByaXZhdGUgX3N0YXRlID0gQ29udGV4dFRyYW5zYWN0aW9uU3RhdGUuTm90U3RhcnRlZDtcblxuICAgIHB1YmxpYyBnZXQgdHJhbnNhY3Rpb25zKCk6IEVjaG9UcmFuc2FjdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIGFycmF5RmFzdENsb25lKHRoaXMuX3RyYW5zYWN0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdGF0ZSgpOiBDb250ZXh0VHJhbnNhY3Rpb25TdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpcnN0RmFpbGVkVGltZSgpOiBEYXRlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGZhaWxlZFR4biA9IHRoaXMudHJhbnNhY3Rpb25zLmZpbmQoKHQpID0+IHQuZGlkUHJldmlvdXNseUZhaWwgfHwgdC5zdGF0dXMgPT09IFRyYW5zYWN0aW9uU3RhdHVzLkVycm9yKTtcbiAgICAgICAgaWYgKGZhaWxlZFR4bikgcmV0dXJuIGZhaWxlZFR4bi5zdGFydFRpbWU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNvd25UcmFuc2FjdGlvbih0eG46IEVjaG9UcmFuc2FjdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl90cmFuc2FjdGlvbnMuaW5kZXhPZih0eG4pO1xuICAgICAgICBpZiAoaWR4ID49IDApIHRoaXMuX3RyYW5zYWN0aW9ucy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgdHhuLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5jaGVja1RyYW5zYWN0aW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBiZWdpblRyYW5zYWN0aW9uKGF1ZGl0TmFtZTogc3RyaW5nLCBydW5GbjogUnVuRm4pOiBFY2hvVHJhbnNhY3Rpb24ge1xuICAgICAgICBjb25zdCB0eG4gPSBuZXcgRWNob1RyYW5zYWN0aW9uKGF1ZGl0TmFtZSwgcnVuRm4pO1xuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbnMucHVzaCh0eG4pO1xuICAgICAgICB0eG4ud2hlbkFueXRoaW5nKHRoaXMuY2hlY2tUcmFuc2FjdGlvbnMpO1xuXG4gICAgICAgIC8vIFdlIGhhdmUgbm8gaW50ZW50IHRvIGNhbGwgdGhlIHRyYW5zYWN0aW9uIGFnYWluIGlmIGl0IHN1Y2NlZWRzIChpbiBmYWN0LCBpdCdsbFxuICAgICAgICAvLyBiZSByZWFsbHkgYW5ncnkgYXQgdXMgaWYgd2UgZG8pLCBzbyBjYWxsIHRoYXQgdGhlIGVuZCBvZiB0aGUgcm9hZCBmb3IgdGhlIGV2ZW50cy5cbiAgICAgICAgdHhuLndoZW4oVHJhbnNhY3Rpb25TdGF0dXMuU3VjY2VzcywgKCkgPT4gdHhuLmRlc3Ryb3koKSk7XG5cbiAgICAgICAgcmV0dXJuIHR4bjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrVHJhbnNhY3Rpb25zID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBsZXQgc3RhdHVzID0gQ29udGV4dFRyYW5zYWN0aW9uU3RhdGUuQWxsU3VjY2Vzc2Z1bDtcbiAgICAgICAgZm9yIChjb25zdCB0eG4gb2YgdGhpcy50cmFuc2FjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eG4uc3RhdHVzID09PSBUcmFuc2FjdGlvblN0YXR1cy5FcnJvciB8fCB0eG4uZGlkUHJldmlvdXNseUZhaWwpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMgPSBDb250ZXh0VHJhbnNhY3Rpb25TdGF0ZS5QZW5kaW5nRXJyb3JzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eG4uc3RhdHVzID09PSBUcmFuc2FjdGlvblN0YXR1cy5QZW5kaW5nKSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzID0gQ29udGV4dFRyYW5zYWN0aW9uU3RhdGUuTm90U3RhcnRlZDtcbiAgICAgICAgICAgICAgICAvLyBubyBicmVhayBhcyB3ZSBtaWdodCBoaXQgc29tZXRoaW5nIHdoaWNoIGJyb2tlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3RhdGUgPSBzdGF0dXM7XG4gICAgICAgIHRoaXMubm90aWZ5Q29uZGl0aW9uKHN0YXR1cyk7XG4gICAgfTtcblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IHR4biBvZiB0aGlzLnRyYW5zYWN0aW9ucykge1xuICAgICAgICAgICAgdHhuLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbnMgPSBbXTtcbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFRQSxJQUFBQSxnQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQSxJQWFZRyx1QkFBdUIsR0FBQUMsT0FBQSxDQUFBRCx1QkFBQSwwQkFBdkJBLHVCQUF1QjtFQUF2QkEsdUJBQXVCLENBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QixDQUF2QkEsdUJBQXVCO0VBQXZCQSx1QkFBdUIsQ0FBdkJBLHVCQUF1QjtFQUFBLE9BQXZCQSx1QkFBdUI7QUFBQTtBQU01QixNQUFlRSxXQUFXLFNBQVNDLGtCQUFRLENBQWtEO0VBQUFDLFlBQUEsR0FBQUMsSUFBQTtJQUFBLFNBQUFBLElBQUE7SUFBQSxJQUFBQyxnQkFBQSxDQUFBQyxPQUFBLHlCQUNyRCxFQUFFO0lBQUEsSUFBQUQsZ0JBQUEsQ0FBQUMsT0FBQSxrQkFDNUJQLHVCQUF1QixDQUFDUSxVQUFVO0lBQUEsSUFBQUYsZ0JBQUEsQ0FBQUMsT0FBQSw2QkFtQ3ZCLE1BQVk7TUFDcEMsSUFBSUUsTUFBTSxHQUFHVCx1QkFBdUIsQ0FBQ1UsYUFBYTtNQUNsRCxLQUFLLE1BQU1DLEdBQUcsSUFBSSxJQUFJLENBQUNDLFlBQVksRUFBRTtRQUNqQyxJQUFJRCxHQUFHLENBQUNGLE1BQU0sS0FBS0ksa0NBQWlCLENBQUNDLEtBQUssSUFBSUgsR0FBRyxDQUFDSSxpQkFBaUIsRUFBRTtVQUNqRU4sTUFBTSxHQUFHVCx1QkFBdUIsQ0FBQ2dCLGFBQWE7VUFDOUM7UUFDSixDQUFDLE1BQU0sSUFBSUwsR0FBRyxDQUFDRixNQUFNLEtBQUtJLGtDQUFpQixDQUFDSSxPQUFPLEVBQUU7VUFDakRSLE1BQU0sR0FBR1QsdUJBQXVCLENBQUNRLFVBQVU7VUFDM0M7UUFDSjtNQUNKO01BQ0EsSUFBSSxDQUFDVSxNQUFNLEdBQUdULE1BQU07TUFDcEIsSUFBSSxDQUFDVSxlQUFlLENBQUNWLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0VBQUE7RUE5Q0QsSUFBV0csWUFBWUEsQ0FBQSxFQUFzQjtJQUN6QyxPQUFPLElBQUFRLHNCQUFjLEVBQUMsSUFBSSxDQUFDQyxhQUFhLENBQUM7RUFDN0M7RUFFQSxJQUFXQyxLQUFLQSxDQUFBLEVBQTRCO0lBQ3hDLE9BQU8sSUFBSSxDQUFDSixNQUFNO0VBQ3RCO0VBRUEsSUFBV0ssZUFBZUEsQ0FBQSxFQUFnQjtJQUN0QyxNQUFNQyxTQUFTLEdBQUcsSUFBSSxDQUFDWixZQUFZLENBQUNhLElBQUksQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUNYLGlCQUFpQixJQUFJVyxDQUFDLENBQUNqQixNQUFNLEtBQUtJLGtDQUFpQixDQUFDQyxLQUFLLENBQUM7SUFDNUcsSUFBSVUsU0FBUyxFQUFFLE9BQU9BLFNBQVMsQ0FBQ0csU0FBUztJQUN6QyxPQUFPLElBQUk7RUFDZjtFQUVPQyxpQkFBaUJBLENBQUNqQixHQUFvQixFQUFRO0lBQ2pELE1BQU1rQixHQUFHLEdBQUcsSUFBSSxDQUFDUixhQUFhLENBQUNTLE9BQU8sQ0FBQ25CLEdBQUcsQ0FBQztJQUMzQyxJQUFJa0IsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUNSLGFBQWEsQ0FBQ1UsTUFBTSxDQUFDRixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQy9DbEIsR0FBRyxDQUFDcUIsT0FBTyxDQUFDLENBQUM7SUFDYixJQUFJLENBQUNDLGlCQUFpQixDQUFDLENBQUM7RUFDNUI7RUFFT0MsZ0JBQWdCQSxDQUFDQyxTQUFpQixFQUFFQyxLQUFZLEVBQW1CO0lBQ3RFLE1BQU16QixHQUFHLEdBQUcsSUFBSTBCLGdDQUFlLENBQUNGLFNBQVMsRUFBRUMsS0FBSyxDQUFDO0lBQ2pELElBQUksQ0FBQ2YsYUFBYSxDQUFDaUIsSUFBSSxDQUFDM0IsR0FBRyxDQUFDO0lBQzVCQSxHQUFHLENBQUM0QixZQUFZLENBQUMsSUFBSSxDQUFDTixpQkFBaUIsQ0FBQzs7SUFFeEM7SUFDQTtJQUNBdEIsR0FBRyxDQUFDNkIsSUFBSSxDQUFDM0Isa0NBQWlCLENBQUM0QixPQUFPLEVBQUUsTUFBTTlCLEdBQUcsQ0FBQ3FCLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFeEQsT0FBT3JCLEdBQUc7RUFDZDtFQWlCT3FCLE9BQU9BLENBQUEsRUFBUztJQUNuQixLQUFLLE1BQU1yQixHQUFHLElBQUksSUFBSSxDQUFDQyxZQUFZLEVBQUU7TUFDakNELEdBQUcsQ0FBQ3FCLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCO0lBQ0EsSUFBSSxDQUFDWCxhQUFhLEdBQUcsRUFBRTtJQUN2QixLQUFLLENBQUNXLE9BQU8sQ0FBQyxDQUFDO0VBQ25CO0FBQ0o7QUFBQy9CLE9BQUEsQ0FBQUMsV0FBQSxHQUFBQSxXQUFBIiwiaWdub3JlTGlzdCI6W119