UNPKG

matrix-react-sdk

Version:
58 lines (52 loc) 4.45 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.LazyValue = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); /* Copyright 2024 New Vector Ltd. Copyright 2021 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. */ /** * Utility class for lazily getting a variable. */ class LazyValue { constructor(getFn) { (0, _defineProperty2.default)(this, "val", void 0); (0, _defineProperty2.default)(this, "prom", void 0); (0, _defineProperty2.default)(this, "done", false); this.getFn = getFn; } /** * Whether or not a cached value is present. */ get present() { // we use a tracking variable just in case the final value is falsy return this.done; } /** * Gets the value without invoking a get. May be undefined until the * value is fetched properly. */ get cachedValue() { return this.val; } /** * Gets a promise which resolves to the value, eventually. */ get value() { if (this.prom) return this.prom; this.prom = this.getFn(); return this.prom.then(v => { this.val = v; this.done = true; return v; }); } } exports.LazyValue = LazyValue; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMYXp5VmFsdWUiLCJjb25zdHJ1Y3RvciIsImdldEZuIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJwcmVzZW50IiwiZG9uZSIsImNhY2hlZFZhbHVlIiwidmFsIiwidmFsdWUiLCJwcm9tIiwidGhlbiIsInYiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL0xhenlWYWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG4vKipcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIGxhemlseSBnZXR0aW5nIGEgdmFyaWFibGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBMYXp5VmFsdWU8VD4ge1xuICAgIHByaXZhdGUgdmFsPzogVDtcbiAgICBwcml2YXRlIHByb20/OiBQcm9taXNlPFQ+O1xuICAgIHByaXZhdGUgZG9uZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZ2V0Rm46ICgpID0+IFByb21pc2U8VD4pIHt9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhIGNhY2hlZCB2YWx1ZSBpcyBwcmVzZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJlc2VudCgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gd2UgdXNlIGEgdHJhY2tpbmcgdmFyaWFibGUganVzdCBpbiBjYXNlIHRoZSBmaW5hbCB2YWx1ZSBpcyBmYWxzeVxuICAgICAgICByZXR1cm4gdGhpcy5kb25lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIHdpdGhvdXQgaW52b2tpbmcgYSBnZXQuIE1heSBiZSB1bmRlZmluZWQgdW50aWwgdGhlXG4gICAgICogdmFsdWUgaXMgZmV0Y2hlZCBwcm9wZXJseS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNhY2hlZFZhbHVlKCk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy52YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgdG8gdGhlIHZhbHVlLCBldmVudHVhbGx5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmICh0aGlzLnByb20pIHJldHVybiB0aGlzLnByb207XG4gICAgICAgIHRoaXMucHJvbSA9IHRoaXMuZ2V0Rm4oKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9tLnRoZW4oKHYpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsID0gdjtcbiAgICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPLE1BQU1BLFNBQVMsQ0FBSTtFQUtmQyxXQUFXQSxDQUFTQyxLQUF1QixFQUFFO0lBQUEsSUFBQUMsZ0JBQUEsQ0FBQUMsT0FBQTtJQUFBLElBQUFELGdCQUFBLENBQUFDLE9BQUE7SUFBQSxJQUFBRCxnQkFBQSxDQUFBQyxPQUFBLGdCQUZyQyxLQUFLO0lBQUEsS0FFT0YsS0FBdUIsR0FBdkJBLEtBQXVCO0VBQUc7O0VBRXJEO0FBQ0o7QUFDQTtFQUNJLElBQVdHLE9BQU9BLENBQUEsRUFBWTtJQUMxQjtJQUNBLE9BQU8sSUFBSSxDQUFDQyxJQUFJO0VBQ3BCOztFQUVBO0FBQ0o7QUFDQTtBQUNBO0VBQ0ksSUFBV0MsV0FBV0EsQ0FBQSxFQUFrQjtJQUNwQyxPQUFPLElBQUksQ0FBQ0MsR0FBRztFQUNuQjs7RUFFQTtBQUNKO0FBQ0E7RUFDSSxJQUFXQyxLQUFLQSxDQUFBLEVBQWU7SUFDM0IsSUFBSSxJQUFJLENBQUNDLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQ0EsSUFBSTtJQUMvQixJQUFJLENBQUNBLElBQUksR0FBRyxJQUFJLENBQUNSLEtBQUssQ0FBQyxDQUFDO0lBRXhCLE9BQU8sSUFBSSxDQUFDUSxJQUFJLENBQUNDLElBQUksQ0FBRUMsQ0FBQyxJQUFLO01BQ3pCLElBQUksQ0FBQ0osR0FBRyxHQUFHSSxDQUFDO01BQ1osSUFBSSxDQUFDTixJQUFJLEdBQUcsSUFBSTtNQUNoQixPQUFPTSxDQUFDO0lBQ1osQ0FBQyxDQUFDO0VBQ047QUFDSjtBQUFDQyxPQUFBLENBQUFiLFNBQUEsR0FBQUEsU0FBQSIsImlnbm9yZUxpc3QiOltdfQ==