UNPKG

@intuitionrobotics/thunderstorm

Version:
74 lines 3.63 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Slack_ServerApiError = exports.Slack_ServerApiError_Class = exports.SlackModule = exports.SlackModule_Class = void 0; const ts_common_1 = require("@intuitionrobotics/ts-common"); const web_api_1 = require("@slack/web-api"); class SlackModule_Class extends ts_common_1.Module { constructor() { super("SlackModule"); this.messageMap = {}; } init() { if (!this.config.token) return; // throw new ImplementationMissingException('Missing config token for SlackModule. Please add it'); this.web = new web_api_1.WebClient(this.config.token, Object.assign({ rejectRateLimitedCalls: true }, this.config.slackConfig)); } postMessage(slackMessage) { return __awaiter(this, void 0, void 0, function* () { const parameters = typeof slackMessage === 'string' ? { text: slackMessage, channel: this.config.defaultChannel } : slackMessage; const time = this.messageMap[parameters.text]; if (time && (0, ts_common_1.currentTimeMillies)() - time < (this.config.throttlingTime || ts_common_1.Minute)) return; try { return yield this.postMessageImpl(parameters); } catch (e) { this.logError(`Error while sending a message to channel: ${parameters.channel}`, e); } }); } postMessageImpl(message) { return __awaiter(this, void 0, void 0, function* () { const res = yield this.web.chat.postMessage(message); this.messageMap[message.text] = (0, ts_common_1.currentTimeMillies)(); this.logDebug(`A message was posted to channel: ${message.channel} with message id ${res.ts} which contains the message ${message.text}`); }); } } exports.SlackModule_Class = SlackModule_Class; exports.SlackModule = new SlackModule_Class(); class Slack_ServerApiError_Class extends ts_common_1.Module { constructor() { super("Slack_ServerApiError"); this.setDefaultConfig({ exclude: [], minLevel: ts_common_1.ServerErrorSeverity.Info }); } init() { } __processApplicationError(errorLevel, message) { return __awaiter(this, void 0, void 0, function* () { if (ts_common_1.ServerErrorSeverity_Ordinal.indexOf(errorLevel) < ts_common_1.ServerErrorSeverity_Ordinal.indexOf(this.config.minLevel)) return; for (const key of this.config.exclude || []) { if (message.includes(key)) return; } yield exports.SlackModule.postMessage(`\`\`\`${message}\`\`\``); }); } } exports.Slack_ServerApiError_Class = Slack_ServerApiError_Class; exports.Slack_ServerApiError = new Slack_ServerApiError_Class(); //# sourceMappingURL=SlackModule.js.map