@slack/bolt 3.7.0 → 3.8.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 (143) hide show
  1. package/README.md +4 -2
  2. package/dist/package.json +88 -0
  3. package/package.json +4 -4
  4. package/dist/App.d.ts +0 -159
  5. package/dist/App.d.ts.map +0 -1
  6. package/dist/App.js +0 -758
  7. package/dist/App.js.map +0 -1
  8. package/dist/WorkflowStep.d.ts +0 -106
  9. package/dist/WorkflowStep.d.ts.map +0 -1
  10. package/dist/WorkflowStep.js +0 -198
  11. package/dist/WorkflowStep.js.map +0 -1
  12. package/dist/conversation-store.d.ts +0 -31
  13. package/dist/conversation-store.d.ts.map +0 -1
  14. package/dist/conversation-store.js +0 -74
  15. package/dist/conversation-store.js.map +0 -1
  16. package/dist/errors.d.ts +0 -75
  17. package/dist/errors.d.ts.map +0 -1
  18. package/dist/errors.js +0 -112
  19. package/dist/errors.js.map +0 -1
  20. package/dist/helpers.d.ts +0 -24
  21. package/dist/helpers.d.ts.map +0 -1
  22. package/dist/helpers.js +0 -100
  23. package/dist/helpers.js.map +0 -1
  24. package/dist/index.d.ts +0 -13
  25. package/dist/index.d.ts.map +0 -1
  26. package/dist/index.js +0 -43
  27. package/dist/index.js.map +0 -1
  28. package/dist/middleware/builtin.d.ts +0 -52
  29. package/dist/middleware/builtin.d.ts.map +0 -1
  30. package/dist/middleware/builtin.js +0 -337
  31. package/dist/middleware/builtin.js.map +0 -1
  32. package/dist/middleware/process.d.ts +0 -5
  33. package/dist/middleware/process.d.ts.map +0 -1
  34. package/dist/middleware/process.js +0 -25
  35. package/dist/middleware/process.js.map +0 -1
  36. package/dist/receivers/AwsLambdaReceiver.d.ts +0 -50
  37. package/dist/receivers/AwsLambdaReceiver.d.ts.map +0 -1
  38. package/dist/receivers/AwsLambdaReceiver.js +0 -184
  39. package/dist/receivers/AwsLambdaReceiver.js.map +0 -1
  40. package/dist/receivers/ExpressReceiver.d.ts +0 -74
  41. package/dist/receivers/ExpressReceiver.d.ts.map +0 -1
  42. package/dist/receivers/ExpressReceiver.js +0 -440
  43. package/dist/receivers/ExpressReceiver.js.map +0 -1
  44. package/dist/receivers/HTTPReceiver.d.ts +0 -72
  45. package/dist/receivers/HTTPReceiver.d.ts.map +0 -1
  46. package/dist/receivers/HTTPReceiver.js +0 -431
  47. package/dist/receivers/HTTPReceiver.js.map +0 -1
  48. package/dist/receivers/SocketModeReceiver.d.ts +0 -57
  49. package/dist/receivers/SocketModeReceiver.d.ts.map +0 -1
  50. package/dist/receivers/SocketModeReceiver.js +0 -163
  51. package/dist/receivers/SocketModeReceiver.js.map +0 -1
  52. package/dist/receivers/custom-routes.d.ts +0 -14
  53. package/dist/receivers/custom-routes.d.ts.map +0 -1
  54. package/dist/receivers/custom-routes.js +0 -33
  55. package/dist/receivers/custom-routes.js.map +0 -1
  56. package/dist/receivers/render-html-for-install-path.d.ts +0 -3
  57. package/dist/receivers/render-html-for-install-path.d.ts.map +0 -1
  58. package/dist/receivers/render-html-for-install-path.js +0 -25
  59. package/dist/receivers/render-html-for-install-path.js.map +0 -1
  60. package/dist/receivers/verify-redirect-opts.d.ts +0 -7
  61. package/dist/receivers/verify-redirect-opts.d.ts.map +0 -1
  62. package/dist/receivers/verify-redirect-opts.js +0 -23
  63. package/dist/receivers/verify-redirect-opts.js.map +0 -1
  64. package/dist/receivers/verify-request.d.ts +0 -41
  65. package/dist/receivers/verify-request.d.ts.map +0 -1
  66. package/dist/receivers/verify-request.js +0 -98
  67. package/dist/receivers/verify-request.js.map +0 -1
  68. package/dist/types/actions/block-action.d.ts +0 -224
  69. package/dist/types/actions/block-action.d.ts.map +0 -1
  70. package/dist/types/actions/block-action.js +0 -3
  71. package/dist/types/actions/block-action.js.map +0 -1
  72. package/dist/types/actions/dialog-action.d.ts +0 -47
  73. package/dist/types/actions/dialog-action.d.ts.map +0 -1
  74. package/dist/types/actions/dialog-action.js +0 -3
  75. package/dist/types/actions/dialog-action.js.map +0 -1
  76. package/dist/types/actions/index.d.ts +0 -46
  77. package/dist/types/actions/index.d.ts.map +0 -1
  78. package/dist/types/actions/index.js +0 -17
  79. package/dist/types/actions/index.js.map +0 -1
  80. package/dist/types/actions/interactive-message.d.ts +0 -66
  81. package/dist/types/actions/interactive-message.d.ts.map +0 -1
  82. package/dist/types/actions/interactive-message.js +0 -3
  83. package/dist/types/actions/interactive-message.js.map +0 -1
  84. package/dist/types/actions/workflow-step-edit.d.ts +0 -49
  85. package/dist/types/actions/workflow-step-edit.d.ts.map +0 -1
  86. package/dist/types/actions/workflow-step-edit.js +0 -3
  87. package/dist/types/actions/workflow-step-edit.js.map +0 -1
  88. package/dist/types/command/index.d.ts +0 -36
  89. package/dist/types/command/index.d.ts.map +0 -1
  90. package/dist/types/command/index.js +0 -3
  91. package/dist/types/command/index.js.map +0 -1
  92. package/dist/types/events/base-events.d.ts +0 -699
  93. package/dist/types/events/base-events.d.ts.map +0 -1
  94. package/dist/types/events/base-events.js +0 -5
  95. package/dist/types/events/base-events.js.map +0 -1
  96. package/dist/types/events/index.d.ts +0 -63
  97. package/dist/types/events/index.d.ts.map +0 -1
  98. package/dist/types/events/index.js +0 -14
  99. package/dist/types/events/index.js.map +0 -1
  100. package/dist/types/events/message-events.d.ts +0 -312
  101. package/dist/types/events/message-events.d.ts.map +0 -1
  102. package/dist/types/events/message-events.js +0 -3
  103. package/dist/types/events/message-events.js.map +0 -1
  104. package/dist/types/helpers.d.ts +0 -17
  105. package/dist/types/helpers.d.ts.map +0 -1
  106. package/dist/types/helpers.js +0 -3
  107. package/dist/types/helpers.js.map +0 -1
  108. package/dist/types/index.d.ts +0 -10
  109. package/dist/types/index.d.ts.map +0 -1
  110. package/dist/types/index.js +0 -22
  111. package/dist/types/index.js.map +0 -1
  112. package/dist/types/middleware.d.ts +0 -56
  113. package/dist/types/middleware.d.ts.map +0 -1
  114. package/dist/types/middleware.js +0 -3
  115. package/dist/types/middleware.js.map +0 -1
  116. package/dist/types/options/index.d.ts +0 -192
  117. package/dist/types/options/index.d.ts.map +0 -1
  118. package/dist/types/options/index.js +0 -3
  119. package/dist/types/options/index.js.map +0 -1
  120. package/dist/types/receiver.d.ts +0 -13
  121. package/dist/types/receiver.d.ts.map +0 -1
  122. package/dist/types/receiver.js +0 -3
  123. package/dist/types/receiver.js.map +0 -1
  124. package/dist/types/shortcuts/global-shortcut.d.ts +0 -29
  125. package/dist/types/shortcuts/global-shortcut.d.ts.map +0 -1
  126. package/dist/types/shortcuts/global-shortcut.js +0 -3
  127. package/dist/types/shortcuts/global-shortcut.js.map +0 -1
  128. package/dist/types/shortcuts/index.d.ts +0 -23
  129. package/dist/types/shortcuts/index.d.ts.map +0 -1
  130. package/dist/types/shortcuts/index.js +0 -16
  131. package/dist/types/shortcuts/index.js.map +0 -1
  132. package/dist/types/shortcuts/message-shortcut.d.ts +0 -43
  133. package/dist/types/shortcuts/message-shortcut.d.ts.map +0 -1
  134. package/dist/types/shortcuts/message-shortcut.js +0 -3
  135. package/dist/types/shortcuts/message-shortcut.js.map +0 -1
  136. package/dist/types/utilities.d.ts +0 -23
  137. package/dist/types/utilities.d.ts.map +0 -1
  138. package/dist/types/utilities.js +0 -3
  139. package/dist/types/utilities.js.map +0 -1
  140. package/dist/types/view/index.d.ts +0 -175
  141. package/dist/types/view/index.d.ts.map +0 -1
  142. package/dist/types/view/index.js +0 -3
  143. package/dist/types/view/index.js.map +0 -1
@@ -1,337 +0,0 @@
1
- "use strict";
2
- /* eslint-disable @typescript-eslint/dot-notation */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.directMention = exports.subtype = exports.ignoreSelf = exports.matchEventType = exports.matchCommandName = exports.matchMessage = exports.matchConstraints = exports.onlyViewActions = exports.onlyEvents = exports.onlyOptions = exports.onlyCommands = exports.onlyShortcuts = exports.onlyActions = void 0;
5
- const errors_1 = require("../errors");
6
- /**
7
- * Middleware that filters out any event that isn't an action
8
- */
9
- const onlyActions = async ({ action, next }) => {
10
- // Filter out any non-actions
11
- if (action === undefined) {
12
- return;
13
- }
14
- // It matches so we should continue down this middleware listener chain
15
- // TODO: remove the non-null assertion operator
16
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
17
- await next();
18
- };
19
- exports.onlyActions = onlyActions;
20
- /**
21
- * Middleware that filters out any event that isn't a shortcut
22
- */
23
- const onlyShortcuts = async ({ shortcut, next, }) => {
24
- // Filter out any non-shortcuts
25
- if (shortcut === undefined) {
26
- return;
27
- }
28
- // It matches so we should continue down this middleware listener chain
29
- // TODO: remove the non-null assertion operator
30
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
31
- await next();
32
- };
33
- exports.onlyShortcuts = onlyShortcuts;
34
- /**
35
- * Middleware that filters out any event that isn't a command
36
- */
37
- const onlyCommands = async ({ command, next }) => {
38
- // Filter out any non-commands
39
- if (command === undefined) {
40
- return;
41
- }
42
- // It matches so we should continue down this middleware listener chain
43
- // TODO: remove the non-null assertion operator
44
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
45
- await next();
46
- };
47
- exports.onlyCommands = onlyCommands;
48
- /**
49
- * Middleware that filters out any event that isn't an options
50
- */
51
- const onlyOptions = async ({ options, next }) => {
52
- // Filter out any non-options requests
53
- if (options === undefined) {
54
- return;
55
- }
56
- // It matches so we should continue down this middleware listener chain
57
- // TODO: remove the non-null assertion operator
58
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
59
- await next();
60
- };
61
- exports.onlyOptions = onlyOptions;
62
- /**
63
- * Middleware that filters out any event that isn't an event
64
- */
65
- const onlyEvents = async ({ event, next }) => {
66
- // Filter out any non-events
67
- if (event === undefined) {
68
- return;
69
- }
70
- // It matches so we should continue down this middleware listener chain
71
- // TODO: remove the non-null assertion operator
72
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
73
- await next();
74
- };
75
- exports.onlyEvents = onlyEvents;
76
- /**
77
- * Middleware that filters out any event that isn't a view_submission or view_closed event
78
- */
79
- const onlyViewActions = async ({ view, next }) => {
80
- // Filter out anything that doesn't have a view
81
- if (view === undefined) {
82
- return;
83
- }
84
- // It matches so we should continue down this middleware listener chain
85
- // TODO: remove the non-null assertion operator
86
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
87
- await next();
88
- };
89
- exports.onlyViewActions = onlyViewActions;
90
- /**
91
- * Middleware that checks for matches given constraints
92
- */
93
- function matchConstraints(constraints) {
94
- return async ({ payload, body, next, context }) => {
95
- // TODO: is putting matches in an array actually helpful? there's no way to know which of the regexps contributed
96
- // which matches (and in which order)
97
- let tempMatches;
98
- // Narrow type for ActionConstraints
99
- if ('block_id' in constraints || 'action_id' in constraints) {
100
- if (!isBlockPayload(payload)) {
101
- return;
102
- }
103
- // Check block_id
104
- if (constraints.block_id !== undefined) {
105
- if (typeof constraints.block_id === 'string') {
106
- if (payload.block_id !== constraints.block_id) {
107
- return;
108
- }
109
- }
110
- else {
111
- tempMatches = payload.block_id.match(constraints.block_id);
112
- if (tempMatches !== null) {
113
- context['blockIdMatches'] = tempMatches;
114
- }
115
- else {
116
- return;
117
- }
118
- }
119
- }
120
- // Check action_id
121
- if (constraints.action_id !== undefined) {
122
- if (typeof constraints.action_id === 'string') {
123
- if (payload.action_id !== constraints.action_id) {
124
- return;
125
- }
126
- }
127
- else {
128
- tempMatches = payload.action_id.match(constraints.action_id);
129
- if (tempMatches !== null) {
130
- context['actionIdMatches'] = tempMatches;
131
- }
132
- else {
133
- return;
134
- }
135
- }
136
- }
137
- }
138
- // Check callback_id
139
- if ('callback_id' in constraints && constraints.callback_id !== undefined) {
140
- let callbackId = '';
141
- if (isViewBody(body)) {
142
- callbackId = body['view']['callback_id'];
143
- }
144
- else if (isCallbackIdentifiedBody(body)) {
145
- callbackId = body['callback_id'];
146
- }
147
- else {
148
- return;
149
- }
150
- if (typeof constraints.callback_id === 'string') {
151
- if (callbackId !== constraints.callback_id) {
152
- return;
153
- }
154
- }
155
- else {
156
- tempMatches = callbackId.match(constraints.callback_id);
157
- if (tempMatches !== null) {
158
- context['callbackIdMatches'] = tempMatches;
159
- }
160
- else {
161
- return;
162
- }
163
- }
164
- }
165
- // Check type
166
- if ('type' in constraints) {
167
- if (body.type !== constraints.type)
168
- return;
169
- }
170
- // TODO: remove the non-null assertion operator
171
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
172
- await next();
173
- };
174
- }
175
- exports.matchConstraints = matchConstraints;
176
- /*
177
- * Middleware that filters out messages that don't match pattern
178
- */
179
- function matchMessage(pattern) {
180
- return async ({ event, context, next }) => {
181
- let tempMatches;
182
- if (!('text' in event) || event.text === undefined) {
183
- return;
184
- }
185
- // Filter out messages or app mentions that don't contain the pattern
186
- if (typeof pattern === 'string') {
187
- if (!event.text.includes(pattern)) {
188
- return;
189
- }
190
- }
191
- else {
192
- tempMatches = event.text.match(pattern);
193
- if (tempMatches !== null) {
194
- context['matches'] = tempMatches;
195
- }
196
- else {
197
- return;
198
- }
199
- }
200
- // TODO: remove the non-null assertion operator
201
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
202
- await next();
203
- };
204
- }
205
- exports.matchMessage = matchMessage;
206
- /**
207
- * Middleware that filters out any command that doesn't match the pattern
208
- */
209
- function matchCommandName(pattern) {
210
- return async ({ command, next }) => {
211
- // Filter out any commands that do not match the correct command name or pattern
212
- if (!matchesPattern(pattern, command.command)) {
213
- return;
214
- }
215
- // TODO: remove the non-null assertion operator
216
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
217
- await next();
218
- };
219
- }
220
- exports.matchCommandName = matchCommandName;
221
- function matchesPattern(pattern, candidate) {
222
- if (typeof pattern === 'string') {
223
- return pattern === candidate;
224
- }
225
- return pattern.test(candidate);
226
- }
227
- /*
228
- * Middleware that filters out events that don't match pattern
229
- */
230
- function matchEventType(pattern) {
231
- return async ({ event, context, next }) => {
232
- let tempMatches;
233
- if (!('type' in event) || event.type === undefined) {
234
- return;
235
- }
236
- // Filter out events that don't contain the pattern
237
- if (typeof pattern === 'string') {
238
- if (event.type !== pattern) {
239
- return;
240
- }
241
- }
242
- else {
243
- tempMatches = event.type.match(pattern);
244
- if (tempMatches !== null) {
245
- context['matches'] = tempMatches;
246
- }
247
- else {
248
- return;
249
- }
250
- }
251
- // TODO: remove the non-null assertion operator
252
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
253
- await next();
254
- };
255
- }
256
- exports.matchEventType = matchEventType;
257
- function ignoreSelf() {
258
- return async (args) => {
259
- const botId = args.context.botId;
260
- const botUserId = args.context.botUserId !== undefined ? args.context.botUserId : undefined;
261
- if (isEventArgs(args)) {
262
- // Once we've narrowed the type down to SlackEventMiddlewareArgs, there's no way to further narrow it down to
263
- // SlackEventMiddlewareArgs<'message'> without a cast, so the following couple lines do that.
264
- if (args.message !== undefined) {
265
- const message = args.message;
266
- // TODO: revisit this once we have all the message subtypes defined to see if we can do this better with
267
- // type narrowing
268
- // Look for an event that is identified as a bot message from the same bot ID as this app, and return to skip
269
- if (message.subtype === 'bot_message' && message.bot_id === botId) {
270
- return;
271
- }
272
- }
273
- // Its an Events API event that isn't of type message, but the user ID might match our own app. Filter these out.
274
- // However, some events still must be fired, because they can make sense.
275
- const eventsWhichShouldBeKept = ['member_joined_channel', 'member_left_channel'];
276
- const isEventShouldBeKept = eventsWhichShouldBeKept.includes(args.event.type);
277
- if (botUserId !== undefined && 'user' in args.event && args.event.user === botUserId && !isEventShouldBeKept) {
278
- return;
279
- }
280
- }
281
- // If all the previous checks didn't skip this message, then its okay to resume to next
282
- // TODO: remove the non-null assertion operator
283
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
284
- await args.next();
285
- };
286
- }
287
- exports.ignoreSelf = ignoreSelf;
288
- function subtype(subtype1) {
289
- return async ({ message, next }) => {
290
- if (message.subtype === subtype1) {
291
- // TODO: remove the non-null assertion operator
292
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
293
- await next();
294
- }
295
- };
296
- }
297
- exports.subtype = subtype;
298
- const slackLink = /<(?<type>[@#!])?(?<link>[^>|]+)(?:\|(?<label>[^>]+))?>/;
299
- function directMention() {
300
- return async ({ message, context, next }) => {
301
- // When context does not have a botUserId in it, then this middleware cannot perform its job. Bail immediately.
302
- if (context.botUserId === undefined) {
303
- throw new errors_1.ContextMissingPropertyError('botUserId', 'Cannot match direct mentions of the app without a bot user ID. Ensure authorize callback returns a botUserId.');
304
- }
305
- if (!('text' in message) || message.text === undefined) {
306
- return;
307
- }
308
- // Match the message text with a user mention format
309
- const text = message.text.trim();
310
- const matches = slackLink.exec(text);
311
- if (matches === null || // stop when no matches are found
312
- matches.index !== 0 || // stop if match isn't at the beginning
313
- // stop if match isn't a user mention with the right user ID
314
- matches.groups === undefined ||
315
- matches.groups.type !== '@' ||
316
- matches.groups.link !== context.botUserId) {
317
- return;
318
- }
319
- // TODO: remove the non-null assertion operator
320
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
321
- await next();
322
- };
323
- }
324
- exports.directMention = directMention;
325
- function isBlockPayload(payload) {
326
- return payload.action_id !== undefined;
327
- }
328
- function isCallbackIdentifiedBody(body) {
329
- return body.callback_id !== undefined;
330
- }
331
- function isViewBody(body) {
332
- return body.view !== undefined;
333
- }
334
- function isEventArgs(args) {
335
- return args.event !== undefined;
336
- }
337
- //# sourceMappingURL=builtin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../src/middleware/builtin.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { WebClient } from '@slack/web-api';
2
- import { Logger } from '@slack/logger';
3
- import { Middleware, AnyMiddlewareArgs, Context } from '../types';
4
- export default function processMiddleware(middleware: Middleware<AnyMiddlewareArgs>[], initialArgs: AnyMiddlewareArgs, context: Context, client: WebClient, logger: Logger, last: () => Promise<void>): Promise<void>;
5
- //# sourceMappingURL=process.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/middleware/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAElE,wBAA8B,iBAAiB,CAC7C,UAAU,EAAE,UAAU,CAAC,iBAAiB,CAAC,EAAE,EAC3C,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- async function processMiddleware(middleware, initialArgs, context, client, logger, last) {
4
- let lastCalledMiddlewareIndex = -1;
5
- async function invokeMiddleware(toCallMiddlewareIndex) {
6
- if (lastCalledMiddlewareIndex >= toCallMiddlewareIndex) {
7
- // TODO: use a coded error
8
- throw Error('next() called multiple times');
9
- }
10
- if (toCallMiddlewareIndex < middleware.length) {
11
- lastCalledMiddlewareIndex = toCallMiddlewareIndex;
12
- return middleware[toCallMiddlewareIndex]({
13
- next: () => invokeMiddleware(toCallMiddlewareIndex + 1),
14
- ...initialArgs,
15
- context,
16
- client,
17
- logger,
18
- });
19
- }
20
- return last();
21
- }
22
- return invokeMiddleware(0);
23
- }
24
- exports.default = processMiddleware;
25
- //# sourceMappingURL=process.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/middleware/process.ts"],"names":[],"mappings":";;AAIe,KAAK,UAAU,iBAAiB,CAC7C,UAA2C,EAC3C,WAA8B,EAC9B,OAAgB,EAChB,MAAiB,EACjB,MAAc,EACd,IAAyB;IAEzB,IAAI,yBAAyB,GAAG,CAAC,CAAC,CAAC;IAEnC,KAAK,UAAU,gBAAgB,CAAC,qBAA6B;QAC3D,IAAI,yBAAyB,IAAI,qBAAqB,EAAE;YACtD,0BAA0B;YAC1B,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;SAC7C;QAED,IAAI,qBAAqB,GAAG,UAAU,CAAC,MAAM,EAAE;YAC7C,yBAAyB,GAAG,qBAAqB,CAAC;YAClD,OAAO,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBACvC,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,qBAAqB,GAAG,CAAC,CAAC;gBACvD,GAAG,WAAW;gBACd,OAAO;gBACP,MAAM;gBACN,MAAM;aACP,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AA/BD,oCA+BC"}
@@ -1,50 +0,0 @@
1
- import { Logger, LogLevel } from '@slack/logger';
2
- import App from '../App';
3
- import { Receiver } from '../types/receiver';
4
- export interface AwsEvent {
5
- body: string | null;
6
- headers: any;
7
- multiValueHeaders: any;
8
- httpMethod: string;
9
- isBase64Encoded: boolean;
10
- path: string;
11
- pathParameters: any | null;
12
- queryStringParameters: any | null;
13
- multiValueQueryStringParameters: any | null;
14
- stageVariables: any | null;
15
- requestContext: any;
16
- resource: string;
17
- }
18
- export declare type AwsCallback = (error?: Error | string | null, result?: any) => void;
19
- export interface AwsResponse {
20
- statusCode: number;
21
- headers?: {
22
- [header: string]: boolean | number | string;
23
- };
24
- multiValueHeaders?: {
25
- [header: string]: Array<boolean | number | string>;
26
- };
27
- body: string;
28
- isBase64Encoded?: boolean;
29
- }
30
- export declare type AwsHandler = (event: AwsEvent, context: any, callback: AwsCallback) => Promise<AwsResponse>;
31
- export interface AwsLambdaReceiverOptions {
32
- signingSecret: string;
33
- logger?: Logger;
34
- logLevel?: LogLevel;
35
- }
36
- export default class AwsLambdaReceiver implements Receiver {
37
- private signingSecret;
38
- private app?;
39
- private logger;
40
- constructor({ signingSecret, logger, logLevel }: AwsLambdaReceiverOptions);
41
- init(app: App): void;
42
- start(..._args: any[]): Promise<AwsHandler>;
43
- stop(..._args: any[]): Promise<void>;
44
- toHandler(): AwsHandler;
45
- private getRawBody;
46
- private parseRequestBody;
47
- private isValidRequestSignature;
48
- private getHeaderValue;
49
- }
50
- //# sourceMappingURL=AwsLambdaReceiver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AwsLambdaReceiver.d.ts","sourceRoot":"","sources":["../../src/receivers/AwsLambdaReceiver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAiB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIhE,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAG5D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,GAAG,CAAC;IACb,iBAAiB,EAAE,GAAG,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC;IAC3B,qBAAqB,EAAE,GAAG,GAAG,IAAI,CAAC;IAClC,+BAA+B,EAAE,GAAG,GAAG,IAAI,CAAC;IAC5C,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,GAAG,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,oBAAY,WAAW,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;AAEhF,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;KAC7C,CAAC;IACF,iBAAiB,CAAC,EAAE;QAClB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;KACpD,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,oBAAY,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAExG,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAQD,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,QAAQ;IACxD,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,GAAG,CAAC,CAAM;IAElB,OAAO,CAAC,MAAM,CAAS;gBAEJ,EAAE,aAAa,EAAE,MAAkB,EAAE,QAAwB,EAAE,EAAE,wBAAwB;IAWrG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAIpB,KAAK,CACV,GAAG,KAAK,EAAE,GAAG,EAAE,GACd,OAAO,CAAC,UAAU,CAAC;IAYf,IAAI,CACT,GAAG,KAAK,EAAE,GAAG,EAAE,GACd,OAAO,CAAC,IAAI,CAAC;IAMT,SAAS,IAAI,UAAU;IAmG9B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,uBAAuB;IA4B/B,OAAO,CAAC,cAAc;CAIvB"}
@@ -1,184 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- const logger_1 = require("@slack/logger");
8
- const querystring_1 = __importDefault(require("querystring"));
9
- const crypto_1 = __importDefault(require("crypto"));
10
- const tsscmp_1 = __importDefault(require("tsscmp"));
11
- const errors_1 = require("../errors");
12
- /*
13
- * Receiver implementation for AWS API Gateway + Lambda apps
14
- *
15
- * Note that this receiver does not support Slack OAuth flow.
16
- * For OAuth flow endpoints, deploy another Lambda function built with ExpressReceiver.
17
- */
18
- class AwsLambdaReceiver {
19
- constructor({ signingSecret, logger = undefined, logLevel = logger_1.LogLevel.INFO }) {
20
- // Initialize instance variables, substituting defaults for each value
21
- this.signingSecret = signingSecret;
22
- this.logger = logger !== null && logger !== void 0 ? logger : (() => {
23
- const defaultLogger = new logger_1.ConsoleLogger();
24
- defaultLogger.setLevel(logLevel);
25
- return defaultLogger;
26
- })();
27
- }
28
- init(app) {
29
- this.app = app;
30
- }
31
- start(..._args) {
32
- return new Promise((resolve, reject) => {
33
- try {
34
- const handler = this.toHandler();
35
- resolve(handler);
36
- }
37
- catch (error) {
38
- reject(error);
39
- }
40
- });
41
- }
42
- // eslint-disable-next-line class-methods-use-this
43
- stop(..._args) {
44
- return new Promise((resolve, _reject) => {
45
- resolve();
46
- });
47
- }
48
- toHandler() {
49
- return async (awsEvent, _awsContext, _awsCallback) => {
50
- var _a;
51
- this.logger.debug(`AWS event: ${JSON.stringify(awsEvent, null, 2)}`);
52
- const rawBody = this.getRawBody(awsEvent);
53
- const body = this.parseRequestBody(rawBody, this.getHeaderValue(awsEvent.headers, 'Content-Type'), this.logger);
54
- // ssl_check (for Slash Commands)
55
- if (typeof body !== 'undefined' &&
56
- body != null &&
57
- typeof body.ssl_check !== 'undefined' &&
58
- body.ssl_check != null) {
59
- return Promise.resolve({ statusCode: 200, body: '' });
60
- }
61
- // request signature verification
62
- const signature = this.getHeaderValue(awsEvent.headers, 'X-Slack-Signature');
63
- const ts = Number(this.getHeaderValue(awsEvent.headers, 'X-Slack-Request-Timestamp'));
64
- if (!this.isValidRequestSignature(this.signingSecret, rawBody, signature, ts)) {
65
- return Promise.resolve({ statusCode: 401, body: '' });
66
- }
67
- // url_verification (Events API)
68
- if (typeof body !== 'undefined' &&
69
- body != null &&
70
- typeof body.type !== 'undefined' &&
71
- body.type != null &&
72
- body.type === 'url_verification') {
73
- return Promise.resolve({
74
- statusCode: 200,
75
- headers: { 'Content-Type': 'application/json' },
76
- body: JSON.stringify({ challenge: body.challenge }),
77
- });
78
- }
79
- // Setup ack timeout warning
80
- let isAcknowledged = false;
81
- setTimeout(() => {
82
- if (!isAcknowledged) {
83
- this.logger.error('An incoming event was not acknowledged within 3 seconds. ' +
84
- 'Ensure that the ack() argument is called in a listener.');
85
- }
86
- }, 3001);
87
- // Structure the ReceiverEvent
88
- let storedResponse;
89
- const event = {
90
- body,
91
- ack: async (response) => {
92
- if (isAcknowledged) {
93
- throw new errors_1.ReceiverMultipleAckError();
94
- }
95
- isAcknowledged = true;
96
- if (typeof response === 'undefined' || response == null) {
97
- storedResponse = '';
98
- }
99
- else {
100
- storedResponse = response;
101
- }
102
- },
103
- };
104
- // Send the event to the app for processing
105
- try {
106
- await ((_a = this.app) === null || _a === void 0 ? void 0 : _a.processEvent(event));
107
- if (storedResponse !== undefined) {
108
- if (typeof storedResponse === 'string') {
109
- return { statusCode: 200, body: storedResponse };
110
- }
111
- return {
112
- statusCode: 200,
113
- headers: { 'Content-Type': 'application/json' },
114
- body: JSON.stringify(storedResponse),
115
- };
116
- }
117
- }
118
- catch (err) {
119
- this.logger.error('An unhandled error occurred while Bolt processed an event');
120
- this.logger.debug(`Error details: ${err}, storedResponse: ${storedResponse}`);
121
- return { statusCode: 500, body: 'Internal server error' };
122
- }
123
- return { statusCode: 404, body: '' };
124
- };
125
- }
126
- // eslint-disable-next-line class-methods-use-this
127
- getRawBody(awsEvent) {
128
- if (typeof awsEvent.body === 'undefined' || awsEvent.body == null) {
129
- return '';
130
- }
131
- if (awsEvent.isBase64Encoded) {
132
- return Buffer.from(awsEvent.body, 'base64').toString('ascii');
133
- }
134
- return awsEvent.body;
135
- }
136
- // eslint-disable-next-line class-methods-use-this
137
- parseRequestBody(stringBody, contentType, logger) {
138
- if (contentType === 'application/x-www-form-urlencoded') {
139
- const parsedBody = querystring_1.default.parse(stringBody);
140
- if (typeof parsedBody.payload === 'string') {
141
- return JSON.parse(parsedBody.payload);
142
- }
143
- return parsedBody;
144
- }
145
- if (contentType === 'application/json') {
146
- return JSON.parse(stringBody);
147
- }
148
- logger.warn(`Unexpected content-type detected: ${contentType}`);
149
- try {
150
- // Parse this body anyway
151
- return JSON.parse(stringBody);
152
- }
153
- catch (e) {
154
- logger.error(`Failed to parse body as JSON data for content-type: ${contentType}`);
155
- throw e;
156
- }
157
- }
158
- // eslint-disable-next-line class-methods-use-this
159
- isValidRequestSignature(signingSecret, body, signature, requestTimestamp) {
160
- if (!signature || !requestTimestamp) {
161
- return false;
162
- }
163
- // Divide current date to match Slack ts format
164
- // Subtract 5 minutes from current time
165
- const fiveMinutesAgo = Math.floor(Date.now() / 1000) - 60 * 5;
166
- if (requestTimestamp < fiveMinutesAgo) {
167
- return false;
168
- }
169
- const hmac = crypto_1.default.createHmac('sha256', signingSecret);
170
- const [version, hash] = signature.split('=');
171
- hmac.update(`${version}:${requestTimestamp}:${body}`);
172
- if (!(0, tsscmp_1.default)(hash, hmac.digest('hex'))) {
173
- return false;
174
- }
175
- return true;
176
- }
177
- // eslint-disable-next-line class-methods-use-this
178
- getHeaderValue(headers, key) {
179
- const caseInsensitiveKey = Object.keys(headers).find((it) => key.toLowerCase() === it.toLowerCase());
180
- return caseInsensitiveKey !== undefined ? headers[caseInsensitiveKey] : undefined;
181
- }
182
- }
183
- exports.default = AwsLambdaReceiver;
184
- //# sourceMappingURL=AwsLambdaReceiver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AwsLambdaReceiver.js","sourceRoot":"","sources":["../../src/receivers/AwsLambdaReceiver.ts"],"names":[],"mappings":"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"}