@xapp/stentor-slack 1.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/LICENSE.md +176 -0
  2. package/README.md +10 -0
  3. package/lib/Channel.d.ts +12 -0
  4. package/lib/Channel.js +43 -0
  5. package/lib/Channel.js.map +1 -0
  6. package/lib/ChatDataStore.d.ts +29 -0
  7. package/lib/ChatDataStore.js +56 -0
  8. package/lib/ChatDataStore.js.map +1 -0
  9. package/lib/Constants.d.ts +7 -0
  10. package/lib/Constants.js +8 -0
  11. package/lib/Constants.js.map +1 -0
  12. package/lib/Guards.d.ts +18 -0
  13. package/lib/Guards.js +53 -0
  14. package/lib/Guards.js.map +1 -0
  15. package/lib/SlackHandlerHook.d.ts +7 -0
  16. package/lib/SlackHandlerHook.js +232 -0
  17. package/lib/SlackHandlerHook.js.map +1 -0
  18. package/lib/Translators/TranslateRequest/helpers.d.ts +1 -0
  19. package/lib/Translators/TranslateRequest/helpers.js +2 -0
  20. package/lib/Translators/TranslateRequest/helpers.js.map +1 -0
  21. package/lib/Translators/TranslateRequest/index.d.ts +7 -0
  22. package/lib/Translators/TranslateRequest/index.js +45 -0
  23. package/lib/Translators/TranslateRequest/index.js.map +1 -0
  24. package/lib/Translators/TranslateResponse/helpers.d.ts +1 -0
  25. package/lib/Translators/TranslateResponse/helpers.js +2 -0
  26. package/lib/Translators/TranslateResponse/helpers.js.map +1 -0
  27. package/lib/Translators/TranslateResponse/index.d.ts +9 -0
  28. package/lib/Translators/TranslateResponse/index.js +179 -0
  29. package/lib/Translators/TranslateResponse/index.js.map +1 -0
  30. package/lib/Translators/index.d.ts +3 -0
  31. package/lib/Translators/index.js +20 -0
  32. package/lib/Translators/index.js.map +1 -0
  33. package/lib/Types.d.ts +3 -0
  34. package/lib/Types.js +3 -0
  35. package/lib/Types.js.map +1 -0
  36. package/lib/__tests__/Channel.test.d.ts +1 -0
  37. package/lib/__tests__/Channel.test.js +232 -0
  38. package/lib/__tests__/Channel.test.js.map +1 -0
  39. package/lib/index.d.ts +6 -0
  40. package/lib/index.js +25 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/models/AgentMessage.d.ts +2 -0
  43. package/lib/models/AgentMessage.js +4 -0
  44. package/lib/models/AgentMessage.js.map +1 -0
  45. package/lib/models/UserInfo.d.ts +4 -0
  46. package/lib/models/UserInfo.js +4 -0
  47. package/lib/models/UserInfo.js.map +1 -0
  48. package/lib/models/UserMessage.d.ts +51 -0
  49. package/lib/models/UserMessage.js +4 -0
  50. package/lib/models/UserMessage.js.map +1 -0
  51. package/lib/models/index.d.ts +4 -0
  52. package/lib/models/index.js +21 -0
  53. package/lib/models/index.js.map +1 -0
  54. package/package.json +69 -0
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.handlerHook = void 0;
13
+ /*! Copyright (c) 2022, XAPPmedia */
14
+ const stentor_constants_1 = require("stentor-constants");
15
+ const stentor_logger_1 = require("stentor-logger");
16
+ const Guards_1 = require("./Guards");
17
+ const ChatDataStore_1 = require("./ChatDataStore");
18
+ const uuid_1 = require("uuid");
19
+ // Initialize a single instance for the whole app
20
+ const web_api_1 = require("@slack/web-api");
21
+ const web = new web_api_1.WebClient();
22
+ function handlerHook(handler, payload, context, callback, services) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ // Safety wrapper
25
+ yield _handlerHook(handler, payload, context, callback, services, this.props).catch(reason => {
26
+ (0, stentor_logger_1.log)().error(`SLACK main processing hook failed: ${reason}`);
27
+ let finalResponse = { error: reason };
28
+ if (context.buildResponse) {
29
+ finalResponse = context.buildResponse(stentor_constants_1.HTTP_500_INTERNAL_SERVICE_ERROR, { error: reason });
30
+ }
31
+ // tslint:disable-next-line:no-null-keyword
32
+ callback(null, finalResponse);
33
+ });
34
+ });
35
+ }
36
+ exports.handlerHook = handlerHook;
37
+ // TODO
38
+ function lookupSlackUser(user) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ return { name: "Slacker" };
41
+ });
42
+ }
43
+ function _handlerHook(handler, payload, context, callback, _services, props) {
44
+ var _a;
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const chatDataStore = new ChatDataStore_1.ChatDataStore(_services.userStorageService);
47
+ // Webhook verification call
48
+ if ((0, Guards_1.isSlackChallenge)(payload)) {
49
+ let finalResponse = payload.challenge;
50
+ if (context.buildResponse) {
51
+ finalResponse = context.buildResponse(stentor_constants_1.HTTP_200_OK, finalResponse);
52
+ }
53
+ // tslint:disable-next-line:no-null-keyword
54
+ callback(null, finalResponse);
55
+ return;
56
+ }
57
+ const botResponses = [];
58
+ const hookCallback = (error, result) => {
59
+ botResponses.push({ error, result });
60
+ };
61
+ // Acknowledge the receipt
62
+ let finalResponse = { status: "OK" }; // I just made this up. Only the status matters.
63
+ if (context.buildResponse) {
64
+ finalResponse = context.buildResponse(stentor_constants_1.HTTP_200_OK, finalResponse);
65
+ }
66
+ // tslint:disable-next-line:no-null-keyword
67
+ callback(null, finalResponse);
68
+ // Check the webhook payload
69
+ if (!(0, Guards_1.isSlackPayload)(payload)) {
70
+ (0, stentor_logger_1.log)().error(`SLACK: (?) to Bot (full payload) was ignored: ${JSON.stringify(payload, null, 2)}`);
71
+ return;
72
+ }
73
+ let event;
74
+ // They send the "actions" (ex. button clicks) in a application/x-www-form-urlencoded form.
75
+ if ((0, Guards_1.isSlackActionPayload)(payload)) {
76
+ event = JSON.parse(payload.payload);
77
+ }
78
+ else {
79
+ event = payload;
80
+ }
81
+ if ((0, Guards_1.isSlackAction)(event)) {
82
+ if (!(0, Guards_1.isSlackButtonAction)(event)) {
83
+ (0, stentor_logger_1.log)().info(`SLACK: Bot message ignored. Only button action is accepted.`);
84
+ return;
85
+ }
86
+ }
87
+ if ((0, Guards_1.isSlackEventCallback)(event)) {
88
+ if ((0, Guards_1.isSlackBotMessageEvent)(event.event)) {
89
+ (0, stentor_logger_1.log)().info(`SLACK: Bot message ignored. Bot ID: ${event.event.bot_id}`);
90
+ return;
91
+ }
92
+ if (!(0, Guards_1.isSlackGenericMessageEvent)(event.event)) {
93
+ (0, stentor_logger_1.log)().info(`SLACK: Event ignored. Subtype: ${event.event.subtype}`);
94
+ return;
95
+ }
96
+ }
97
+ let user;
98
+ let channel;
99
+ let rawQuery;
100
+ // Events and action are different format
101
+ if ((0, Guards_1.isSlackEventCallback)(event)) {
102
+ if ((0, Guards_1.isSlackGenericMessageEvent)(event.event)) {
103
+ user = event.event.user;
104
+ channel = event.event.channel;
105
+ rawQuery = event.event.text;
106
+ }
107
+ }
108
+ else if ((0, Guards_1.isSlackAction)(event)) {
109
+ user = event.user.id;
110
+ channel = event.channel.id;
111
+ if ((0, Guards_1.isSlackButtonAction)(event)) {
112
+ if ((0, Guards_1.isSlackButton)(event.actions[0])) {
113
+ rawQuery = event.actions[0].value;
114
+ }
115
+ }
116
+ }
117
+ const userId = generateUserId(user);
118
+ // Session "management" stuff
119
+ let chatData = yield chatDataStore.get(userId);
120
+ let isNewSession = false;
121
+ if (!chatData) {
122
+ // Add a messenger visitor (user)
123
+ const userInfo = yield lookupSlackUser(user);
124
+ (0, stentor_logger_1.log)().info(`SLACK Visitor: ${userInfo === null || userInfo === void 0 ? void 0 : userInfo.name}`);
125
+ const visitorInfo = {
126
+ displayName: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.name) || "Slacker",
127
+ visitorId: user,
128
+ channelId: channel
129
+ };
130
+ const chatInfo = {
131
+ handOff: false,
132
+ userId,
133
+ sessionId: generateSessionId()
134
+ };
135
+ chatData = {
136
+ visitorInfo,
137
+ chatInfo
138
+ };
139
+ yield chatDataStore.set(userId, chatData);
140
+ isNewSession = true;
141
+ (0, stentor_logger_1.log)().info(`SLACK: new session: ${chatInfo.sessionId}`);
142
+ }
143
+ else {
144
+ // Force restart session with "safe word" (or session age)?
145
+ if (props.sessionRegex) {
146
+ if (rawQuery && props.sessionRegex.test(rawQuery)) {
147
+ chatData.chatInfo.sessionId = generateSessionId();
148
+ chatData.chatInfo.handOff = false;
149
+ yield chatDataStore.set(userId, chatData);
150
+ isNewSession = true;
151
+ (0, stentor_logger_1.log)().info(`SLACK: session was reset. safe word: ${rawQuery}, sessionId: ${chatData.chatInfo.sessionId}`);
152
+ }
153
+ }
154
+ else if (props.sessionAgeMs) {
155
+ // TODO
156
+ }
157
+ }
158
+ // Add the "synthetic" payload
159
+ event._chat = {
160
+ rawQuery,
161
+ userId,
162
+ sessionId: chatData.chatInfo.sessionId,
163
+ isNewSession
164
+ };
165
+ // Send the event to the bot
166
+ yield handler(event, context, hookCallback);
167
+ // We should have all the responses here (the callback hopefully collected them)
168
+ for (const botResponse of botResponses) {
169
+ if (!botResponse.error) {
170
+ let messageObject;
171
+ if ((_a = botResponse.result) === null || _a === void 0 ? void 0 : _a.body) {
172
+ try {
173
+ messageObject = JSON.parse(botResponse.result.body); // lambda
174
+ }
175
+ catch (e) {
176
+ (0, stentor_logger_1.log)().error(`SLACK: bad response body: ${botResponse.result.body}`);
177
+ }
178
+ }
179
+ else {
180
+ messageObject = botResponse.result; // express
181
+ }
182
+ yield sendResponse(messageObject, props.slackToken, channel).catch((reason) => {
183
+ (0, stentor_logger_1.log)().error(`SLACK: response POST failed: ${reason}`);
184
+ });
185
+ }
186
+ }
187
+ // flush chatDataStore
188
+ if (botResponses.length > 0) {
189
+ yield chatDataStore.flush();
190
+ }
191
+ });
192
+ }
193
+ function sendResponse(messageObject, token, channel) {
194
+ return __awaiter(this, void 0, void 0, function* () {
195
+ if (!messageObject) {
196
+ (0, stentor_logger_1.log)().error("SLACK: send was called with empty message!");
197
+ return;
198
+ }
199
+ (0, stentor_logger_1.log)().info(`SLACK: sending message: ${JSON.stringify(messageObject)}`);
200
+ try {
201
+ const result = yield web.chat.postMessage({
202
+ token,
203
+ text: messageObject.text,
204
+ blocks: messageObject.blocks,
205
+ channel,
206
+ retryPolicy: { retries: 0 }
207
+ });
208
+ (0, stentor_logger_1.log)().info(`SLACK response: ${JSON.stringify(result)}`);
209
+ if (!result.ok) {
210
+ (0, stentor_logger_1.log)().error(`SLACK: response failed: ${result.message}`);
211
+ }
212
+ else {
213
+ (0, stentor_logger_1.log)().info(`SLACK: response was sent successfully`);
214
+ }
215
+ }
216
+ catch (error) {
217
+ if (error.code === web_api_1.ErrorCode.PlatformError) {
218
+ (0, stentor_logger_1.log)().error(error.data);
219
+ }
220
+ else {
221
+ (0, stentor_logger_1.log)().error(error);
222
+ }
223
+ }
224
+ });
225
+ }
226
+ function generateSessionId() {
227
+ return `slack-session-${(0, uuid_1.v4)()}`;
228
+ }
229
+ function generateUserId(user) {
230
+ return `slack-user-${user}`;
231
+ }
232
+ //# sourceMappingURL=SlackHandlerHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlackHandlerHook.js","sourceRoot":"","sources":["../src/SlackHandlerHook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
@@ -0,0 +1,2 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/Translators/TranslateRequest/helpers.ts"],"names":[],"mappings":"AAAA,oCAAoC"}
@@ -0,0 +1,7 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ import { Translator } from "@xapp/patterns/lib";
3
+ import { Request } from "stentor-models";
4
+ import { UserMessage } from "../../models";
5
+ export declare class TranslateRequest extends Translator<UserMessage, Request> {
6
+ translate(requestBody: UserMessage): Request;
7
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TranslateRequest = void 0;
4
+ /*! Copyright (c) 2022, XAPPmedia */
5
+ const lib_1 = require("@xapp/patterns/lib");
6
+ const stentor_logger_1 = require("stentor-logger");
7
+ const Constants_1 = require("../../Constants");
8
+ class TranslateRequest extends lib_1.Translator {
9
+ translate(requestBody) {
10
+ // These are generated by the external hook
11
+ const isNewSession = requestBody._chat.isNewSession;
12
+ const userId = requestBody._chat.userId;
13
+ const sessionId = requestBody._chat.sessionId;
14
+ const rawQuery = requestBody._chat.rawQuery;
15
+ (0, stentor_logger_1.log)().info(`SLACK: session id - ${sessionId} - user id: ${userId} - new session: ${isNewSession}`);
16
+ let botRequest;
17
+ if (isNewSession) {
18
+ botRequest = {
19
+ type: "LAUNCH_REQUEST",
20
+ rawQuery,
21
+ sessionId,
22
+ userId,
23
+ isNewSession,
24
+ intentId: "LaunchRequest",
25
+ platform: Constants_1.SLACK_PLATFORM
26
+ };
27
+ }
28
+ else {
29
+ botRequest = {
30
+ type: "INTENT_REQUEST",
31
+ rawQuery,
32
+ sessionId,
33
+ userId,
34
+ isNewSession,
35
+ intentId: "NLU_RESULT_PLACEHOLDER",
36
+ platform: Constants_1.SLACK_PLATFORM
37
+ };
38
+ }
39
+ botRequest.channel = Constants_1.SLACK_CHANNEL;
40
+ botRequest.locale = "en-US"; // no actual locale in the payload
41
+ return botRequest;
42
+ }
43
+ }
44
+ exports.TranslateRequest = TranslateRequest;
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Translators/TranslateRequest/index.ts"],"names":[],"mappings":";;;AAAC,oCAAoC;AACrC,4CAAgD;AAQhD,mDAAqC;AAErC,+CAAgE;AAG/D,MAAa,gBAAiB,SAAQ,gBAAgC;IAC5D,SAAS,CAAC,WAAwB;QACrC,2CAA2C;QAC3C,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC;QACpD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QACxC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;QAE5C,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,uBAAuB,SAAS,eAAe,MAAM,mBAAmB,YAAY,EAAE,CAAC,CAAC;QAEnG,IAAI,UAAmF,CAAC;QAExF,IAAI,YAAY,EAAE;YACd,UAAU,GAAG;gBACT,IAAI,EAAE,gBAAgB;gBACtB,QAAQ;gBACR,SAAS;gBACT,MAAM;gBACN,YAAY;gBACZ,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,0BAAc;aAC3B,CAAC;SACL;aAAM;YACH,UAAU,GAAG;gBACT,IAAI,EAAE,gBAAgB;gBACtB,QAAQ;gBACR,SAAS;gBACT,MAAM;gBACN,YAAY;gBACZ,QAAQ,EAAE,wBAAwB;gBAClC,QAAQ,EAAE,0BAAc;aAC3B,CAAC;SACL;QAED,UAAU,CAAC,OAAO,GAAG,yBAAa,CAAC;QACnC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,kCAAkC;QAE/D,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAvCA,4CAuCA"}
@@ -0,0 +1 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
@@ -0,0 +1,2 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/Translators/TranslateResponse/helpers.ts"],"names":[],"mappings":"AAAA,oCAAoC"}
@@ -0,0 +1,9 @@
1
+ import { Translator } from "@xapp/patterns/lib";
2
+ import { RequestResponse } from "stentor-models";
3
+ import { AgentMessage } from "../../models";
4
+ import { SlackChannelProps } from "../../Channel";
5
+ export declare class TranslateResponse extends Translator<RequestResponse, AgentMessage> {
6
+ protected readonly props?: SlackChannelProps;
7
+ constructor(props?: SlackChannelProps);
8
+ translate(requestResponse: RequestResponse): AgentMessage;
9
+ }
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TranslateResponse = void 0;
4
+ const lib_1 = require("@xapp/patterns/lib");
5
+ const stentor_response_1 = require("stentor-response");
6
+ const stentor_logger_1 = require("stentor-logger");
7
+ class TranslateResponse extends lib_1.Translator {
8
+ constructor(props) {
9
+ super();
10
+ this.props = props;
11
+ }
12
+ translate(requestResponse) {
13
+ const botResponse = requestResponse.response;
14
+ (0, stentor_logger_1.log)().info(`SLACK: BOT SAYS ${JSON.stringify(botResponse)}`);
15
+ if (botResponse) {
16
+ let text;
17
+ let card;
18
+ let list;
19
+ const outputSpeech = botResponse.outputSpeech;
20
+ if (outputSpeech) {
21
+ text = outputSpeech.displayText;
22
+ }
23
+ if (botResponse.displays && botResponse.displays.length > 0) {
24
+ const display = botResponse.displays[0];
25
+ if ((0, stentor_response_1.isCard)(display)) {
26
+ card = display;
27
+ }
28
+ else if ((0, stentor_response_1.isList)(display)) {
29
+ list = display;
30
+ }
31
+ }
32
+ // Now build up the response
33
+ const slackResponse = {
34
+ channel: undefined,
35
+ blocks: []
36
+ };
37
+ if (text) {
38
+ const textBlock = {
39
+ type: "section",
40
+ text: {
41
+ type: "plain_text",
42
+ text
43
+ }
44
+ };
45
+ slackResponse.blocks.push(textBlock);
46
+ slackResponse.text = text;
47
+ }
48
+ if (card) {
49
+ slackResponse.blocks = slackResponse.blocks.concat(createCardBlocks(card));
50
+ }
51
+ else if (list) {
52
+ slackResponse.blocks = slackResponse.blocks.concat(createListBlocks(list));
53
+ }
54
+ // Finally chips
55
+ if (outputSpeech.suggestions && outputSpeech.suggestions.length > 0) {
56
+ const actions = {
57
+ type: "actions",
58
+ elements: convertSuggestions(outputSpeech.suggestions)
59
+ };
60
+ slackResponse.blocks = slackResponse.blocks.concat(actions);
61
+ }
62
+ if (slackResponse.blocks.length === 0) {
63
+ slackResponse.blocks = undefined;
64
+ }
65
+ return slackResponse;
66
+ }
67
+ return { channel: undefined, error: "Something went wrong. The gremlins were fed after midnight. Try later!" };
68
+ }
69
+ }
70
+ exports.TranslateResponse = TranslateResponse;
71
+ function convertSuggestions(suggestions) {
72
+ if (!suggestions || suggestions.length === 0) {
73
+ return undefined;
74
+ }
75
+ const slackSuggestions = [];
76
+ for (const suggestion of suggestions) {
77
+ if (typeof suggestion === "string") {
78
+ slackSuggestions.push(createButton(suggestion));
79
+ }
80
+ else if (suggestion.title && suggestion.url) {
81
+ // TODO Link-out
82
+ }
83
+ else if (suggestion.title) {
84
+ slackSuggestions.push(createButton(suggestion.title));
85
+ }
86
+ }
87
+ return slackSuggestions;
88
+ }
89
+ function createButton(label, value) {
90
+ return {
91
+ type: "button",
92
+ text: {
93
+ type: "plain_text",
94
+ emoji: true,
95
+ text: label
96
+ },
97
+ style: "primary",
98
+ value: value || label
99
+ };
100
+ }
101
+ function createCardBlocks(card) {
102
+ const blocks = [];
103
+ const titleBlock = {
104
+ type: "header",
105
+ text: {
106
+ type: "plain_text",
107
+ text: `*${card.title}*`
108
+ }
109
+ };
110
+ blocks.push(titleBlock);
111
+ const contentBlock = {
112
+ type: "section",
113
+ text: {
114
+ type: "mrkdwn",
115
+ text: `${card.content}`
116
+ }
117
+ };
118
+ const imageUrl = card.largeImageUrl || card.smallImageUrl
119
+ || "https://aeshome.us/wp-content/uploads/2020/03/bigstock-Classy-Kitchen-Interior-2675022-768x511.jpg";
120
+ if (imageUrl) {
121
+ const imageBlock = {
122
+ type: "image",
123
+ image_url: imageUrl,
124
+ alt_text: card.accessibilityText
125
+ };
126
+ contentBlock.accessory = imageBlock;
127
+ }
128
+ blocks.push(contentBlock);
129
+ if (card.buttons) {
130
+ // TODO
131
+ }
132
+ return blocks;
133
+ }
134
+ /**
135
+ * Just throw out cards. List or carousel needs more tinkering.
136
+ *
137
+ * @param list
138
+ */
139
+ function createListBlocks(list) {
140
+ var _a, _b;
141
+ const blocks = [];
142
+ for (const item of list.items) {
143
+ const titleBlock = {
144
+ type: "header",
145
+ text: {
146
+ type: "plain_text",
147
+ text: `*${item.title}*`
148
+ }
149
+ };
150
+ blocks.push(titleBlock);
151
+ const contentBlock = {
152
+ type: "section",
153
+ text: {
154
+ type: "mrkdwn",
155
+ text: `*${item.description}*`
156
+ }
157
+ };
158
+ const imageUrl = ((_a = item.image) === null || _a === void 0 ? void 0 : _a.url)
159
+ || "https://aeshome.us/wp-content/uploads/2020/03/bigstock-Classy-Kitchen-Interior-2675022-768x511.jpg";
160
+ if (imageUrl) {
161
+ const imageBlock = {
162
+ type: "image",
163
+ image_url: imageUrl,
164
+ alt_text: ((_b = item.image) === null || _b === void 0 ? void 0 : _b.accessibilityText) || "this is an image"
165
+ };
166
+ contentBlock.accessory = imageBlock;
167
+ }
168
+ blocks.push(contentBlock);
169
+ if (item.buttons) {
170
+ // TODO
171
+ }
172
+ const dividerBlock = {
173
+ type: "divider"
174
+ };
175
+ blocks.push(dividerBlock);
176
+ }
177
+ return blocks;
178
+ }
179
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Translators/TranslateResponse/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ export * from "./TranslateRequest";
3
+ export * from "./TranslateResponse";
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /*! Copyright (c) 2022, XAPPmedia */
18
+ __exportStar(require("./TranslateRequest"), exports);
19
+ __exportStar(require("./TranslateResponse"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Translators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,qDAAmC;AACnC,sDAAoC"}
package/lib/Types.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ export declare type SlackPlatform = "slack-platform";
3
+ export declare type SlackChannel = "slack-messages";
package/lib/Types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.js","sourceRoot":"","sources":["../src/Types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};