UNPKG

matrix-react-sdk

Version:
82 lines (79 loc) 12.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Command = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _RoomContext = require("../contexts/RoomContext"); var _utils = require("./utils"); var _languageHandler = require("../languageHandler"); var _PosthogAnalytics = require("../PosthogAnalytics"); var _interface = require("./interface"); /* Copyright 2024 New Vector Ltd. Copyright 2020-2023 The Matrix.org Foundation C.I.C. Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Copyright 2018 New Vector Ltd Copyright 2015, 2016 OpenMarket Ltd SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ class Command { constructor(opts) { (0, _defineProperty2.default)(this, "command", void 0); (0, _defineProperty2.default)(this, "aliases", void 0); (0, _defineProperty2.default)(this, "args", void 0); (0, _defineProperty2.default)(this, "description", void 0); (0, _defineProperty2.default)(this, "runFn", void 0); (0, _defineProperty2.default)(this, "category", void 0); (0, _defineProperty2.default)(this, "hideCompletionAfterSpace", void 0); (0, _defineProperty2.default)(this, "renderingTypes", void 0); (0, _defineProperty2.default)(this, "analyticsName", void 0); (0, _defineProperty2.default)(this, "_isEnabled", void 0); this.command = opts.command; this.aliases = opts.aliases || []; this.args = opts.args || ""; this.description = opts.description; this.runFn = opts.runFn?.bind(this); this.category = opts.category || _interface.CommandCategories.other; this.hideCompletionAfterSpace = opts.hideCompletionAfterSpace || false; this._isEnabled = opts.isEnabled; this.renderingTypes = opts.renderingTypes; this.analyticsName = opts.analyticsName; } getCommand() { return `/${this.command}`; } getCommandWithArgs() { return this.getCommand() + " " + this.args; } run(matrixClient, roomId, threadId, args) { // if it has no runFn then its an ignored/nop command (autocomplete only) e.g `/me` if (!this.runFn) { return (0, _utils.reject)(new _languageHandler.UserFriendlyError("slash_command|error_invalid_runfn")); } const renderingType = threadId ? _RoomContext.TimelineRenderingType.Thread : _RoomContext.TimelineRenderingType.Room; if (this.renderingTypes && !this.renderingTypes?.includes(renderingType)) { return (0, _utils.reject)(new _languageHandler.UserFriendlyError("slash_command|error_invalid_rendering_type", { renderingType, cause: undefined })); } if (this.analyticsName) { _PosthogAnalytics.PosthogAnalytics.instance.trackEvent({ eventName: "SlashCommand", command: this.analyticsName }); } return this.runFn(matrixClient, roomId, threadId, args); } getUsage() { return (0, _languageHandler._t)("slash_command|usage") + ": " + this.getCommandWithArgs(); } isEnabled(cli) { return this._isEnabled?.(cli) ?? true; } } exports.Command = Command; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUm9vbUNvbnRleHQiLCJyZXF1aXJlIiwiX3V0aWxzIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9Qb3N0aG9nQW5hbHl0aWNzIiwiX2ludGVyZmFjZSIsIkNvbW1hbmQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsImNvbW1hbmQiLCJhbGlhc2VzIiwiYXJncyIsImRlc2NyaXB0aW9uIiwicnVuRm4iLCJiaW5kIiwiY2F0ZWdvcnkiLCJDb21tYW5kQ2F0ZWdvcmllcyIsIm90aGVyIiwiaGlkZUNvbXBsZXRpb25BZnRlclNwYWNlIiwiX2lzRW5hYmxlZCIsImlzRW5hYmxlZCIsInJlbmRlcmluZ1R5cGVzIiwiYW5hbHl0aWNzTmFtZSIsImdldENvbW1hbmQiLCJnZXRDb21tYW5kV2l0aEFyZ3MiLCJydW4iLCJtYXRyaXhDbGllbnQiLCJyb29tSWQiLCJ0aHJlYWRJZCIsInJlamVjdCIsIlVzZXJGcmllbmRseUVycm9yIiwicmVuZGVyaW5nVHlwZSIsIlRpbWVsaW5lUmVuZGVyaW5nVHlwZSIsIlRocmVhZCIsIlJvb20iLCJpbmNsdWRlcyIsImNhdXNlIiwidW5kZWZpbmVkIiwiUG9zdGhvZ0FuYWx5dGljcyIsImluc3RhbmNlIiwidHJhY2tFdmVudCIsImV2ZW50TmFtZSIsImdldFVzYWdlIiwiX3QiLCJjbGkiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NsYXNoLWNvbW1hbmRzL2NvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjAtMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuQ29weXJpZ2h0IDIwMTkgTWljaGFlbCBUZWxhdHluc2tpIDw3dDNjaGd1eUBnbWFpbC5jb20+XG5Db3B5cmlnaHQgMjAxOCBOZXcgVmVjdG9yIEx0ZFxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgTWF0cml4Q2xpZW50IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kIGFzIFNsYXNoQ29tbWFuZEV2ZW50IH0gZnJvbSBcIkBtYXRyaXgtb3JnL2FuYWx5dGljcy1ldmVudHMvdHlwZXMvdHlwZXNjcmlwdC9TbGFzaENvbW1hbmRcIjtcblxuaW1wb3J0IHsgVGltZWxpbmVSZW5kZXJpbmdUeXBlIH0gZnJvbSBcIi4uL2NvbnRleHRzL1Jvb21Db250ZXh0XCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgX3QsIFRyYW5zbGF0aW9uS2V5LCBVc2VyRnJpZW5kbHlFcnJvciB9IGZyb20gXCIuLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCB7IFBvc3Rob2dBbmFseXRpY3MgfSBmcm9tIFwiLi4vUG9zdGhvZ0FuYWx5dGljc1wiO1xuaW1wb3J0IHsgQ29tbWFuZENhdGVnb3JpZXMsIFJ1blJlc3VsdCB9IGZyb20gXCIuL2ludGVyZmFjZVwiO1xuXG50eXBlIFJ1bkZuID0gKFxuICAgIHRoaXM6IENvbW1hbmQsXG4gICAgbWF0cml4Q2xpZW50OiBNYXRyaXhDbGllbnQsXG4gICAgcm9vbUlkOiBzdHJpbmcsXG4gICAgdGhyZWFkSWQ6IHN0cmluZyB8IG51bGwsXG4gICAgYXJncz86IHN0cmluZyxcbikgPT4gUnVuUmVzdWx0O1xuXG5pbnRlcmZhY2UgSUNvbW1hbmRPcHRzIHtcbiAgICBjb21tYW5kOiBzdHJpbmc7XG4gICAgYWxpYXNlcz86IHN0cmluZ1tdO1xuICAgIGFyZ3M/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IFRyYW5zbGF0aW9uS2V5O1xuICAgIGFuYWx5dGljc05hbWU/OiBTbGFzaENvbW1hbmRFdmVudFtcImNvbW1hbmRcIl07XG4gICAgcnVuRm4/OiBSdW5GbjtcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgIGhpZGVDb21wbGV0aW9uQWZ0ZXJTcGFjZT86IGJvb2xlYW47XG4gICAgaXNFbmFibGVkPyhtYXRyaXhDbGllbnQ6IE1hdHJpeENsaWVudCB8IG51bGwpOiBib29sZWFuO1xuICAgIHJlbmRlcmluZ1R5cGVzPzogVGltZWxpbmVSZW5kZXJpbmdUeXBlW107XG59XG5cbmV4cG9ydCBjbGFzcyBDb21tYW5kIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBhbGlhc2VzOiBzdHJpbmdbXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYXJncz86IHN0cmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb246IFRyYW5zbGF0aW9uS2V5O1xuICAgIHB1YmxpYyByZWFkb25seSBydW5Gbj86IFJ1bkZuO1xuICAgIHB1YmxpYyByZWFkb25seSBjYXRlZ29yeTogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBoaWRlQ29tcGxldGlvbkFmdGVyU3BhY2U6IGJvb2xlYW47XG4gICAgcHVibGljIHJlYWRvbmx5IHJlbmRlcmluZ1R5cGVzPzogVGltZWxpbmVSZW5kZXJpbmdUeXBlW107XG4gICAgcHVibGljIHJlYWRvbmx5IGFuYWx5dGljc05hbWU/OiBTbGFzaENvbW1hbmRFdmVudFtcImNvbW1hbmRcIl07XG4gICAgcHJpdmF0ZSByZWFkb25seSBfaXNFbmFibGVkPzogKG1hdHJpeENsaWVudDogTWF0cml4Q2xpZW50IHwgbnVsbCkgPT4gYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRzOiBJQ29tbWFuZE9wdHMpIHtcbiAgICAgICAgdGhpcy5jb21tYW5kID0gb3B0cy5jb21tYW5kO1xuICAgICAgICB0aGlzLmFsaWFzZXMgPSBvcHRzLmFsaWFzZXMgfHwgW107XG4gICAgICAgIHRoaXMuYXJncyA9IG9wdHMuYXJncyB8fCBcIlwiO1xuICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gb3B0cy5kZXNjcmlwdGlvbjtcbiAgICAgICAgdGhpcy5ydW5GbiA9IG9wdHMucnVuRm4/LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBvcHRzLmNhdGVnb3J5IHx8IENvbW1hbmRDYXRlZ29yaWVzLm90aGVyO1xuICAgICAgICB0aGlzLmhpZGVDb21wbGV0aW9uQWZ0ZXJTcGFjZSA9IG9wdHMuaGlkZUNvbXBsZXRpb25BZnRlclNwYWNlIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc0VuYWJsZWQgPSBvcHRzLmlzRW5hYmxlZDtcbiAgICAgICAgdGhpcy5yZW5kZXJpbmdUeXBlcyA9IG9wdHMucmVuZGVyaW5nVHlwZXM7XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzTmFtZSA9IG9wdHMuYW5hbHl0aWNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29tbWFuZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYC8ke3RoaXMuY29tbWFuZH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb21tYW5kV2l0aEFyZ3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29tbWFuZCgpICsgXCIgXCIgKyB0aGlzLmFyZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bihtYXRyaXhDbGllbnQ6IE1hdHJpeENsaWVudCwgcm9vbUlkOiBzdHJpbmcsIHRocmVhZElkOiBzdHJpbmcgfCBudWxsLCBhcmdzPzogc3RyaW5nKTogUnVuUmVzdWx0IHtcbiAgICAgICAgLy8gaWYgaXQgaGFzIG5vIHJ1bkZuIHRoZW4gaXRzIGFuIGlnbm9yZWQvbm9wIGNvbW1hbmQgKGF1dG9jb21wbGV0ZSBvbmx5KSBlLmcgYC9tZWBcbiAgICAgICAgaWYgKCF0aGlzLnJ1bkZuKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBVc2VyRnJpZW5kbHlFcnJvcihcInNsYXNoX2NvbW1hbmR8ZXJyb3JfaW52YWxpZF9ydW5mblwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZW5kZXJpbmdUeXBlID0gdGhyZWFkSWQgPyBUaW1lbGluZVJlbmRlcmluZ1R5cGUuVGhyZWFkIDogVGltZWxpbmVSZW5kZXJpbmdUeXBlLlJvb207XG4gICAgICAgIGlmICh0aGlzLnJlbmRlcmluZ1R5cGVzICYmICF0aGlzLnJlbmRlcmluZ1R5cGVzPy5pbmNsdWRlcyhyZW5kZXJpbmdUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChcbiAgICAgICAgICAgICAgICBuZXcgVXNlckZyaWVuZGx5RXJyb3IoXCJzbGFzaF9jb21tYW5kfGVycm9yX2ludmFsaWRfcmVuZGVyaW5nX3R5cGVcIiwge1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmdUeXBlLFxuICAgICAgICAgICAgICAgICAgICBjYXVzZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFuYWx5dGljc05hbWUpIHtcbiAgICAgICAgICAgIFBvc3Rob2dBbmFseXRpY3MuaW5zdGFuY2UudHJhY2tFdmVudDxTbGFzaENvbW1hbmRFdmVudD4oe1xuICAgICAgICAgICAgICAgIGV2ZW50TmFtZTogXCJTbGFzaENvbW1hbmRcIixcbiAgICAgICAgICAgICAgICBjb21tYW5kOiB0aGlzLmFuYWx5dGljc05hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJ1bkZuKG1hdHJpeENsaWVudCwgcm9vbUlkLCB0aHJlYWRJZCwgYXJncyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFVzYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBfdChcInNsYXNoX2NvbW1hbmR8dXNhZ2VcIikgKyBcIjogXCIgKyB0aGlzLmdldENvbW1hbmRXaXRoQXJncygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VuYWJsZWQoY2xpOiBNYXRyaXhDbGllbnQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0VuYWJsZWQ/LihjbGkpID8/IHRydWU7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWNBLElBQUFBLFlBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxpQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWdDTyxNQUFNSyxPQUFPLENBQUM7RUFZVkMsV0FBV0EsQ0FBQ0MsSUFBa0IsRUFBRTtJQUFBLElBQUFDLGdCQUFBLENBQUFDLE9BQUE7SUFBQSxJQUFBRCxnQkFBQSxDQUFBQyxPQUFBO0lBQUEsSUFBQUQsZ0JBQUEsQ0FBQUMsT0FBQTtJQUFBLElBQUFELGdCQUFBLENBQUFDLE9BQUE7SUFBQSxJQUFBRCxnQkFBQSxDQUFBQyxPQUFBO0lBQUEsSUFBQUQsZ0JBQUEsQ0FBQUMsT0FBQTtJQUFBLElBQUFELGdCQUFBLENBQUFDLE9BQUE7SUFBQSxJQUFBRCxnQkFBQSxDQUFBQyxPQUFBO0lBQUEsSUFBQUQsZ0JBQUEsQ0FBQUMsT0FBQTtJQUFBLElBQUFELGdCQUFBLENBQUFDLE9BQUE7SUFDbkMsSUFBSSxDQUFDQyxPQUFPLEdBQUdILElBQUksQ0FBQ0csT0FBTztJQUMzQixJQUFJLENBQUNDLE9BQU8sR0FBR0osSUFBSSxDQUFDSSxPQUFPLElBQUksRUFBRTtJQUNqQyxJQUFJLENBQUNDLElBQUksR0FBR0wsSUFBSSxDQUFDSyxJQUFJLElBQUksRUFBRTtJQUMzQixJQUFJLENBQUNDLFdBQVcsR0FBR04sSUFBSSxDQUFDTSxXQUFXO0lBQ25DLElBQUksQ0FBQ0MsS0FBSyxHQUFHUCxJQUFJLENBQUNPLEtBQUssRUFBRUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQyxJQUFJLENBQUNDLFFBQVEsR0FBR1QsSUFBSSxDQUFDUyxRQUFRLElBQUlDLDRCQUFpQixDQUFDQyxLQUFLO0lBQ3hELElBQUksQ0FBQ0Msd0JBQXdCLEdBQUdaLElBQUksQ0FBQ1ksd0JBQXdCLElBQUksS0FBSztJQUN0RSxJQUFJLENBQUNDLFVBQVUsR0FBR2IsSUFBSSxDQUFDYyxTQUFTO0lBQ2hDLElBQUksQ0FBQ0MsY0FBYyxHQUFHZixJQUFJLENBQUNlLGNBQWM7SUFDekMsSUFBSSxDQUFDQyxhQUFhLEdBQUdoQixJQUFJLENBQUNnQixhQUFhO0VBQzNDO0VBRU9DLFVBQVVBLENBQUEsRUFBVztJQUN4QixPQUFPLElBQUksSUFBSSxDQUFDZCxPQUFPLEVBQUU7RUFDN0I7RUFFT2Usa0JBQWtCQSxDQUFBLEVBQVc7SUFDaEMsT0FBTyxJQUFJLENBQUNELFVBQVUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQ1osSUFBSTtFQUM5QztFQUVPYyxHQUFHQSxDQUFDQyxZQUEwQixFQUFFQyxNQUFjLEVBQUVDLFFBQXVCLEVBQUVqQixJQUFhLEVBQWE7SUFDdEc7SUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDRSxLQUFLLEVBQUU7TUFDYixPQUFPLElBQUFnQixhQUFNLEVBQUMsSUFBSUMsa0NBQWlCLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUM3RTtJQUVBLE1BQU1DLGFBQWEsR0FBR0gsUUFBUSxHQUFHSSxrQ0FBcUIsQ0FBQ0MsTUFBTSxHQUFHRCxrQ0FBcUIsQ0FBQ0UsSUFBSTtJQUMxRixJQUFJLElBQUksQ0FBQ2IsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDQSxjQUFjLEVBQUVjLFFBQVEsQ0FBQ0osYUFBYSxDQUFDLEVBQUU7TUFDdEUsT0FBTyxJQUFBRixhQUFNLEVBQ1QsSUFBSUMsa0NBQWlCLENBQUMsNENBQTRDLEVBQUU7UUFDaEVDLGFBQWE7UUFDYkssS0FBSyxFQUFFQztNQUNYLENBQUMsQ0FDTCxDQUFDO0lBQ0w7SUFFQSxJQUFJLElBQUksQ0FBQ2YsYUFBYSxFQUFFO01BQ3BCZ0Isa0NBQWdCLENBQUNDLFFBQVEsQ0FBQ0MsVUFBVSxDQUFvQjtRQUNwREMsU0FBUyxFQUFFLGNBQWM7UUFDekJoQyxPQUFPLEVBQUUsSUFBSSxDQUFDYTtNQUNsQixDQUFDLENBQUM7SUFDTjtJQUVBLE9BQU8sSUFBSSxDQUFDVCxLQUFLLENBQUNhLFlBQVksRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVqQixJQUFJLENBQUM7RUFDM0Q7RUFFTytCLFFBQVFBLENBQUEsRUFBVztJQUN0QixPQUFPLElBQUFDLG1CQUFFLEVBQUMscUJBQXFCLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDbkIsa0JBQWtCLENBQUMsQ0FBQztFQUN2RTtFQUVPSixTQUFTQSxDQUFDd0IsR0FBd0IsRUFBVztJQUNoRCxPQUFPLElBQUksQ0FBQ3pCLFVBQVUsR0FBR3lCLEdBQUcsQ0FBQyxJQUFJLElBQUk7RUFDekM7QUFDSjtBQUFDQyxPQUFBLENBQUF6QyxPQUFBLEdBQUFBLE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=