@slack/bolt 3.6.0 → 3.9.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 (93) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -2
  3. package/dist/App.d.ts +60 -4
  4. package/dist/App.d.ts.map +1 -1
  5. package/dist/App.js +179 -100
  6. package/dist/App.js.map +1 -1
  7. package/dist/WorkflowStep.d.ts.map +1 -1
  8. package/dist/WorkflowStep.js +25 -28
  9. package/dist/WorkflowStep.js.map +1 -1
  10. package/dist/conversation-store.d.ts.map +1 -1
  11. package/dist/conversation-store.js +5 -6
  12. package/dist/conversation-store.js.map +1 -1
  13. package/dist/errors.d.ts +13 -5
  14. package/dist/errors.d.ts.map +1 -1
  15. package/dist/errors.js +25 -9
  16. package/dist/errors.js.map +1 -1
  17. package/dist/helpers.d.ts.map +1 -1
  18. package/dist/helpers.js +1 -0
  19. package/dist/helpers.js.map +1 -1
  20. package/dist/index.js +2 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/middleware/builtin.d.ts.map +1 -1
  23. package/dist/middleware/builtin.js +0 -19
  24. package/dist/middleware/builtin.js.map +1 -1
  25. package/dist/middleware/process.d.ts +1 -1
  26. package/dist/middleware/process.d.ts.map +1 -1
  27. package/dist/middleware/process.js +1 -2
  28. package/dist/middleware/process.js.map +1 -1
  29. package/dist/receivers/AwsLambdaReceiver.d.ts +4 -1
  30. package/dist/receivers/AwsLambdaReceiver.d.ts.map +1 -1
  31. package/dist/receivers/AwsLambdaReceiver.js +15 -20
  32. package/dist/receivers/AwsLambdaReceiver.js.map +1 -1
  33. package/dist/receivers/ExpressReceiver.d.ts +20 -7
  34. package/dist/receivers/ExpressReceiver.d.ts.map +1 -1
  35. package/dist/receivers/ExpressReceiver.js +167 -87
  36. package/dist/receivers/ExpressReceiver.js.map +1 -1
  37. package/dist/receivers/HTTPReceiver.d.ts +54 -4
  38. package/dist/receivers/HTTPReceiver.d.ts.map +1 -1
  39. package/dist/receivers/HTTPReceiver.js +240 -94
  40. package/dist/receivers/HTTPReceiver.js.map +1 -1
  41. package/dist/receivers/SocketModeReceiver.d.ts +18 -1
  42. package/dist/receivers/SocketModeReceiver.d.ts.map +1 -1
  43. package/dist/receivers/SocketModeReceiver.js +109 -41
  44. package/dist/receivers/SocketModeReceiver.js.map +1 -1
  45. package/dist/receivers/custom-routes.d.ts +14 -0
  46. package/dist/receivers/custom-routes.d.ts.map +1 -0
  47. package/dist/receivers/custom-routes.js +33 -0
  48. package/dist/receivers/custom-routes.js.map +1 -0
  49. package/dist/receivers/http-utils.d.ts +5 -0
  50. package/dist/receivers/http-utils.d.ts.map +1 -0
  51. package/dist/receivers/http-utils.js +35 -0
  52. package/dist/receivers/http-utils.js.map +1 -0
  53. package/dist/receivers/render-html-for-install-path.d.ts +1 -0
  54. package/dist/receivers/render-html-for-install-path.d.ts.map +1 -1
  55. package/dist/receivers/render-html-for-install-path.js +6 -1
  56. package/dist/receivers/render-html-for-install-path.js.map +1 -1
  57. package/dist/receivers/verify-redirect-opts.d.ts +7 -0
  58. package/dist/receivers/verify-redirect-opts.d.ts.map +1 -0
  59. package/dist/receivers/verify-redirect-opts.js +23 -0
  60. package/dist/receivers/verify-redirect-opts.js.map +1 -0
  61. package/dist/receivers/verify-request.d.ts +1 -0
  62. package/dist/receivers/verify-request.d.ts.map +1 -1
  63. package/dist/receivers/verify-request.js +8 -4
  64. package/dist/receivers/verify-request.js.map +1 -1
  65. package/dist/types/actions/block-action.d.ts +8 -1
  66. package/dist/types/actions/block-action.d.ts.map +1 -1
  67. package/dist/types/actions/index.d.ts +4 -4
  68. package/dist/types/actions/index.d.ts.map +1 -1
  69. package/dist/types/actions/index.js.map +1 -1
  70. package/dist/types/actions/workflow-step-edit.d.ts.map +1 -1
  71. package/dist/types/events/base-events.d.ts +5 -5
  72. package/dist/types/events/base-events.d.ts.map +1 -1
  73. package/dist/types/events/base-events.js.map +1 -1
  74. package/dist/types/events/index.d.ts +4 -4
  75. package/dist/types/events/index.d.ts.map +1 -1
  76. package/dist/types/events/index.js.map +1 -1
  77. package/dist/types/events/message-events.d.ts.map +1 -1
  78. package/dist/types/helpers.d.ts +2 -2
  79. package/dist/types/helpers.d.ts.map +1 -1
  80. package/dist/types/middleware.d.ts +10 -1
  81. package/dist/types/middleware.d.ts.map +1 -1
  82. package/dist/types/middleware.js +11 -0
  83. package/dist/types/middleware.js.map +1 -1
  84. package/dist/types/options/index.d.ts +2 -2
  85. package/dist/types/options/index.d.ts.map +1 -1
  86. package/dist/types/receiver.d.ts +3 -0
  87. package/dist/types/receiver.d.ts.map +1 -1
  88. package/dist/types/shortcuts/index.d.ts +2 -2
  89. package/dist/types/shortcuts/index.d.ts.map +1 -1
  90. package/dist/types/shortcuts/index.js.map +1 -1
  91. package/dist/types/shortcuts/message-shortcut.d.ts.map +1 -1
  92. package/dist/types/utilities.d.ts.map +1 -1
  93. package/package.json +18 -20
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable @typescript-eslint/explicit-member-accessibility, @typescript-eslint/strict-boolean-expressions */
3
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
3
  if (k2 === undefined) k2 = k;
5
4
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -23,7 +22,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
23
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
24
23
  };
25
24
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.verifySignatureAndParseRawBody = exports.respondToUrlVerification = exports.respondToSslCheck = void 0;
25
+ exports.verifySignatureAndParseBody = exports.verifySignatureAndParseRawBody = exports.respondToUrlVerification = exports.respondToSslCheck = void 0;
26
+ /* eslint-disable @typescript-eslint/no-explicit-any */
27
27
  const http_1 = require("http");
28
28
  const https_1 = require("https");
29
29
  const express_1 = __importStar(require("express"));
@@ -34,21 +34,67 @@ const tsscmp_1 = __importDefault(require("tsscmp"));
34
34
  const logger_1 = require("@slack/logger");
35
35
  const oauth_1 = require("@slack/oauth");
36
36
  const errors_1 = require("../errors");
37
- const render_html_for_install_path_1 = require("./render-html-for-install-path");
37
+ const render_html_for_install_path_1 = __importDefault(require("./render-html-for-install-path"));
38
+ const verify_redirect_opts_1 = require("./verify-redirect-opts");
39
+ const http_utils_1 = require("./http-utils");
40
+ // Option keys for tls.createServer() and tls.createSecureContext(), exclusive of those for http.createServer()
41
+ const httpsOptionKeys = [
42
+ 'ALPNProtocols',
43
+ 'clientCertEngine',
44
+ 'enableTrace',
45
+ 'handshakeTimeout',
46
+ 'rejectUnauthorized',
47
+ 'requestCert',
48
+ 'sessionTimeout',
49
+ 'SNICallback',
50
+ 'ticketKeys',
51
+ 'pskCallback',
52
+ 'pskIdentityHint',
53
+ 'ca',
54
+ 'cert',
55
+ 'sigalgs',
56
+ 'ciphers',
57
+ 'clientCertEngine',
58
+ 'crl',
59
+ 'dhparam',
60
+ 'ecdhCurve',
61
+ 'honorCipherOrder',
62
+ 'key',
63
+ 'privateKeyEngine',
64
+ 'privateKeyIdentifier',
65
+ 'maxVersion',
66
+ 'minVersion',
67
+ 'passphrase',
68
+ 'pfx',
69
+ 'secureOptions',
70
+ 'secureProtocol',
71
+ 'sessionIdContext',
72
+ ];
73
+ const missingServerErrorDescription = 'The receiver cannot be started because private state was mutated. Please report this to the maintainers.';
74
+ const respondToSslCheck = (req, res, next) => {
75
+ if (req.body && req.body.ssl_check) {
76
+ res.send();
77
+ return;
78
+ }
79
+ next();
80
+ };
81
+ exports.respondToSslCheck = respondToSslCheck;
82
+ const respondToUrlVerification = (req, res, next) => {
83
+ if (req.body && req.body.type && req.body.type === 'url_verification') {
84
+ res.json({ challenge: req.body.challenge });
85
+ return;
86
+ }
87
+ next();
88
+ };
89
+ exports.respondToUrlVerification = respondToUrlVerification;
38
90
  /**
39
91
  * Receives HTTP requests with Events, Slash Commands, and Actions
40
92
  */
41
93
  class ExpressReceiver {
42
- constructor({ signingSecret = '', logger = undefined, logLevel = logger_1.LogLevel.INFO, endpoints = { events: '/slack/events' }, processBeforeResponse = false, clientId = undefined, clientSecret = undefined, stateSecret = undefined, installationStore = undefined, scopes = undefined, installerOptions = {}, }) {
94
+ constructor({ signingSecret = '', logger = undefined, logLevel = logger_1.LogLevel.INFO, endpoints = { events: '/slack/events' }, processBeforeResponse = false, signatureVerification = true, clientId = undefined, clientSecret = undefined, stateSecret = undefined, redirectUri = undefined, installationStore = undefined, scopes = undefined, installerOptions = {}, app = undefined, router = undefined, customPropertiesExtractor = (_req) => ({}), }) {
95
+ var _a;
43
96
  this.installer = undefined;
44
- this.app = express_1.default();
45
- if (typeof logger !== 'undefined') {
46
- this.logger = logger;
47
- }
48
- else {
49
- this.logger = new logger_1.ConsoleLogger();
50
- this.logger.setLevel(logLevel);
51
- }
97
+ this.app = app !== undefined ? app : (0, express_1.default)();
52
98
  if (typeof logger !== 'undefined') {
53
99
  this.logger = logger;
54
100
  }
@@ -56,21 +102,31 @@ class ExpressReceiver {
56
102
  this.logger = new logger_1.ConsoleLogger();
57
103
  this.logger.setLevel(logLevel);
58
104
  }
105
+ this.signatureVerification = signatureVerification;
106
+ const bodyParser = this.signatureVerification ?
107
+ buildVerificationBodyParserMiddleware(this.logger, signingSecret) :
108
+ buildBodyParserMiddleware(this.logger);
59
109
  const expressMiddleware = [
60
- verifySignatureAndParseRawBody(this.logger, signingSecret),
110
+ bodyParser,
61
111
  exports.respondToSslCheck,
62
112
  exports.respondToUrlVerification,
63
113
  this.requestHandler.bind(this),
64
114
  ];
65
115
  this.processBeforeResponse = processBeforeResponse;
66
116
  const endpointList = typeof endpoints === 'string' ? [endpoints] : Object.values(endpoints);
67
- this.router = express_1.Router();
117
+ this.router = router !== undefined ? router : (0, express_1.Router)();
68
118
  endpointList.forEach((endpoint) => {
69
119
  this.router.post(endpoint, ...expressMiddleware);
70
120
  });
121
+ this.customPropertiesExtractor = customPropertiesExtractor;
122
+ // Verify redirect options if supplied, throws coded error if invalid
123
+ (0, verify_redirect_opts_1.verifyRedirectOpts)({ redirectUri, redirectUriPath: installerOptions.redirectUriPath });
71
124
  if (clientId !== undefined &&
72
125
  clientSecret !== undefined &&
73
- (stateSecret !== undefined || installerOptions.stateStore !== undefined)) {
126
+ (installerOptions.stateVerification === false || // state store not needed
127
+ stateSecret !== undefined ||
128
+ installerOptions.stateStore !== undefined) // user provided state store
129
+ ) {
74
130
  this.installer = new oauth_1.InstallProvider({
75
131
  clientId,
76
132
  clientSecret,
@@ -79,26 +135,55 @@ class ExpressReceiver {
79
135
  logLevel,
80
136
  logger,
81
137
  stateStore: installerOptions.stateStore,
82
- authVersion: installerOptions.authVersion,
138
+ stateVerification: installerOptions.stateVerification,
139
+ authVersion: (_a = installerOptions.authVersion) !== null && _a !== void 0 ? _a : 'v2',
83
140
  clientOptions: installerOptions.clientOptions,
84
141
  authorizationUrl: installerOptions.authorizationUrl,
85
142
  });
86
143
  }
144
+ // create install url options
145
+ const installUrlOptions = {
146
+ metadata: installerOptions.metadata,
147
+ scopes: scopes !== null && scopes !== void 0 ? scopes : [],
148
+ userScopes: installerOptions.userScopes,
149
+ redirectUri,
150
+ };
87
151
  // Add OAuth routes to receiver
88
152
  if (this.installer !== undefined) {
89
- const redirectUriPath = installerOptions.redirectUriPath === undefined ? '/slack/oauth_redirect' : installerOptions.redirectUriPath;
153
+ const redirectUriPath = installerOptions.redirectUriPath === undefined ?
154
+ '/slack/oauth_redirect' :
155
+ installerOptions.redirectUriPath;
156
+ const { callbackOptions, stateVerification } = installerOptions;
90
157
  this.router.use(redirectUriPath, async (req, res) => {
91
- await this.installer.handleCallback(req, res, installerOptions.callbackOptions);
158
+ if (stateVerification === false) {
159
+ // when stateVerification is disabled pass install options directly to handler
160
+ // since they won't be encoded in the state param of the generated url
161
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
162
+ await this.installer.handleCallback(req, res, callbackOptions, installUrlOptions);
163
+ }
164
+ else {
165
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
166
+ await this.installer.handleCallback(req, res, callbackOptions);
167
+ }
92
168
  });
93
169
  const installPath = installerOptions.installPath === undefined ? '/slack/install' : installerOptions.installPath;
94
170
  this.router.get(installPath, async (_req, res, next) => {
95
171
  try {
96
- const url = await this.installer.generateInstallUrl({
97
- metadata: installerOptions.metadata,
98
- scopes: scopes,
99
- userScopes: installerOptions.userScopes,
100
- });
101
- res.send(render_html_for_install_path_1.renderHtmlForInstallPath(url));
172
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
173
+ const url = await this.installer.generateInstallUrl(installUrlOptions, stateVerification);
174
+ if (installerOptions.directInstall) {
175
+ // If a Slack app sets "Direct Install URL" in the Slack app configuration,
176
+ // the installation flow of the app should start with the Slack authorize URL.
177
+ // See https://api.slack.com/start/distributing/directory#direct_install for more details.
178
+ res.redirect(url);
179
+ }
180
+ else {
181
+ // The installation starts from a landing page served by this app.
182
+ const renderHtml = installerOptions.renderHtmlForInstallPath !== undefined ?
183
+ installerOptions.renderHtmlForInstallPath :
184
+ render_html_for_install_path_1.default;
185
+ res.send(renderHtml(url));
186
+ }
102
187
  }
103
188
  catch (error) {
104
189
  next(error);
@@ -114,7 +199,6 @@ class ExpressReceiver {
114
199
  if (!isAcknowledged) {
115
200
  this.logger.error('An incoming event was not acknowledged within 3 seconds. Ensure that the ack() argument is called in a listener.');
116
201
  }
117
- // tslint:disable-next-line: align
118
202
  }, 3001);
119
203
  let storedResponse;
120
204
  const event = {
@@ -147,6 +231,9 @@ class ExpressReceiver {
147
231
  this.logger.debug('ack() response sent');
148
232
  }
149
233
  },
234
+ retryNum: (0, http_utils_1.extractRetryNum)(req),
235
+ retryReason: (0, http_utils_1.extractRetryReason)(req),
236
+ customProperties: this.customPropertiesExtractor(req),
150
237
  };
151
238
  try {
152
239
  await ((_a = this.bolt) === null || _a === void 0 ? void 0 : _a.processEvent(event));
@@ -161,6 +248,17 @@ class ExpressReceiver {
161
248
  }
162
249
  }
163
250
  catch (err) {
251
+ const e = err;
252
+ if ('code' in e) {
253
+ // CodedError has code: string
254
+ const errorCode = err.code;
255
+ if (errorCode === errors_1.ErrorCode.AuthorizationError) {
256
+ // authorize function threw an exception, which means there is no valid installation data
257
+ res.status(401).send();
258
+ isAcknowledged = true;
259
+ return;
260
+ }
261
+ }
164
262
  res.status(500).send();
165
263
  throw err;
166
264
  }
@@ -170,7 +268,7 @@ class ExpressReceiver {
170
268
  }
171
269
  start(portOrListenOptions, serverOptions = {}) {
172
270
  let createServerFn = http_1.createServer;
173
- // Decide which kind of server, HTTP or HTTPS, by search for any keys in the serverOptions that are exclusive to HTTPS
271
+ // Look for HTTPS-specific serverOptions to determine which factory function to use
174
272
  if (Object.keys(serverOptions).filter((k) => httpsOptionKeys.includes(k)).length > 0) {
175
273
  createServerFn = https_1.createServer;
176
274
  }
@@ -204,50 +302,39 @@ class ExpressReceiver {
204
302
  if (this.server === undefined) {
205
303
  return reject(new errors_1.ReceiverInconsistentStateError(missingServerErrorDescription));
206
304
  }
207
- resolve(this.server);
305
+ return resolve(this.server);
208
306
  });
209
307
  });
210
308
  }
211
309
  // TODO: the arguments should be defined as the arguments to close() (which happen to be none), but for sake of
212
310
  // generic types
213
311
  stop() {
312
+ if (this.server === undefined) {
313
+ return Promise.reject(new errors_1.ReceiverInconsistentStateError('The receiver cannot be stopped because it was not started.'));
314
+ }
214
315
  return new Promise((resolve, reject) => {
215
- if (this.server === undefined) {
216
- return reject(new errors_1.ReceiverInconsistentStateError('The receiver cannot be stopped because it was not started.'));
217
- }
218
- this.server.close((error) => {
316
+ var _a;
317
+ (_a = this.server) === null || _a === void 0 ? void 0 : _a.close((error) => {
219
318
  if (error !== undefined) {
220
319
  return reject(error);
221
320
  }
222
321
  this.server = undefined;
223
- resolve();
322
+ return resolve();
224
323
  });
225
324
  });
226
325
  }
227
326
  }
228
327
  exports.default = ExpressReceiver;
229
- const respondToSslCheck = (req, res, next) => {
230
- if (req.body && req.body.ssl_check) {
231
- res.send();
232
- return;
233
- }
234
- next();
235
- };
236
- exports.respondToSslCheck = respondToSslCheck;
237
- const respondToUrlVerification = (req, res, next) => {
238
- if (req.body && req.body.type && req.body.type === 'url_verification') {
239
- res.json({ challenge: req.body.challenge });
240
- return;
241
- }
242
- next();
243
- };
244
- exports.respondToUrlVerification = respondToUrlVerification;
328
+ function verifySignatureAndParseRawBody(logger, signingSecret) {
329
+ return buildVerificationBodyParserMiddleware(logger, signingSecret);
330
+ }
331
+ exports.verifySignatureAndParseRawBody = verifySignatureAndParseRawBody;
245
332
  /**
246
333
  * This request handler has two responsibilities:
247
334
  * - Verify the request signature
248
335
  * - Parse request.body and assign the successfully parsed object to it.
249
336
  */
250
- function verifySignatureAndParseRawBody(logger, signingSecret) {
337
+ function buildVerificationBodyParserMiddleware(logger, signingSecret) {
251
338
  return async (req, res, next) => {
252
339
  let stringBody;
253
340
  // On some environments like GCP (Google Cloud Platform),
@@ -257,7 +344,7 @@ function verifySignatureAndParseRawBody(logger, signingSecret) {
257
344
  stringBody = preparsedRawBody.toString();
258
345
  }
259
346
  else {
260
- stringBody = (await raw_body_1.default(req)).toString();
347
+ stringBody = (await (0, raw_body_1.default)(req)).toString();
261
348
  }
262
349
  // *** Parsing body ***
263
350
  // As the verification passed, parse the body as an object and assign it to req.body
@@ -280,9 +367,10 @@ function verifySignatureAndParseRawBody(logger, signingSecret) {
280
367
  return next();
281
368
  };
282
369
  }
283
- exports.verifySignatureAndParseRawBody = verifySignatureAndParseRawBody;
284
370
  function logError(logger, message, error) {
285
- const logMessage = 'code' in error ? `${message} (code: ${error.code}, message: ${error.message})` : `${message} (error: ${error})`;
371
+ const logMessage = 'code' in error ?
372
+ `${message} (code: ${error.code}, message: ${error.message})` :
373
+ `${message} (error: ${error})`;
286
374
  logger.warn(logMessage);
287
375
  }
288
376
  function verifyRequestSignature(signingSecret, body, signature, requestTimestamp) {
@@ -303,7 +391,7 @@ function verifyRequestSignature(signingSecret, body, signature, requestTimestamp
303
391
  const hmac = crypto_1.default.createHmac('sha256', signingSecret);
304
392
  const [version, hash] = signature.split('=');
305
393
  hmac.update(`${version}:${ts}:${body}`);
306
- if (!tsscmp_1.default(hash, hmac.digest('hex'))) {
394
+ if (!(0, tsscmp_1.default)(hash, hmac.digest('hex'))) {
307
395
  throw new errors_1.ReceiverAuthenticityError('Slack request signing verification failed. Signature mismatch.');
308
396
  }
309
397
  }
@@ -318,6 +406,32 @@ function verifySignatureAndParseBody(signingSecret, body, headers) {
318
406
  verifyRequestSignature(signingSecret, body, signature, requestTimestamp);
319
407
  return parseRequestBody(body, contentType);
320
408
  }
409
+ exports.verifySignatureAndParseBody = verifySignatureAndParseBody;
410
+ function buildBodyParserMiddleware(logger) {
411
+ return async (req, res, next) => {
412
+ let stringBody;
413
+ // On some environments like GCP (Google Cloud Platform),
414
+ // req.body can be pre-parsed and be passed as req.rawBody here
415
+ const preparsedRawBody = req.rawBody;
416
+ if (preparsedRawBody !== undefined) {
417
+ stringBody = preparsedRawBody.toString();
418
+ }
419
+ else {
420
+ stringBody = (await (0, raw_body_1.default)(req)).toString();
421
+ }
422
+ try {
423
+ const { 'content-type': contentType } = req.headers;
424
+ req.body = parseRequestBody(stringBody, contentType);
425
+ }
426
+ catch (error) {
427
+ if (error) {
428
+ logError(logger, 'Parsing request body failed', error);
429
+ return res.status(400).send();
430
+ }
431
+ }
432
+ return next();
433
+ };
434
+ }
321
435
  function parseRequestBody(stringBody, contentType) {
322
436
  if (contentType === 'application/x-www-form-urlencoded') {
323
437
  const parsedBody = querystring_1.default.parse(stringBody);
@@ -328,38 +442,4 @@ function parseRequestBody(stringBody, contentType) {
328
442
  }
329
443
  return JSON.parse(stringBody);
330
444
  }
331
- // Option keys for tls.createServer() and tls.createSecureContext(), exclusive of those for http.createServer()
332
- const httpsOptionKeys = [
333
- 'ALPNProtocols',
334
- 'clientCertEngine',
335
- 'enableTrace',
336
- 'handshakeTimeout',
337
- 'rejectUnauthorized',
338
- 'requestCert',
339
- 'sessionTimeout',
340
- 'SNICallback',
341
- 'ticketKeys',
342
- 'pskCallback',
343
- 'pskIdentityHint',
344
- 'ca',
345
- 'cert',
346
- 'sigalgs',
347
- 'ciphers',
348
- 'clientCertEngine',
349
- 'crl',
350
- 'dhparam',
351
- 'ecdhCurve',
352
- 'honorCipherOrder',
353
- 'key',
354
- 'privateKeyEngine',
355
- 'privateKeyIdentifier',
356
- 'maxVersion',
357
- 'minVersion',
358
- 'passphrase',
359
- 'pfx',
360
- 'secureOptions',
361
- 'secureProtocol',
362
- 'sessionIdContext',
363
- ];
364
- const missingServerErrorDescription = 'The receiver cannot be started because private state was mutated. Please report this to the maintainers.';
365
445
  //# sourceMappingURL=ExpressReceiver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressReceiver.js","sourceRoot":"","sources":["../../src/receivers/ExpressReceiver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExpressReceiver.js","sourceRoot":"","sources":["../../src/receivers/ExpressReceiver.ts"],"names":[],"mappings":"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"}
@@ -1,56 +1,106 @@
1
1
  /// <reference types="node" />
2
- import { Server, ServerOptions, RequestListener } from 'http';
2
+ import { Server, ServerOptions, RequestListener, IncomingMessage, ServerResponse } from 'http';
3
3
  import { Server as HTTPSServer, ServerOptions as HTTPSServerOptions } from 'https';
4
4
  import { ListenOptions } from 'net';
5
5
  import { Logger, LogLevel } from '@slack/logger';
6
6
  import { InstallProvider, CallbackOptions, InstallProviderOptions, InstallURLOptions } from '@slack/oauth';
7
+ import { BufferedIncomingMessage } from './verify-request';
7
8
  import App from '../App';
8
9
  import { Receiver } from '../types';
10
+ import { CodedError } from '../errors';
11
+ import { CustomRoute } from './custom-routes';
12
+ import { StringIndexed } from '../types/helpers';
9
13
  export interface HTTPReceiverOptions {
10
14
  signingSecret: string;
11
15
  endpoints?: string | string[];
16
+ port?: number;
17
+ customRoutes?: CustomRoute[];
12
18
  logger?: Logger;
13
19
  logLevel?: LogLevel;
14
20
  processBeforeResponse?: boolean;
21
+ signatureVerification?: boolean;
15
22
  clientId?: string;
16
23
  clientSecret?: string;
17
24
  stateSecret?: InstallProviderOptions['stateSecret'];
25
+ redirectUri?: string;
18
26
  installationStore?: InstallProviderOptions['installationStore'];
19
27
  scopes?: InstallURLOptions['scopes'];
20
28
  installerOptions?: HTTPReceiverInstallerOptions;
29
+ customPropertiesExtractor?: (request: BufferedIncomingMessage) => StringIndexed;
30
+ dispatchErrorHandler?: (args: HTTPReceiverDispatchErrorHandlerArgs) => void;
31
+ processEventErrorHandler?: (args: HTTPReceiverProcessEventErrorHandlerArgs) => Promise<boolean>;
32
+ unhandledRequestHandler?: (args: HTTPReceiverUnhandledRequestHandlerArgs) => void;
33
+ unhandledRequestTimeoutMillis?: number;
21
34
  }
22
35
  export interface HTTPReceiverInstallerOptions {
23
36
  installPath?: string;
37
+ directInstall?: boolean;
38
+ renderHtmlForInstallPath?: (url: string) => string;
24
39
  redirectUriPath?: string;
25
40
  stateStore?: InstallProviderOptions['stateStore'];
41
+ stateVerification?: InstallProviderOptions['stateVerification'];
26
42
  authVersion?: InstallProviderOptions['authVersion'];
27
43
  clientOptions?: InstallProviderOptions['clientOptions'];
28
44
  authorizationUrl?: InstallProviderOptions['authorizationUrl'];
29
45
  metadata?: InstallURLOptions['metadata'];
30
46
  userScopes?: InstallURLOptions['userScopes'];
31
47
  callbackOptions?: CallbackOptions;
48
+ port?: number;
32
49
  }
50
+ export interface HTTPReceiverDispatchErrorHandlerArgs {
51
+ error: Error | CodedError;
52
+ logger: Logger;
53
+ request: IncomingMessage;
54
+ response: ServerResponse;
55
+ }
56
+ export declare function defaultDispatchErrorHandler(args: HTTPReceiverDispatchErrorHandlerArgs): void;
57
+ export interface HTTPReceiverProcessEventErrorHandlerArgs {
58
+ error: Error | CodedError;
59
+ logger: Logger;
60
+ request: IncomingMessage;
61
+ response: ServerResponse;
62
+ storedResponse: any;
63
+ }
64
+ export declare function defaultProcessEventErrorHandler(args: HTTPReceiverProcessEventErrorHandlerArgs): Promise<boolean>;
65
+ export interface HTTPReceiverUnhandledRequestHandlerArgs {
66
+ logger: Logger;
67
+ request: IncomingMessage;
68
+ response: ServerResponse;
69
+ }
70
+ export declare function defaultUnhandledRequestHandler(args: HTTPReceiverUnhandledRequestHandlerArgs): void;
33
71
  /**
34
72
  * Receives HTTP requests with Events, Slash Commands, and Actions
35
73
  */
36
74
  export default class HTTPReceiver implements Receiver {
37
75
  private endpoints;
76
+ private port;
77
+ private routes;
38
78
  private signingSecret;
39
79
  private processBeforeResponse;
80
+ private signatureVerification;
40
81
  private app?;
41
82
  requestListener: RequestListener;
42
83
  private server?;
43
84
  installer?: InstallProvider;
44
85
  private installPath?;
86
+ private directInstall?;
87
+ private renderHtmlForInstallPath;
45
88
  private installRedirectUriPath?;
46
89
  private installUrlOptions?;
47
90
  private installCallbackOptions?;
91
+ private stateVerification?;
48
92
  private logger;
49
- constructor({ signingSecret, endpoints, logger, logLevel, processBeforeResponse, clientId, clientSecret, stateSecret, installationStore, scopes, installerOptions, }: HTTPReceiverOptions);
93
+ private customPropertiesExtractor;
94
+ private dispatchErrorHandler;
95
+ private processEventErrorHandler;
96
+ private unhandledRequestHandler;
97
+ private unhandledRequestTimeoutMillis;
98
+ constructor({ signingSecret, endpoints, port, customRoutes, logger, logLevel, processBeforeResponse, signatureVerification, clientId, clientSecret, stateSecret, redirectUri, installationStore, scopes, installerOptions, customPropertiesExtractor, dispatchErrorHandler, processEventErrorHandler, unhandledRequestHandler, unhandledRequestTimeoutMillis, }: HTTPReceiverOptions);
50
99
  init(app: App): void;
51
100
  start(port: number): Promise<Server>;
52
- start(portOrListenOptions: number | ListenOptions, serverOptions?: ServerOptions): Promise<Server>;
53
- start(portOrListenOptions: number | ListenOptions, httpsServerOptions?: HTTPSServerOptions): Promise<HTTPSServer>;
101
+ start(port: string): Promise<Server>;
102
+ start(portOrListenOptions: number | string | ListenOptions, serverOptions?: ServerOptions): Promise<Server>;
103
+ start(portOrListenOptions: number | string | ListenOptions, httpsServerOptions?: HTTPSServerOptions): Promise<HTTPSServer>;
54
104
  stop(): Promise<void>;
55
105
  private unboundRequestListener;
56
106
  private handleIncomingEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"HTTPReceiver.d.ts","sourceRoot":"","sources":["../../src/receivers/HTTPReceiver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HTTPReceiver.d.ts","sourceRoot":"","sources":["../../src/receivers/HTTPReceiver.ts"],"names":[],"mappings":"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"}