@slack/bolt 3.5.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 (137) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE +1 -1
  3. package/README.md +11 -4
  4. package/dist/package.json +88 -0
  5. package/package.json +18 -20
  6. package/dist/App.d.ts +0 -156
  7. package/dist/App.d.ts.map +0 -1
  8. package/dist/App.js +0 -721
  9. package/dist/App.js.map +0 -1
  10. package/dist/WorkflowStep.d.ts +0 -106
  11. package/dist/WorkflowStep.d.ts.map +0 -1
  12. package/dist/WorkflowStep.js +0 -199
  13. package/dist/WorkflowStep.js.map +0 -1
  14. package/dist/conversation-store.d.ts +0 -31
  15. package/dist/conversation-store.d.ts.map +0 -1
  16. package/dist/conversation-store.js +0 -72
  17. package/dist/conversation-store.js.map +0 -1
  18. package/dist/errors.d.ts +0 -71
  19. package/dist/errors.d.ts.map +0 -1
  20. package/dist/errors.js +0 -104
  21. package/dist/errors.js.map +0 -1
  22. package/dist/helpers.d.ts +0 -24
  23. package/dist/helpers.d.ts.map +0 -1
  24. package/dist/helpers.js +0 -99
  25. package/dist/helpers.js.map +0 -1
  26. package/dist/index.d.ts +0 -13
  27. package/dist/index.d.ts.map +0 -1
  28. package/dist/index.js +0 -43
  29. package/dist/index.js.map +0 -1
  30. package/dist/middleware/builtin.d.ts +0 -52
  31. package/dist/middleware/builtin.d.ts.map +0 -1
  32. package/dist/middleware/builtin.js +0 -330
  33. package/dist/middleware/builtin.js.map +0 -1
  34. package/dist/middleware/process.d.ts +0 -5
  35. package/dist/middleware/process.d.ts.map +0 -1
  36. package/dist/middleware/process.js +0 -26
  37. package/dist/middleware/process.js.map +0 -1
  38. package/dist/receivers/AwsLambdaReceiver.d.ts +0 -50
  39. package/dist/receivers/AwsLambdaReceiver.d.ts.map +0 -1
  40. package/dist/receivers/AwsLambdaReceiver.js +0 -192
  41. package/dist/receivers/AwsLambdaReceiver.js.map +0 -1
  42. package/dist/receivers/ExpressReceiver.d.ts +0 -64
  43. package/dist/receivers/ExpressReceiver.d.ts.map +0 -1
  44. package/dist/receivers/ExpressReceiver.js +0 -365
  45. package/dist/receivers/ExpressReceiver.js.map +0 -1
  46. package/dist/receivers/HTTPReceiver.d.ts +0 -60
  47. package/dist/receivers/HTTPReceiver.d.ts.map +0 -1
  48. package/dist/receivers/HTTPReceiver.js +0 -357
  49. package/dist/receivers/HTTPReceiver.js.map +0 -1
  50. package/dist/receivers/SocketModeReceiver.d.ts +0 -44
  51. package/dist/receivers/SocketModeReceiver.d.ts.map +0 -1
  52. package/dist/receivers/SocketModeReceiver.js +0 -111
  53. package/dist/receivers/SocketModeReceiver.js.map +0 -1
  54. package/dist/receivers/render-html-for-install-path.d.ts +0 -2
  55. package/dist/receivers/render-html-for-install-path.d.ts.map +0 -1
  56. package/dist/receivers/render-html-for-install-path.js +0 -20
  57. package/dist/receivers/render-html-for-install-path.js.map +0 -1
  58. package/dist/receivers/verify-request.d.ts +0 -40
  59. package/dist/receivers/verify-request.d.ts.map +0 -1
  60. package/dist/receivers/verify-request.js +0 -94
  61. package/dist/receivers/verify-request.js.map +0 -1
  62. package/dist/types/actions/block-action.d.ts +0 -224
  63. package/dist/types/actions/block-action.d.ts.map +0 -1
  64. package/dist/types/actions/block-action.js +0 -3
  65. package/dist/types/actions/block-action.js.map +0 -1
  66. package/dist/types/actions/dialog-action.d.ts +0 -47
  67. package/dist/types/actions/dialog-action.d.ts.map +0 -1
  68. package/dist/types/actions/dialog-action.js +0 -3
  69. package/dist/types/actions/dialog-action.js.map +0 -1
  70. package/dist/types/actions/index.d.ts +0 -46
  71. package/dist/types/actions/index.d.ts.map +0 -1
  72. package/dist/types/actions/index.js +0 -17
  73. package/dist/types/actions/index.js.map +0 -1
  74. package/dist/types/actions/interactive-message.d.ts +0 -66
  75. package/dist/types/actions/interactive-message.d.ts.map +0 -1
  76. package/dist/types/actions/interactive-message.js +0 -3
  77. package/dist/types/actions/interactive-message.js.map +0 -1
  78. package/dist/types/actions/workflow-step-edit.d.ts +0 -49
  79. package/dist/types/actions/workflow-step-edit.d.ts.map +0 -1
  80. package/dist/types/actions/workflow-step-edit.js +0 -3
  81. package/dist/types/actions/workflow-step-edit.js.map +0 -1
  82. package/dist/types/command/index.d.ts +0 -36
  83. package/dist/types/command/index.d.ts.map +0 -1
  84. package/dist/types/command/index.js +0 -3
  85. package/dist/types/command/index.js.map +0 -1
  86. package/dist/types/events/base-events.d.ts +0 -622
  87. package/dist/types/events/base-events.d.ts.map +0 -1
  88. package/dist/types/events/base-events.js +0 -5
  89. package/dist/types/events/base-events.js.map +0 -1
  90. package/dist/types/events/index.d.ts +0 -63
  91. package/dist/types/events/index.d.ts.map +0 -1
  92. package/dist/types/events/index.js +0 -14
  93. package/dist/types/events/index.js.map +0 -1
  94. package/dist/types/events/message-events.d.ts +0 -312
  95. package/dist/types/events/message-events.d.ts.map +0 -1
  96. package/dist/types/events/message-events.js +0 -3
  97. package/dist/types/events/message-events.js.map +0 -1
  98. package/dist/types/helpers.d.ts +0 -17
  99. package/dist/types/helpers.d.ts.map +0 -1
  100. package/dist/types/helpers.js +0 -3
  101. package/dist/types/helpers.js.map +0 -1
  102. package/dist/types/index.d.ts +0 -10
  103. package/dist/types/index.d.ts.map +0 -1
  104. package/dist/types/index.js +0 -22
  105. package/dist/types/index.js.map +0 -1
  106. package/dist/types/middleware.d.ts +0 -56
  107. package/dist/types/middleware.d.ts.map +0 -1
  108. package/dist/types/middleware.js +0 -3
  109. package/dist/types/middleware.js.map +0 -1
  110. package/dist/types/options/index.d.ts +0 -192
  111. package/dist/types/options/index.d.ts.map +0 -1
  112. package/dist/types/options/index.js +0 -3
  113. package/dist/types/options/index.js.map +0 -1
  114. package/dist/types/receiver.d.ts +0 -13
  115. package/dist/types/receiver.d.ts.map +0 -1
  116. package/dist/types/receiver.js +0 -3
  117. package/dist/types/receiver.js.map +0 -1
  118. package/dist/types/shortcuts/global-shortcut.d.ts +0 -29
  119. package/dist/types/shortcuts/global-shortcut.d.ts.map +0 -1
  120. package/dist/types/shortcuts/global-shortcut.js +0 -3
  121. package/dist/types/shortcuts/global-shortcut.js.map +0 -1
  122. package/dist/types/shortcuts/index.d.ts +0 -23
  123. package/dist/types/shortcuts/index.d.ts.map +0 -1
  124. package/dist/types/shortcuts/index.js +0 -16
  125. package/dist/types/shortcuts/index.js.map +0 -1
  126. package/dist/types/shortcuts/message-shortcut.d.ts +0 -43
  127. package/dist/types/shortcuts/message-shortcut.d.ts.map +0 -1
  128. package/dist/types/shortcuts/message-shortcut.js +0 -3
  129. package/dist/types/shortcuts/message-shortcut.js.map +0 -1
  130. package/dist/types/utilities.d.ts +0 -23
  131. package/dist/types/utilities.d.ts.map +0 -1
  132. package/dist/types/utilities.js +0 -3
  133. package/dist/types/utilities.js.map +0 -1
  134. package/dist/types/view/index.d.ts +0 -175
  135. package/dist/types/view/index.d.ts.map +0 -1
  136. package/dist/types/view/index.js +0 -3
  137. package/dist/types/view/index.js.map +0 -1
@@ -1,357 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const http_1 = require("http");
4
- const https_1 = require("https");
5
- const querystring_1 = require("querystring");
6
- const logger_1 = require("@slack/logger");
7
- const oauth_1 = require("@slack/oauth");
8
- const url_1 = require("url");
9
- const verify_request_1 = require("./verify-request");
10
- const render_html_for_install_path_1 = require("./render-html-for-install-path");
11
- const errors_1 = require("../errors");
12
- /**
13
- * Receives HTTP requests with Events, Slash Commands, and Actions
14
- */
15
- class HTTPReceiver {
16
- constructor({ signingSecret = '', endpoints = ['/slack/events'], logger = undefined, logLevel = logger_1.LogLevel.INFO, processBeforeResponse = false, clientId = undefined, clientSecret = undefined, stateSecret = undefined, installationStore = undefined, scopes = undefined, installerOptions = {}, }) {
17
- var _a, _b, _c;
18
- // Initialize instance variables, substituting defaults for each value
19
- this.signingSecret = signingSecret;
20
- this.processBeforeResponse = processBeforeResponse;
21
- this.logger = logger !== null && logger !== void 0 ? logger : (() => {
22
- const defaultLogger = new logger_1.ConsoleLogger();
23
- defaultLogger.setLevel(logLevel);
24
- return defaultLogger;
25
- })();
26
- this.endpoints = Array.isArray(endpoints) ? endpoints : [endpoints];
27
- // Initialize InstallProvider when it's required options are provided
28
- if (clientId !== undefined &&
29
- clientSecret !== undefined &&
30
- (stateSecret !== undefined || installerOptions.stateStore !== undefined)) {
31
- this.installer = new oauth_1.InstallProvider({
32
- clientId,
33
- clientSecret,
34
- stateSecret,
35
- installationStore,
36
- logger,
37
- logLevel,
38
- stateStore: installerOptions.stateStore,
39
- authVersion: installerOptions.authVersion,
40
- clientOptions: installerOptions.clientOptions,
41
- authorizationUrl: installerOptions.authorizationUrl,
42
- });
43
- // Store the remaining instance variables that are related to using the InstallProvider
44
- this.installPath = (_a = installerOptions.installPath) !== null && _a !== void 0 ? _a : '/slack/install';
45
- this.installRedirectUriPath = (_b = installerOptions.redirectUriPath) !== null && _b !== void 0 ? _b : '/slack/oauth_redirect';
46
- this.installUrlOptions = {
47
- scopes: scopes !== null && scopes !== void 0 ? scopes : [],
48
- userScopes: installerOptions.userScopes,
49
- metadata: installerOptions.metadata,
50
- };
51
- this.installCallbackOptions = (_c = installerOptions.callbackOptions) !== null && _c !== void 0 ? _c : {};
52
- }
53
- // Assign the requestListener property by binding the unboundRequestListener to this instance
54
- this.requestListener = this.unboundRequestListener.bind(this);
55
- }
56
- init(app) {
57
- this.app = app;
58
- }
59
- start(portOrListenOptions, serverOptions = {}) {
60
- let createServerFn = http_1.createServer;
61
- // Decide which kind of server, HTTP or HTTPS, by searching for any keys in the serverOptions that are exclusive
62
- // to HTTPS
63
- if (Object.keys(serverOptions).filter((k) => httpsOptionKeys.includes(k)).length > 0) {
64
- createServerFn = https_1.createServer;
65
- }
66
- if (this.server !== undefined) {
67
- return Promise.reject(new errors_1.ReceiverInconsistentStateError('The receiver cannot be started because it was already started.'));
68
- }
69
- this.server = createServerFn(serverOptions, (req, res) => {
70
- try {
71
- this.requestListener(req, res);
72
- }
73
- catch (error) {
74
- if (error.code === errors_1.ErrorCode.HTTPReceiverDeferredRequestError) {
75
- this.logger.info('An unhandled request was ignored');
76
- res.writeHead(404);
77
- res.end();
78
- }
79
- else {
80
- this.logger.error('An unexpected error was encountered');
81
- this.logger.debug(`Error details: ${error}`);
82
- res.writeHead(500);
83
- res.end();
84
- }
85
- }
86
- });
87
- return new Promise((resolve, reject) => {
88
- if (this.server === undefined) {
89
- throw new errors_1.ReceiverInconsistentStateError(missingServerErrorDescription);
90
- }
91
- this.server.on('error', (error) => {
92
- if (this.server === undefined) {
93
- throw new errors_1.ReceiverInconsistentStateError(missingServerErrorDescription);
94
- }
95
- this.server.close();
96
- // If the error event occurs before listening completes (like EADDRINUSE), this works well. However, if the
97
- // error event happens some after the Promise is already resolved, the error would be silently swallowed up.
98
- // The documentation doesn't describe any specific errors that can occur after listening has started, so this
99
- // feels safe.
100
- reject(error);
101
- });
102
- this.server.on('close', () => {
103
- // Not removing all listeners because consumers could have added their own `close` event listener, and those
104
- // should be called. If the consumer doesn't dispose of any references to the server properly, this would be
105
- // a memory leak.
106
- // this.server?.removeAllListeners();
107
- this.server = undefined;
108
- });
109
- this.server.listen(portOrListenOptions, () => {
110
- if (this.server === undefined) {
111
- return reject(new errors_1.ReceiverInconsistentStateError(missingServerErrorDescription));
112
- }
113
- resolve(this.server);
114
- });
115
- });
116
- }
117
- // TODO: the arguments should be defined as the arguments to close() (which happen to be none), but for sake of
118
- // generic types
119
- stop() {
120
- return new Promise((resolve, reject) => {
121
- if (this.server === undefined) {
122
- return reject(new errors_1.ReceiverInconsistentStateError('The receiver cannot be stopped because it was not started.'));
123
- }
124
- this.server.close((error) => {
125
- if (error !== undefined) {
126
- return reject(error);
127
- }
128
- this.server = undefined;
129
- resolve();
130
- });
131
- });
132
- }
133
- unboundRequestListener(req, res) {
134
- // Route the request
135
- // NOTE: the domain and scheme of the following URL object are not necessarily accurate. The URL object is only
136
- // meant to be used to parse the path and query
137
- const { pathname: path } = new url_1.URL(req.url, `http://${req.headers.host}`);
138
- const method = req.method.toUpperCase();
139
- if (this.endpoints.includes(path) && method === 'POST') {
140
- // Handle incoming ReceiverEvent
141
- return this.handleIncomingEvent(req, res);
142
- }
143
- if (this.installer !== undefined && method === 'GET') {
144
- // When installer is defined then installPath and installRedirectUriPath are always defined
145
- const [installPath, installRedirectUriPath] = [this.installPath, this.installRedirectUriPath];
146
- if (path === installPath) {
147
- // Render installation path (containing Add to Slack button)
148
- return this.handleInstallPathRequest(res);
149
- }
150
- if (path === installRedirectUriPath) {
151
- // Handle OAuth callback request (to exchange authorization grant for a new access token)
152
- return this.handleInstallRedirectRequest(req, res);
153
- }
154
- }
155
- // If the request did not match the previous conditions, an error is thrown. The error can be caught by the
156
- // the caller in order to defer to other routing logic (similar to calling `next()` in connect middleware).
157
- throw new errors_1.HTTPReceiverDeferredRequestError('Unhandled HTTP request', req, res);
158
- }
159
- handleIncomingEvent(req, res) {
160
- // Wrapped in an async closure for ease of using await
161
- (async () => {
162
- var _a;
163
- let bufferedReq;
164
- let body;
165
- // Verify authenticity
166
- try {
167
- bufferedReq = await verify_request_1.verify({ signingSecret: this.signingSecret }, req);
168
- }
169
- catch (err) {
170
- this.logger.warn(`Request verification failed: ${err.message}`);
171
- res.writeHead(401);
172
- res.end();
173
- return;
174
- }
175
- // Parse request body
176
- // The object containing the parsed body is not exposed to the caller. It is preferred to reduce mutations to the
177
- // req object, so that its as reusable as possible. Later, we should consider adding an option for assigning the
178
- // parsed body to `req.body`, as this convention has been established by the popular `body-parser` package.
179
- try {
180
- body = parseBody(bufferedReq);
181
- }
182
- catch (err) {
183
- this.logger.warn(`Malformed request body: ${err.message}`);
184
- res.writeHead(400);
185
- res.end();
186
- return;
187
- }
188
- // Handle SSL checks
189
- // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
190
- if (body.ssl_check) {
191
- res.writeHead(200);
192
- res.end();
193
- return;
194
- }
195
- // Handle URL verification
196
- if (body.type === 'url_verification') {
197
- res.writeHead(200, { 'content-type': 'application/json' });
198
- res.end(JSON.stringify({ challenge: body.challenge }));
199
- return;
200
- }
201
- // Setup ack timeout warning
202
- let isAcknowledged = false;
203
- setTimeout(() => {
204
- if (!isAcknowledged) {
205
- this.logger.error('An incoming event was not acknowledged within 3 seconds. ' +
206
- 'Ensure that the ack() argument is called in a listener.');
207
- }
208
- }, 3001);
209
- // Structure the ReceiverEvent
210
- let storedResponse;
211
- const event = {
212
- body,
213
- ack: async (response) => {
214
- this.logger.debug('ack() begin');
215
- if (isAcknowledged) {
216
- throw new errors_1.ReceiverMultipleAckError();
217
- }
218
- isAcknowledged = true;
219
- if (this.processBeforeResponse) {
220
- // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
221
- if (!response) {
222
- storedResponse = '';
223
- }
224
- else {
225
- storedResponse = response;
226
- }
227
- this.logger.debug('ack() response stored');
228
- }
229
- else {
230
- // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
231
- if (!response) {
232
- res.writeHead(200);
233
- res.end();
234
- }
235
- else if (typeof response === 'string') {
236
- res.writeHead(200);
237
- res.end(response);
238
- }
239
- else {
240
- res.writeHead(200, { 'content-type': 'application/json' });
241
- res.end(JSON.stringify(response));
242
- }
243
- this.logger.debug('ack() response sent');
244
- }
245
- },
246
- };
247
- // Send the event to the app for processing
248
- try {
249
- await ((_a = this.app) === null || _a === void 0 ? void 0 : _a.processEvent(event));
250
- if (storedResponse !== undefined) {
251
- if (typeof storedResponse === 'string') {
252
- res.writeHead(200);
253
- res.end(storedResponse);
254
- }
255
- else {
256
- res.writeHead(200, { 'content-type': 'application/json' });
257
- res.end(JSON.stringify(storedResponse));
258
- }
259
- this.logger.debug('stored response sent');
260
- }
261
- }
262
- catch (err) {
263
- this.logger.error('An unhandled error occurred while Bolt processed an event');
264
- this.logger.debug(`Error details: ${err}, storedResponse: ${storedResponse}`);
265
- res.writeHead(500);
266
- res.end();
267
- }
268
- })();
269
- }
270
- handleInstallPathRequest(res) {
271
- // Wrapped in an async closure for ease of using await
272
- (async () => {
273
- // NOTE: Skipping some ceremony such as content negotiation, setting informative headers, etc. These may be nice
274
- // to have for completeness, but there's no clear benefit to adding them, so just keeping things simple. If a
275
- // user desires a more custom page, they can always call `App.installer.generateInstallUrl()` and render their
276
- // own page instead of using this one.
277
- try {
278
- // This function is only called from within unboundRequestListener after checking that installer is defined, and
279
- // when installer is defined then installUrlOptions is always defined too.
280
- const [installer, installUrlOptions] = [this.installer, this.installUrlOptions];
281
- // Generate the URL for the "Add to Slack" button.
282
- const url = await installer.generateInstallUrl(installUrlOptions);
283
- // Generate HTML response body
284
- const body = render_html_for_install_path_1.renderHtmlForInstallPath(url);
285
- // Serve a basic HTML page including the "Add to Slack" button.
286
- // Regarding headers:
287
- // - Content-Type is usually automatically detected by browsers
288
- // - Content-Length is not used because Transfer-Encoding='chunked' is automatically used.
289
- res.writeHead(200);
290
- res.end(body);
291
- }
292
- catch (err) {
293
- this.logger.error('An unhandled error occurred while Bolt processed a request to the installation path');
294
- this.logger.debug(`Error details: ${err}`);
295
- }
296
- })();
297
- }
298
- handleInstallRedirectRequest(req, res) {
299
- // This function is only called from within unboundRequestListener after checking that installer is defined, and
300
- // when installer is defined then installCallbackOptions is always defined too.
301
- const [installer, installCallbackOptions] = [this.installer, this.installCallbackOptions];
302
- installer.handleCallback(req, res, installCallbackOptions).catch((err) => {
303
- this.logger.error('HTTPReceiver encountered an unexpected error while handling the OAuth install redirect. Please report to the maintainers.');
304
- this.logger.debug(`Error details: ${err}`);
305
- });
306
- }
307
- }
308
- exports.default = HTTPReceiver;
309
- // Helpers
310
- function parseBody(req) {
311
- const bodyAsString = req.rawBody.toString();
312
- const contentType = req.headers['content-type'];
313
- if (contentType === 'application/x-www-form-urlencoded') {
314
- const parsedQs = querystring_1.parse(bodyAsString);
315
- const { payload } = parsedQs;
316
- if (typeof payload === 'string') {
317
- return JSON.parse(payload);
318
- }
319
- return parsedQs;
320
- }
321
- return JSON.parse(bodyAsString);
322
- }
323
- // Option keys for tls.createServer() and tls.createSecureContext(), exclusive of those for http.createServer()
324
- const httpsOptionKeys = [
325
- 'ALPNProtocols',
326
- 'clientCertEngine',
327
- 'enableTrace',
328
- 'handshakeTimeout',
329
- 'rejectUnauthorized',
330
- 'requestCert',
331
- 'sessionTimeout',
332
- 'SNICallback',
333
- 'ticketKeys',
334
- 'pskCallback',
335
- 'pskIdentityHint',
336
- 'ca',
337
- 'cert',
338
- 'sigalgs',
339
- 'ciphers',
340
- 'clientCertEngine',
341
- 'crl',
342
- 'dhparam',
343
- 'ecdhCurve',
344
- 'honorCipherOrder',
345
- 'key',
346
- 'privateKeyEngine',
347
- 'privateKeyIdentifier',
348
- 'maxVersion',
349
- 'minVersion',
350
- 'passphrase',
351
- 'pfx',
352
- 'secureOptions',
353
- 'secureProtocol',
354
- 'sessionIdContext',
355
- ];
356
- const missingServerErrorDescription = 'The receiver cannot be started because private state was mutated. Please report this to the maintainers.';
357
- //# sourceMappingURL=HTTPReceiver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HTTPReceiver.js","sourceRoot":"","sources":["../../src/receivers/HTTPReceiver.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- import { SocketModeClient } from '@slack/socket-mode';
2
- import { Logger, LogLevel } from '@slack/logger';
3
- import { InstallProvider, CallbackOptions, InstallProviderOptions, InstallURLOptions } from '@slack/oauth';
4
- import { AppsConnectionsOpenResponse } from '@slack/web-api';
5
- import App from '../App';
6
- import { Receiver } from '../types';
7
- export interface SocketModeReceiverOptions {
8
- logger?: Logger;
9
- logLevel?: LogLevel;
10
- clientId?: string;
11
- clientSecret?: string;
12
- stateSecret?: InstallProviderOptions['stateSecret'];
13
- installationStore?: InstallProviderOptions['installationStore'];
14
- scopes?: InstallURLOptions['scopes'];
15
- installerOptions?: InstallerOptions;
16
- appToken: string;
17
- }
18
- interface InstallerOptions {
19
- stateStore?: InstallProviderOptions['stateStore'];
20
- authVersion?: InstallProviderOptions['authVersion'];
21
- metadata?: InstallURLOptions['metadata'];
22
- installPath?: string;
23
- redirectUriPath?: string;
24
- callbackOptions?: CallbackOptions;
25
- userScopes?: InstallURLOptions['userScopes'];
26
- clientOptions?: InstallProviderOptions['clientOptions'];
27
- authorizationUrl?: InstallProviderOptions['authorizationUrl'];
28
- port?: number;
29
- }
30
- /**
31
- * Receives Events, Slash Commands, and Actions of a web socket connection
32
- */
33
- export default class SocketModeReceiver implements Receiver {
34
- client: SocketModeClient;
35
- private app;
36
- private logger;
37
- installer: InstallProvider | undefined;
38
- constructor({ appToken, logger, logLevel, clientId, clientSecret, stateSecret, installationStore, scopes, installerOptions, }: SocketModeReceiverOptions);
39
- init(app: App): void;
40
- start(): Promise<AppsConnectionsOpenResponse>;
41
- stop(): Promise<void>;
42
- }
43
- export {};
44
- //# sourceMappingURL=SocketModeReceiver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SocketModeReceiver.d.ts","sourceRoot":"","sources":["../../src/receivers/SocketModeReceiver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAiB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3G,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAiB,MAAM,UAAU,CAAC;AAKnD,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACpD,iBAAiB,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IAChE,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC;IACxD,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,QAAQ;IAElD,MAAM,EAAE,gBAAgB,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAkB;IAE7B,OAAO,CAAC,MAAM,CAAS;IAEhB,SAAS,EAAE,eAAe,GAAG,SAAS,CAAa;gBAE9C,EACV,QAAQ,EACR,MAAkB,EAClB,QAAwB,EACxB,QAAoB,EACpB,YAAwB,EACxB,WAAuB,EACvB,iBAA6B,EAC7B,MAAkB,EAClB,gBAAqB,GACtB,EAAE,yBAAyB;IAmFrB,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAIpB,KAAK,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAK7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B"}
@@ -1,111 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /* eslint-disable @typescript-eslint/explicit-member-accessibility, @typescript-eslint/strict-boolean-expressions */
4
- const socket_mode_1 = require("@slack/socket-mode");
5
- const http_1 = require("http");
6
- const logger_1 = require("@slack/logger");
7
- const oauth_1 = require("@slack/oauth");
8
- const render_html_for_install_path_1 = require("./render-html-for-install-path");
9
- /**
10
- * Receives Events, Slash Commands, and Actions of a web socket connection
11
- */
12
- class SocketModeReceiver {
13
- constructor({ appToken, logger = undefined, logLevel = logger_1.LogLevel.INFO, clientId = undefined, clientSecret = undefined, stateSecret = undefined, installationStore = undefined, scopes = undefined, installerOptions = {}, }) {
14
- this.installer = undefined;
15
- this.client = new socket_mode_1.SocketModeClient({
16
- appToken,
17
- logLevel,
18
- logger,
19
- clientOptions: installerOptions.clientOptions,
20
- });
21
- if (typeof logger !== 'undefined') {
22
- this.logger = logger;
23
- }
24
- else {
25
- this.logger = new logger_1.ConsoleLogger();
26
- this.logger.setLevel(logLevel);
27
- }
28
- if (clientId !== undefined &&
29
- clientSecret !== undefined &&
30
- (stateSecret !== undefined || installerOptions.stateStore !== undefined)) {
31
- this.installer = new oauth_1.InstallProvider({
32
- clientId,
33
- clientSecret,
34
- stateSecret,
35
- installationStore,
36
- logLevel,
37
- logger,
38
- stateStore: installerOptions.stateStore,
39
- authVersion: installerOptions.authVersion,
40
- clientOptions: installerOptions.clientOptions,
41
- authorizationUrl: installerOptions.authorizationUrl,
42
- });
43
- }
44
- // Add OAuth routes to receiver
45
- if (this.installer !== undefined) {
46
- // use default or passed in redirect path
47
- const redirectUriPath = installerOptions.redirectUriPath === undefined ? '/slack/oauth_redirect' : installerOptions.redirectUriPath;
48
- // use default or passed in installPath
49
- const installPath = installerOptions.installPath === undefined ? '/slack/install' : installerOptions.installPath;
50
- const server = http_1.createServer(async (req, res) => {
51
- if (req.url !== undefined && req.url.startsWith(redirectUriPath)) {
52
- // call installer.handleCallback to wrap up the install flow
53
- await this.installer.handleCallback(req, res, installerOptions.callbackOptions);
54
- }
55
- else if (req.url !== undefined && req.url.startsWith(installPath)) {
56
- try {
57
- const url = await this.installer.generateInstallUrl({
58
- metadata: installerOptions.metadata,
59
- scopes: scopes,
60
- userScopes: installerOptions.userScopes,
61
- });
62
- res.writeHead(200, {});
63
- res.end(render_html_for_install_path_1.renderHtmlForInstallPath(url));
64
- }
65
- catch (err) {
66
- throw new Error(err);
67
- }
68
- }
69
- else {
70
- this.logger.error(`Tried to reach ${req.url} which isn't a valid route.`);
71
- // Return 404 because we don't support route
72
- res.writeHead(404, {});
73
- res.end(`route ${req.url} doesn't exist!`);
74
- }
75
- });
76
- const port = installerOptions.port === undefined ? 3000 : installerOptions.port;
77
- this.logger.debug(`listening on port ${port} for OAuth`);
78
- this.logger.debug(`Go to http://localhost:${port}${installPath} to initiate OAuth flow`);
79
- // use port 3000 by default
80
- server.listen(port);
81
- }
82
- this.client.on('slack_event', async ({ ack, body }) => {
83
- var _a;
84
- const event = {
85
- body,
86
- ack,
87
- };
88
- await ((_a = this.app) === null || _a === void 0 ? void 0 : _a.processEvent(event));
89
- });
90
- }
91
- init(app) {
92
- this.app = app;
93
- }
94
- start() {
95
- // start socket mode client
96
- return this.client.start();
97
- }
98
- stop() {
99
- return new Promise((resolve, reject) => {
100
- try {
101
- this.client.disconnect();
102
- resolve();
103
- }
104
- catch (error) {
105
- reject(error);
106
- }
107
- });
108
- }
109
- }
110
- exports.default = SocketModeReceiver;
111
- //# sourceMappingURL=SocketModeReceiver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SocketModeReceiver.js","sourceRoot":"","sources":["../../src/receivers/SocketModeReceiver.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function renderHtmlForInstallPath(addToSlackUrl: string): string;
2
- //# sourceMappingURL=render-html-for-install-path.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-html-for-install-path.d.ts","sourceRoot":"","sources":["../../src/receivers/render-html-for-install-path.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,UAc7D"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderHtmlForInstallPath = void 0;
4
- function renderHtmlForInstallPath(addToSlackUrl) {
5
- return `<html>
6
- <body>
7
- <a href=${addToSlackUrl}>
8
- <img
9
- alt="Add to Slack"
10
- height="40"
11
- width="139"
12
- src="https://platform.slack-edge.com/img/add_to_slack.png"
13
- srcset="https://platform.slack-edge.com/img/add_to_slack.png 1x, https://platform.slack-edge.com/img/add_to_slack@2x.png 2x"
14
- />
15
- </a>
16
- </body>
17
- </html>`;
18
- }
19
- exports.renderHtmlForInstallPath = renderHtmlForInstallPath;
20
- //# sourceMappingURL=render-html-for-install-path.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-html-for-install-path.js","sourceRoot":"","sources":["../../src/receivers/render-html-for-install-path.ts"],"names":[],"mappings":";;;AAAA,SAAgB,wBAAwB,CAAC,aAAqB;IAC5D,OAAO;;kBAES,aAAa;;;;;;;;;;YAUnB,CAAC;AACb,CAAC;AAdD,4DAcC"}
@@ -1,40 +0,0 @@
1
- /**
2
- * Functions used to verify the authenticity of incoming HTTP requests from Slack.
3
- *
4
- * The functions in this file are intentionally generic (don't depend on any particular web framework) and
5
- * time-independent (for testing) so they can be used in a wide variety of applications. The intention is to distribute
6
- * these functions in its own package.
7
- *
8
- * For now, there is some duplication between the contents of this file and ExpressReceiver.ts. Later, the duplication
9
- * can be reduced by implementing the equivalent functionality in terms of the functions in this file.
10
- */
11
- /// <reference types="node" />
12
- import type { Logger } from '@slack/logger';
13
- import type { IncomingMessage, ServerResponse } from 'http';
14
- export interface VerifyOptions {
15
- signingSecret: string;
16
- nowMs?: () => number;
17
- logger?: Logger;
18
- }
19
- export interface BufferedIncomingMessage extends IncomingMessage {
20
- rawBody: Buffer;
21
- }
22
- /**
23
- * Verify the authenticity of an incoming HTTP request from Slack and buffer the HTTP body.
24
- *
25
- * When verification succeeds, the returned promise is resolved. When verification fails, the returned promise is
26
- * rejected with an error describing the reason. IMPORTANT: The error messages may contain sensitive information about
27
- * failures, do not return the error message text to users in a production environment. It's recommended to catch all
28
- * errors and return an opaque failure (HTTP status code 401, no body).
29
- *
30
- * Verification requires consuming `req` as a Readable stream. If the `req` was consumed before this function is called,
31
- * then this function expects it to be stored as a Buffer at `req.rawBody`. This is a convention used by infrastructure
32
- * platforms such as Google Cloud Platform. When the function returns, the buffered body is stored at the `req.rawBody`
33
- * property for further handling.
34
- *
35
- * The function is designed to be curry-able for use as a standard http RequestListener, and therefore keeps `req` and
36
- * `res` are the last arguments. However, the function is also async, which means when it is curried for use as a
37
- * RequestListener, the caller should also capture and use the return value.
38
- */
39
- export declare function verify(options: VerifyOptions, req: IncomingMessage, _res?: ServerResponse): Promise<BufferedIncomingMessage>;
40
- //# sourceMappingURL=verify-request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify-request.d.ts","sourceRoot":"","sources":["../../src/receivers/verify-request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,eAAe,EACpB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,uBAAuB,CAAC,CA4ClC"}