@slack/bolt 4.0.0-nextGen.9 → 4.0.0-rc.2
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.
- package/README.md +22 -16
- package/dist/App.d.ts +39 -80
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +223 -234
- package/dist/App.js.map +1 -1
- package/dist/CustomFunction.d.ts +58 -0
- package/dist/CustomFunction.d.ts.map +1 -0
- package/dist/CustomFunction.js +144 -0
- package/dist/CustomFunction.js.map +1 -0
- package/dist/WorkflowStep.d.ts +89 -36
- package/dist/WorkflowStep.d.ts.map +1 -1
- package/dist/WorkflowStep.js +29 -8
- package/dist/WorkflowStep.js.map +1 -1
- package/dist/conversation-store.d.ts +1 -1
- package/dist/conversation-store.d.ts.map +1 -1
- package/dist/conversation-store.js +3 -3
- package/dist/conversation-store.js.map +1 -1
- package/dist/errors.d.ts +12 -7
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +42 -53
- package/dist/errors.js.map +1 -1
- package/dist/helpers.d.ts +16 -3
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +43 -11
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -11
- package/dist/index.js.map +1 -1
- package/dist/middleware/builtin.d.ts +20 -23
- package/dist/middleware/builtin.d.ts.map +1 -1
- package/dist/middleware/builtin.js +93 -110
- package/dist/middleware/builtin.js.map +1 -1
- package/dist/middleware/process.d.ts +3 -3
- package/dist/middleware/process.d.ts.map +1 -1
- package/dist/middleware/process.js +1 -1
- package/dist/middleware/process.js.map +1 -1
- package/dist/receivers/AwsLambdaReceiver.d.ts +77 -16
- package/dist/receivers/AwsLambdaReceiver.d.ts.map +1 -1
- package/dist/receivers/AwsLambdaReceiver.js +53 -25
- package/dist/receivers/AwsLambdaReceiver.js.map +1 -1
- package/dist/receivers/BufferedIncomingMessage.d.ts +2 -1
- package/dist/receivers/BufferedIncomingMessage.d.ts.map +1 -1
- package/dist/receivers/ExpressReceiver.d.ts +13 -13
- package/dist/receivers/ExpressReceiver.d.ts.map +1 -1
- package/dist/receivers/ExpressReceiver.js +70 -70
- package/dist/receivers/ExpressReceiver.js.map +1 -1
- package/dist/receivers/HTTPModuleFunctions.d.ts +18 -20
- package/dist/receivers/HTTPModuleFunctions.d.ts.map +1 -1
- package/dist/receivers/HTTPModuleFunctions.js +189 -171
- package/dist/receivers/HTTPModuleFunctions.js.map +1 -1
- package/dist/receivers/HTTPReceiver.d.ts +14 -14
- package/dist/receivers/HTTPReceiver.d.ts.map +1 -1
- package/dist/receivers/HTTPReceiver.js +102 -48
- package/dist/receivers/HTTPReceiver.js.map +1 -1
- package/dist/receivers/HTTPResponseAck.d.ts +7 -7
- package/dist/receivers/HTTPResponseAck.d.ts.map +1 -1
- package/dist/receivers/HTTPResponseAck.js +37 -5
- package/dist/receivers/HTTPResponseAck.js.map +1 -1
- package/dist/receivers/ParamsIncomingMessage.d.ts +14 -0
- package/dist/receivers/ParamsIncomingMessage.d.ts.map +1 -0
- package/dist/{types/block-suggestion/index.js → receivers/ParamsIncomingMessage.js} +1 -1
- package/dist/receivers/ParamsIncomingMessage.js.map +1 -0
- package/dist/receivers/SocketModeFunctions.d.ts +3 -5
- package/dist/receivers/SocketModeFunctions.d.ts.map +1 -1
- package/dist/receivers/SocketModeFunctions.js +14 -23
- package/dist/receivers/SocketModeFunctions.js.map +1 -1
- package/dist/receivers/SocketModeReceiver.d.ts +10 -9
- package/dist/receivers/SocketModeReceiver.d.ts.map +1 -1
- package/dist/receivers/SocketModeReceiver.js +41 -25
- package/dist/receivers/SocketModeReceiver.js.map +1 -1
- package/dist/receivers/custom-routes.d.ts +4 -3
- package/dist/receivers/custom-routes.d.ts.map +1 -1
- package/dist/receivers/custom-routes.js +10 -9
- package/dist/receivers/custom-routes.js.map +1 -1
- package/dist/receivers/verify-redirect-opts.d.ts +1 -1
- package/dist/receivers/verify-redirect-opts.d.ts.map +1 -1
- package/dist/receivers/verify-redirect-opts.js +3 -3
- package/dist/receivers/verify-redirect-opts.js.map +1 -1
- package/dist/receivers/verify-request.d.ts +1 -12
- package/dist/receivers/verify-request.d.ts.map +1 -1
- package/dist/receivers/verify-request.js +4 -18
- package/dist/receivers/verify-request.js.map +1 -1
- package/dist/types/actions/block-action.d.ts +41 -22
- package/dist/types/actions/block-action.d.ts.map +1 -1
- package/dist/types/actions/dialog-action.d.ts +0 -4
- package/dist/types/actions/dialog-action.d.ts.map +1 -1
- package/dist/types/actions/index.d.ts +25 -11
- package/dist/types/actions/index.d.ts.map +1 -1
- package/dist/types/actions/index.js +1 -0
- package/dist/types/actions/index.js.map +1 -1
- package/dist/types/actions/interactive-message.d.ts +3 -3
- package/dist/types/actions/interactive-message.d.ts.map +1 -1
- package/dist/types/actions/workflow-step-edit.d.ts +7 -7
- package/dist/types/actions/workflow-step-edit.d.ts.map +1 -1
- package/dist/types/command/index.d.ts +1 -2
- package/dist/types/command/index.d.ts.map +1 -1
- package/dist/types/events/index.d.ts +26 -24
- package/dist/types/events/index.d.ts.map +1 -1
- package/dist/types/events/index.js +4 -15
- package/dist/types/events/index.js.map +1 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/middleware.d.ts +30 -30
- package/dist/types/middleware.d.ts.map +1 -1
- package/dist/types/middleware.js +3 -0
- package/dist/types/middleware.js.map +1 -1
- package/dist/types/options/index.d.ts +23 -59
- package/dist/types/options/index.d.ts.map +1 -1
- package/dist/types/receiver.d.ts +3 -3
- package/dist/types/receiver.d.ts.map +1 -1
- package/dist/types/shortcuts/global-shortcut.d.ts.map +1 -1
- package/dist/types/shortcuts/index.d.ts +14 -9
- package/dist/types/shortcuts/index.d.ts.map +1 -1
- package/dist/types/shortcuts/message-shortcut.d.ts.map +1 -1
- package/dist/types/utilities.d.ts +23 -13
- package/dist/types/utilities.d.ts.map +1 -1
- package/dist/types/utilities.js +7 -0
- package/dist/types/utilities.js.map +1 -1
- package/dist/types/view/index.d.ts +148 -12
- package/dist/types/view/index.d.ts.map +1 -1
- package/package.json +32 -61
- package/dist/Manifest.d.ts +0 -5
- package/dist/Manifest.d.ts.map +0 -1
- package/dist/Manifest.js +0 -16
- package/dist/Manifest.js.map +0 -1
- package/dist/SlackFunction.d.ts +0 -190
- package/dist/SlackFunction.d.ts.map +0 -1
- package/dist/SlackFunction.js +0 -441
- package/dist/SlackFunction.js.map +0 -1
- package/dist/Subscription.d.ts +0 -61
- package/dist/Subscription.d.ts.map +0 -1
- package/dist/Subscription.js +0 -169
- package/dist/Subscription.js.map +0 -1
- package/dist/cli/check-update.d.ts +0 -3
- package/dist/cli/check-update.d.ts.map +0 -1
- package/dist/cli/check-update.js +0 -13
- package/dist/cli/check-update.js.map +0 -1
- package/dist/cli/get-hooks.d.ts +0 -2
- package/dist/cli/get-hooks.d.ts.map +0 -1
- package/dist/cli/get-hooks.js +0 -19
- package/dist/cli/get-hooks.js.map +0 -1
- package/dist/cli/get-manifest.d.ts +0 -3
- package/dist/cli/get-manifest.d.ts.map +0 -1
- package/dist/cli/get-manifest.js +0 -16
- package/dist/cli/get-manifest.js.map +0 -1
- package/dist/cli/hook-utils/get-check-update-data.d.ts +0 -49
- package/dist/cli/hook-utils/get-check-update-data.d.ts.map +0 -1
- package/dist/cli/hook-utils/get-check-update-data.js +0 -252
- package/dist/cli/hook-utils/get-check-update-data.js.map +0 -1
- package/dist/cli/hook-utils/get-check-update-data.spec.d.ts +0 -2
- package/dist/cli/hook-utils/get-check-update-data.spec.d.ts.map +0 -1
- package/dist/cli/hook-utils/get-check-update-data.spec.js +0 -266
- package/dist/cli/hook-utils/get-check-update-data.spec.js.map +0 -1
- package/dist/cli/hook-utils/get-manifest-data.d.ts +0 -7
- package/dist/cli/hook-utils/get-manifest-data.d.ts.map +0 -1
- package/dist/cli/hook-utils/get-manifest-data.js +0 -30
- package/dist/cli/hook-utils/get-manifest-data.js.map +0 -1
- package/dist/cli/hook-utils/get-manifest-data.spec.d.ts +0 -2
- package/dist/cli/hook-utils/get-manifest-data.spec.d.ts.map +0 -1
- package/dist/cli/hook-utils/get-manifest-data.spec.js +0 -113
- package/dist/cli/hook-utils/get-manifest-data.spec.js.map +0 -1
- package/dist/cli/hook-utils/manifest.d.ts +0 -30
- package/dist/cli/hook-utils/manifest.d.ts.map +0 -1
- package/dist/cli/hook-utils/manifest.js +0 -103
- package/dist/cli/hook-utils/manifest.js.map +0 -1
- package/dist/cli/hook-utils/manifest.spec.d.ts +0 -2
- package/dist/cli/hook-utils/manifest.spec.d.ts.map +0 -1
- package/dist/cli/hook-utils/manifest.spec.js +0 -79
- package/dist/cli/hook-utils/manifest.spec.js.map +0 -1
- package/dist/cli/run.d.ts +0 -2
- package/dist/cli/run.d.ts.map +0 -1
- package/dist/cli/run.js +0 -37
- package/dist/cli/run.js.map +0 -1
- package/dist/cli/start.d.ts +0 -3
- package/dist/cli/start.d.ts.map +0 -1
- package/dist/cli/start.js +0 -40
- package/dist/cli/start.js.map +0 -1
- package/dist/receivers/http-utils.d.ts +0 -5
- package/dist/receivers/http-utils.d.ts.map +0 -1
- package/dist/receivers/http-utils.js +0 -19
- package/dist/receivers/http-utils.js.map +0 -1
- package/dist/receivers/render-html-for-install-path.d.ts +0 -3
- package/dist/receivers/render-html-for-install-path.d.ts.map +0 -1
- package/dist/receivers/render-html-for-install-path.js +0 -32
- package/dist/receivers/render-html-for-install-path.js.map +0 -1
- package/dist/types/block-suggestion/index.d.ts +0 -97
- package/dist/types/block-suggestion/index.d.ts.map +0 -1
- package/dist/types/block-suggestion/index.js.map +0 -1
- package/dist/types/events/base-events.d.ts +0 -1135
- package/dist/types/events/base-events.d.ts.map +0 -1
- package/dist/types/events/base-events.js +0 -5
- package/dist/types/events/base-events.js.map +0 -1
- package/dist/types/events/message-events.d.ts +0 -348
- package/dist/types/events/message-events.d.ts.map +0 -1
- package/dist/types/events/message-events.js +0 -3
- package/dist/types/events/message-events.js.map +0 -1
- package/dist/types/functions/index.d.ts +0 -26
- package/dist/types/functions/index.d.ts.map +0 -1
- package/dist/types/functions/index.js +0 -3
- package/dist/types/functions/index.js.map +0 -1
- package/dist/types/helpers.d.ts +0 -17
- package/dist/types/helpers.d.ts.map +0 -1
- package/dist/types/helpers.js +0 -3
- package/dist/types/helpers.js.map +0 -1
- package/dist/types/subscription/index.d.ts +0 -80
- package/dist/types/subscription/index.d.ts.map +0 -1
- package/dist/types/subscription/index.js +0 -3
- package/dist/types/subscription/index.js.map +0 -1
- package/src/cli/check-update.js +0 -13
- package/src/cli/get-hooks.js +0 -17
- package/src/cli/get-manifest.js +0 -16
- package/src/cli/hook-utils/get-check-update-data.js +0 -292
- package/src/cli/hook-utils/get-manifest-data.js +0 -39
- package/src/cli/hook-utils/manifest.js +0 -108
- package/src/cli/start.js +0 -43
|
@@ -1,31 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const socket_mode_1 = require("@slack/socket-mode");
|
|
6
|
-
const http_1 = require("http");
|
|
3
|
+
const node_http_1 = require("node:http");
|
|
4
|
+
const node_url_1 = require("node:url");
|
|
7
5
|
const logger_1 = require("@slack/logger");
|
|
8
6
|
const oauth_1 = require("@slack/oauth");
|
|
7
|
+
const socket_mode_1 = require("@slack/socket-mode");
|
|
8
|
+
const path_to_regexp_1 = require("path-to-regexp");
|
|
9
|
+
const SocketModeFunctions_1 = require("./SocketModeFunctions");
|
|
9
10
|
const custom_routes_1 = require("./custom-routes");
|
|
10
11
|
const verify_redirect_opts_1 = require("./verify-redirect-opts");
|
|
11
|
-
const SocketModeFunctions_1 = require("./SocketModeFunctions");
|
|
12
12
|
/**
|
|
13
13
|
* Receives Events, Slash Commands, and Actions of a web socket connection
|
|
14
14
|
*/
|
|
15
15
|
class SocketModeReceiver {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/* Express app */
|
|
17
|
+
client;
|
|
18
|
+
app;
|
|
19
|
+
logger;
|
|
20
|
+
installer = undefined;
|
|
21
|
+
httpServer;
|
|
22
|
+
httpServerPort;
|
|
23
|
+
routes;
|
|
24
|
+
processEventErrorHandler;
|
|
25
|
+
constructor({ appToken, logger = undefined, logLevel = logger_1.LogLevel.INFO, clientId = undefined, clientSecret = undefined, stateSecret = undefined, redirectUri = undefined, installationStore = undefined, scopes = undefined, installerOptions = {}, customRoutes = [], customPropertiesExtractor = (_args) => ({}), processEventErrorHandler = SocketModeFunctions_1.defaultProcessEventErrorHandler, }) {
|
|
18
26
|
this.client = new socket_mode_1.SocketModeClient({
|
|
19
27
|
appToken,
|
|
20
28
|
logLevel,
|
|
21
29
|
logger,
|
|
22
30
|
clientOptions: installerOptions.clientOptions,
|
|
23
31
|
});
|
|
24
|
-
this.logger =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
this.logger =
|
|
33
|
+
logger ??
|
|
34
|
+
(() => {
|
|
35
|
+
const defaultLogger = new logger_1.ConsoleLogger();
|
|
36
|
+
defaultLogger.setLevel(logLevel);
|
|
37
|
+
return defaultLogger;
|
|
38
|
+
})();
|
|
29
39
|
this.routes = (0, custom_routes_1.buildReceiverRoutes)(customRoutes);
|
|
30
40
|
this.processEventErrorHandler = processEventErrorHandler;
|
|
31
41
|
// Verify redirect options if supplied, throws coded error if invalid
|
|
@@ -42,7 +52,7 @@ class SocketModeReceiver {
|
|
|
42
52
|
stateSecret,
|
|
43
53
|
installationStore,
|
|
44
54
|
logLevel,
|
|
45
|
-
logger,
|
|
55
|
+
logger, // pass logger that was passed in constructor, not one created locally
|
|
46
56
|
directInstall: installerOptions.directInstall,
|
|
47
57
|
stateStore: installerOptions.stateStore,
|
|
48
58
|
stateVerification: installerOptions.stateVerification,
|
|
@@ -59,21 +69,21 @@ class SocketModeReceiver {
|
|
|
59
69
|
if (this.installer !== undefined || customRoutes.length) {
|
|
60
70
|
const installPath = installerOptions.installPath === undefined ? '/slack/install' : installerOptions.installPath;
|
|
61
71
|
this.httpServerPort = installerOptions.port === undefined ? 3000 : installerOptions.port;
|
|
62
|
-
this.httpServer = (0,
|
|
63
|
-
//
|
|
72
|
+
this.httpServer = (0, node_http_1.createServer)(async (req, res) => {
|
|
73
|
+
// biome-ignore lint/style/noNonNullAssertion: method should always be defined for an HTTP request right?
|
|
64
74
|
const method = req.method.toUpperCase();
|
|
65
75
|
// Handle OAuth-related requests
|
|
66
76
|
if (this.installer) {
|
|
67
77
|
// create install url options
|
|
68
78
|
const installUrlOptions = {
|
|
69
79
|
metadata: installerOptions.metadata,
|
|
70
|
-
scopes: scopes
|
|
80
|
+
scopes: scopes ?? [],
|
|
71
81
|
userScopes: installerOptions.userScopes,
|
|
72
82
|
redirectUri,
|
|
73
83
|
};
|
|
74
84
|
// Installation has been initiated
|
|
75
85
|
const redirectUriPath = installerOptions.redirectUriPath === undefined ? '/slack/oauth_redirect' : installerOptions.redirectUriPath;
|
|
76
|
-
if (req.url
|
|
86
|
+
if (req.url?.startsWith(redirectUriPath)) {
|
|
77
87
|
const { stateVerification, callbackOptions } = installerOptions;
|
|
78
88
|
if (stateVerification === false) {
|
|
79
89
|
// if stateVerification is disabled make install options available to handler
|
|
@@ -86,7 +96,7 @@ class SocketModeReceiver {
|
|
|
86
96
|
return;
|
|
87
97
|
}
|
|
88
98
|
// Visiting the installation endpoint
|
|
89
|
-
if (req.url
|
|
99
|
+
if (req.url?.startsWith(installPath)) {
|
|
90
100
|
const { installPathOptions } = installerOptions;
|
|
91
101
|
await this.installer.handleInstallPath(req, res, installPathOptions, installUrlOptions);
|
|
92
102
|
return;
|
|
@@ -96,11 +106,18 @@ class SocketModeReceiver {
|
|
|
96
106
|
if (customRoutes.length && req.url) {
|
|
97
107
|
// NOTE: the domain and scheme are irrelevant here.
|
|
98
108
|
// The URL object is only used to safely obtain the path to match
|
|
99
|
-
const { pathname: path } = new
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
109
|
+
const { pathname: path } = new node_url_1.URL(req.url, 'http://localhost');
|
|
110
|
+
const routes = Object.keys(this.routes);
|
|
111
|
+
for (let i = 0; i < routes.length; i += 1) {
|
|
112
|
+
const route = routes[i];
|
|
113
|
+
const matchRegex = (0, path_to_regexp_1.match)(route, { decode: decodeURIComponent });
|
|
114
|
+
const pathMatch = matchRegex(path);
|
|
115
|
+
if (pathMatch && this.routes[route][method] !== undefined) {
|
|
116
|
+
const params = pathMatch.params;
|
|
117
|
+
const message = Object.assign(req, { params });
|
|
118
|
+
this.routes[route][method](message, res);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
104
121
|
}
|
|
105
122
|
}
|
|
106
123
|
this.logger.info(`An unhandled HTTP request (${req.method}) made to ${req.url} was ignored`);
|
|
@@ -113,7 +130,6 @@ class SocketModeReceiver {
|
|
|
113
130
|
}
|
|
114
131
|
}
|
|
115
132
|
this.client.on('slack_event', async (args) => {
|
|
116
|
-
var _a;
|
|
117
133
|
const { ack, body, retry_num, retry_reason } = args;
|
|
118
134
|
const event = {
|
|
119
135
|
body,
|
|
@@ -123,7 +139,7 @@ class SocketModeReceiver {
|
|
|
123
139
|
customProperties: customPropertiesExtractor(args),
|
|
124
140
|
};
|
|
125
141
|
try {
|
|
126
|
-
await
|
|
142
|
+
await this.app?.processEvent(event);
|
|
127
143
|
}
|
|
128
144
|
catch (error) {
|
|
129
145
|
const shouldBeAcked = await this.processEventErrorHandler({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocketModeReceiver.js","sourceRoot":"","sources":["../../src/receivers/SocketModeReceiver.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"SocketModeReceiver.js","sourceRoot":"","sources":["../../src/receivers/SocketModeReceiver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import {
|
|
2
|
+
import type { ServerResponse } from 'node:http';
|
|
3
|
+
import type { ParamsIncomingMessage } from './ParamsIncomingMessage';
|
|
3
4
|
export interface CustomRoute {
|
|
4
5
|
path: string;
|
|
5
6
|
method: string | string[];
|
|
6
|
-
handler: (req:
|
|
7
|
+
handler: (req: ParamsIncomingMessage, res: ServerResponse) => void;
|
|
7
8
|
}
|
|
8
9
|
export interface ReceiverRoutes {
|
|
9
10
|
[url: string]: {
|
|
10
|
-
[method: string]: (req:
|
|
11
|
+
[method: string]: (req: ParamsIncomingMessage, res: ServerResponse) => void;
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
14
|
export declare function buildReceiverRoutes(customRoutes: CustomRoute[]): ReceiverRoutes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-routes.d.ts","sourceRoot":"","sources":["../../src/receivers/custom-routes.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"custom-routes.d.ts","sourceRoot":"","sources":["../../src/receivers/custom-routes.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;KAC7E,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,cAAc,CAc/E"}
|
|
@@ -5,12 +5,13 @@ const errors_1 = require("../errors");
|
|
|
5
5
|
function buildReceiverRoutes(customRoutes) {
|
|
6
6
|
const routes = {};
|
|
7
7
|
validateCustomRoutes(customRoutes);
|
|
8
|
-
|
|
9
|
-
const methodObj = Array.isArray(r.method)
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
for (const r of customRoutes) {
|
|
9
|
+
const methodObj = Array.isArray(r.method)
|
|
10
|
+
? // biome-ignore lint/performance/noAccumulatingSpread: TODO: apparently this is a perf hit?
|
|
11
|
+
r.method.reduce((o, key) => ({ ...o, [key.toUpperCase()]: r.handler }), {})
|
|
12
|
+
: { [r.method.toUpperCase()]: r.handler };
|
|
12
13
|
routes[r.path] = routes[r.path] ? { ...routes[r.path], ...methodObj } : methodObj;
|
|
13
|
-
}
|
|
14
|
+
}
|
|
14
15
|
return routes;
|
|
15
16
|
}
|
|
16
17
|
exports.buildReceiverRoutes = buildReceiverRoutes;
|
|
@@ -18,13 +19,13 @@ function validateCustomRoutes(customRoutes) {
|
|
|
18
19
|
const requiredKeys = ['path', 'method', 'handler'];
|
|
19
20
|
const missingKeys = [];
|
|
20
21
|
// Check for missing required keys
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
for (const route of customRoutes) {
|
|
23
|
+
for (const key of requiredKeys) {
|
|
23
24
|
if (route[key] === undefined && !missingKeys.includes(key)) {
|
|
24
25
|
missingKeys.push(key);
|
|
25
26
|
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
28
29
|
if (missingKeys.length > 0) {
|
|
29
30
|
const errorMsg = `One or more routes in customRoutes are missing required keys: ${missingKeys.join(', ')}`;
|
|
30
31
|
throw new errors_1.CustomRouteInitializationError(errorMsg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-routes.js","sourceRoot":"","sources":["../../src/receivers/custom-routes.ts"],"names":[],"mappings":";;;AACA,sCAA2D;
|
|
1
|
+
{"version":3,"file":"custom-routes.js","sourceRoot":"","sources":["../../src/receivers/custom-routes.ts"],"names":[],"mappings":";;;AACA,sCAA2D;AAe3D,SAAgB,mBAAmB,CAAC,YAA2B;IAC7D,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEnC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YACvC,CAAC,CAAC,2FAA2F;gBAC3F,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7E,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAdD,kDAcC;AAED,SAAS,oBAAoB,CAAC,YAA2B;IACvD,MAAM,YAAY,GAA0B,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1E,MAAM,WAAW,GAA0B,EAAE,CAAC;IAE9C,kCAAkC;IAClC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,iEAAiE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3G,MAAM,IAAI,uCAA8B,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { HTTPReceiverInstallerOptions, HTTPReceiverOptions } from './HTTPReceiver';
|
|
2
2
|
export interface RedirectOptions {
|
|
3
3
|
redirectUri?: HTTPReceiverOptions['redirectUri'];
|
|
4
4
|
redirectUriPath?: HTTPReceiverInstallerOptions['redirectUriPath'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-redirect-opts.d.ts","sourceRoot":"","sources":["../../src/receivers/verify-redirect-opts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"verify-redirect-opts.d.ts","sourceRoot":"","sources":["../../src/receivers/verify-redirect-opts.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExF,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACjD,eAAe,CAAC,EAAE,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;CACnE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,eAAe,GAAG,IAAI,CAgB1F"}
|
|
@@ -4,17 +4,17 @@ exports.verifyRedirectOpts = void 0;
|
|
|
4
4
|
/**
|
|
5
5
|
* Helper to verify redirect uri and redirect uri path exist and are consistent
|
|
6
6
|
* when supplied.
|
|
7
|
-
*/
|
|
7
|
+
*/
|
|
8
8
|
const errors_1 = require("../errors");
|
|
9
9
|
function verifyRedirectOpts({ redirectUri, redirectUriPath }) {
|
|
10
10
|
// if redirectUri is supplied, redirectUriPath is required
|
|
11
|
-
if (
|
|
11
|
+
if (redirectUri && !redirectUriPath) {
|
|
12
12
|
throw new errors_1.AppInitializationError(' You have set a redirectUri but not a matching redirectUriPath.' +
|
|
13
13
|
' Please provide this via installerOptions.redirectUriPath' +
|
|
14
14
|
' Note: These should be consistent, e.g. https://example.com/redirect and /redirect');
|
|
15
15
|
}
|
|
16
16
|
// if both redirectUri and redirectUri are supplied, they must be consistent
|
|
17
|
-
if (redirectUri && redirectUriPath && !
|
|
17
|
+
if (redirectUri && redirectUriPath && !redirectUri?.endsWith(redirectUriPath)) {
|
|
18
18
|
throw new errors_1.AppInitializationError('redirectUri and installerOptions.redirectUriPath should be consistent' +
|
|
19
19
|
' e.g. https://example.com/redirect and /redirect');
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-redirect-opts.js","sourceRoot":"","sources":["../../src/receivers/verify-redirect-opts.ts"],"names":[],"mappings":";;;AAAA;;;
|
|
1
|
+
{"version":3,"file":"verify-redirect-opts.js","sourceRoot":"","sources":["../../src/receivers/verify-redirect-opts.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,sCAAmD;AAQnD,SAAgB,kBAAkB,CAAC,EAAE,WAAW,EAAE,eAAe,EAAmB;IAClF,0DAA0D;IAC1D,IAAI,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;QACpC,MAAM,IAAI,+BAAsB,CAC9B,iEAAiE;YAC/D,2DAA2D;YAC3D,oFAAoF,CACvF,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,IAAI,WAAW,IAAI,eAAe,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,+BAAsB,CAC9B,uEAAuE;YACrE,kDAAkD,CACrD,CAAC;IACJ,CAAC;AACH,CAAC;AAhBD,gDAgBC"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { Logger } from '@slack/logger';
|
|
3
|
-
import type { IncomingMessage, ServerResponse } from 'http';
|
|
4
|
-
import { BufferedIncomingMessage } from './BufferedIncomingMessage';
|
|
5
|
-
import { RequestVerificationOptions } from './HTTPModuleFunctions';
|
|
1
|
+
import type { Logger } from '@slack/logger';
|
|
6
2
|
export interface SlackRequestVerificationOptions {
|
|
7
3
|
signingSecret: string;
|
|
8
4
|
body: string;
|
|
@@ -23,11 +19,4 @@ export declare function verifySlackRequest(options: SlackRequestVerificationOpti
|
|
|
23
19
|
* If the request is invalid, this method returns false.
|
|
24
20
|
*/
|
|
25
21
|
export declare function isValidSlackRequest(options: SlackRequestVerificationOptions): boolean;
|
|
26
|
-
export interface VerifyOptions extends RequestVerificationOptions {
|
|
27
|
-
enabled?: boolean;
|
|
28
|
-
signingSecret: string;
|
|
29
|
-
nowMs?: () => number;
|
|
30
|
-
logger?: Logger;
|
|
31
|
-
}
|
|
32
|
-
export declare function verify(options: VerifyOptions, req: IncomingMessage, res?: ServerResponse): Promise<BufferedIncomingMessage>;
|
|
33
22
|
//# sourceMappingURL=verify-request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-request.d.ts","sourceRoot":"","sources":["../../src/receivers/verify-request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify-request.d.ts","sourceRoot":"","sources":["../../src/receivers/verify-request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAS5C,MAAM,WAAW,+BAA+B;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,mBAAmB,EAAE,MAAM,CAAC;QAC5B,2BAA2B,EAAE,MAAM,CAAC;KACrC,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,+BAA+B,GAAG,IAAI,CAuCjF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,+BAA+B,GAAG,OAAO,CAUrF"}
|
|
@@ -3,12 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
|
|
8
|
-
const logger_1 = require("@slack/logger");
|
|
9
|
-
const crypto_1 = require("crypto");
|
|
6
|
+
exports.isValidSlackRequest = exports.verifySlackRequest = void 0;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
10
8
|
const tsscmp_1 = __importDefault(require("tsscmp"));
|
|
11
|
-
const HTTPModuleFunctions_1 = require("./HTTPModuleFunctions");
|
|
12
9
|
// ------------------------------
|
|
13
10
|
// HTTP module independent methods
|
|
14
11
|
// ------------------------------
|
|
@@ -18,14 +15,13 @@ const verifyErrorPrefix = 'Failed to verify authenticity';
|
|
|
18
15
|
* If the request is invalid, this method throws an exception with the error details.
|
|
19
16
|
*/
|
|
20
17
|
function verifySlackRequest(options) {
|
|
21
|
-
var _a;
|
|
22
18
|
const requestTimestampSec = options.headers['x-slack-request-timestamp'];
|
|
23
19
|
const signature = options.headers['x-slack-signature'];
|
|
24
20
|
if (Number.isNaN(requestTimestampSec)) {
|
|
25
21
|
throw new Error(`${verifyErrorPrefix}: header x-slack-request-timestamp did not have the expected type (${requestTimestampSec})`);
|
|
26
22
|
}
|
|
27
23
|
// Calculate time-dependent values
|
|
28
|
-
const nowMs =
|
|
24
|
+
const nowMs = options.nowMilliseconds ?? Date.now();
|
|
29
25
|
const requestTimestampMaxDeltaMin = 5;
|
|
30
26
|
const fiveMinutesAgoSec = Math.floor(nowMs / 1000) - 60 * requestTimestampMaxDeltaMin;
|
|
31
27
|
// Enforce verification rules
|
|
@@ -41,7 +37,7 @@ function verifySlackRequest(options) {
|
|
|
41
37
|
throw new Error(`${verifyErrorPrefix}: unknown signature version`);
|
|
42
38
|
}
|
|
43
39
|
// Compute our own signature hash
|
|
44
|
-
const hmac = (0,
|
|
40
|
+
const hmac = (0, node_crypto_1.createHmac)('sha256', options.signingSecret);
|
|
45
41
|
hmac.update(`${signatureVersion}:${requestTimestampSec}:${options.body}`);
|
|
46
42
|
const ourSignatureHash = hmac.digest('hex');
|
|
47
43
|
if (!signatureHash || !(0, tsscmp_1.default)(signatureHash, ourSignatureHash)) {
|
|
@@ -66,14 +62,4 @@ function isValidSlackRequest(options) {
|
|
|
66
62
|
return false;
|
|
67
63
|
}
|
|
68
64
|
exports.isValidSlackRequest = isValidSlackRequest;
|
|
69
|
-
// ------------------------------
|
|
70
|
-
// legacy methods (deprecated)
|
|
71
|
-
// ------------------------------
|
|
72
|
-
const consoleLogger = new logger_1.ConsoleLogger();
|
|
73
|
-
// Deprecated: this function will be removed in the near future. Use HTTPModuleFunctions instead.
|
|
74
|
-
async function verify(options, req, res) {
|
|
75
|
-
consoleLogger.warn('This method is deprecated. Use HTTPModuleFunctions.parseAndVerifyHTTPRequest(options, req, res) instead.');
|
|
76
|
-
return HTTPModuleFunctions_1.HTTPModuleFunctions.parseAndVerifyHTTPRequest(options, req, res);
|
|
77
|
-
}
|
|
78
|
-
exports.verify = verify;
|
|
79
65
|
//# sourceMappingURL=verify-request.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-request.js","sourceRoot":"","sources":["../../src/receivers/verify-request.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"verify-request.js","sourceRoot":"","sources":["../../src/receivers/verify-request.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;AAEzC,oDAA4B;AAE5B,iCAAiC;AACjC,kCAAkC;AAClC,iCAAiC;AAEjC,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAa1D;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAAwC;IACzE,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,GAAG,iBAAiB,sEAAsE,mBAAmB,GAAG,CACjH,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,2BAA2B,GAAG,CAAC,CAAC;IACtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,2BAA2B,CAAC;IAEtF,6BAA6B;IAE7B,0BAA0B;IAC1B,IAAI,mBAAmB,GAAG,iBAAiB,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,GAAG,iBAAiB,4EAClB,2BACF,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,8BAA8B;IAC9B,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D,6BAA6B;IAC7B,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,6BAA6B,CAAC,CAAC;IACrE,CAAC;IACD,iCAAiC;IACjC,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,CAAC,GAAG,gBAAgB,IAAI,mBAAmB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,aAAa,IAAI,CAAC,IAAA,gBAAM,EAAC,aAAa,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,sBAAsB,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAvCD,gDAuCC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,OAAwC;IAC1E,IAAI,CAAC;QACH,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,kDAUC"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { StringIndexed } from '../
|
|
3
|
-
import { ViewOutput, ViewStateValue } from '../view';
|
|
4
|
-
import { FunctionContext } from '../functions';
|
|
1
|
+
import type { Confirmation, Option, PlainTextElement, RichTextBlock } from '@slack/types';
|
|
2
|
+
import type { StringIndexed } from '../utilities';
|
|
3
|
+
import type { ViewOutput, ViewStateValue } from '../view';
|
|
5
4
|
/**
|
|
6
5
|
* All known actions from in Slack's interactive elements
|
|
7
6
|
*
|
|
8
7
|
* This is a discriminated union. The discriminant is the `type` property.
|
|
9
8
|
*/
|
|
10
|
-
export
|
|
9
|
+
export type BlockElementAction = ButtonAction | UsersSelectAction | MultiUsersSelectAction | StaticSelectAction | MultiStaticSelectAction | ConversationsSelectAction | MultiConversationsSelectAction | ChannelsSelectAction | MultiChannelsSelectAction | ExternalSelectAction | MultiExternalSelectAction | OverflowAction | DatepickerAction | TimepickerAction | RadioButtonsAction | CheckboxesAction | PlainTextInputAction | RichTextInputAction;
|
|
11
10
|
/**
|
|
12
11
|
* Any action from Slack's interactive elements
|
|
13
12
|
*
|
|
@@ -24,7 +23,7 @@ export interface BasicElementAction<T extends string = string> {
|
|
|
24
23
|
* An action from a button element
|
|
25
24
|
*/
|
|
26
25
|
export interface ButtonAction extends BasicElementAction<'button'> {
|
|
27
|
-
value
|
|
26
|
+
value?: string;
|
|
28
27
|
text: PlainTextElement;
|
|
29
28
|
url?: string;
|
|
30
29
|
confirm?: Confirmation;
|
|
@@ -146,6 +145,15 @@ export interface DatepickerAction extends BasicElementAction<'datepicker'> {
|
|
|
146
145
|
placeholder?: PlainTextElement;
|
|
147
146
|
confirm?: Confirmation;
|
|
148
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* An action from a time picker element
|
|
150
|
+
*/
|
|
151
|
+
export interface TimepickerAction extends BasicElementAction<'timepicker'> {
|
|
152
|
+
selected_time: string | null;
|
|
153
|
+
initial_time?: string;
|
|
154
|
+
placeholder?: PlainTextElement;
|
|
155
|
+
confirm?: Confirmation;
|
|
156
|
+
}
|
|
149
157
|
/**
|
|
150
158
|
* An action from a radio button element
|
|
151
159
|
*/
|
|
@@ -163,17 +171,23 @@ export interface CheckboxesAction extends BasicElementAction<'checkboxes'> {
|
|
|
163
171
|
confirm?: Confirmation;
|
|
164
172
|
}
|
|
165
173
|
/**
|
|
166
|
-
*
|
|
174
|
+
* An action from a plain_text_input element (must use dispatch_action: true)
|
|
167
175
|
*/
|
|
168
176
|
export interface PlainTextInputAction extends BasicElementAction<'plain_text_input'> {
|
|
169
177
|
value: string;
|
|
170
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* An action from a rich_text_input element (must use dispatch_action: true)
|
|
181
|
+
*/
|
|
182
|
+
export interface RichTextInputAction extends BasicElementAction<'rich_text_input'> {
|
|
183
|
+
rich_text_value: RichTextBlock;
|
|
184
|
+
}
|
|
171
185
|
/**
|
|
172
186
|
* A Slack Block Kit element action wrapped in the standard metadata.
|
|
173
187
|
*
|
|
174
188
|
* This describes the entire JSON-encoded body of a request from Slack's Block Kit interactive components.
|
|
175
189
|
*/
|
|
176
|
-
export interface BlockAction<ElementAction extends BasicElementAction = BlockElementAction>
|
|
190
|
+
export interface BlockAction<ElementAction extends BasicElementAction = BlockElementAction> {
|
|
177
191
|
type: 'block_actions';
|
|
178
192
|
actions: ElementAction[];
|
|
179
193
|
team: {
|
|
@@ -184,7 +198,11 @@ export interface BlockAction<ElementAction extends BasicElementAction = BlockEle
|
|
|
184
198
|
} | null;
|
|
185
199
|
user: {
|
|
186
200
|
id: string;
|
|
187
|
-
|
|
201
|
+
/**
|
|
202
|
+
* name will be present if the block_action originates from the Home tab
|
|
203
|
+
*/
|
|
204
|
+
name?: string;
|
|
205
|
+
username: string;
|
|
188
206
|
team_id?: string;
|
|
189
207
|
};
|
|
190
208
|
channel?: {
|
|
@@ -206,9 +224,9 @@ export interface BlockAction<ElementAction extends BasicElementAction = BlockEle
|
|
|
206
224
|
};
|
|
207
225
|
};
|
|
208
226
|
};
|
|
209
|
-
token
|
|
227
|
+
token: string;
|
|
210
228
|
response_url: string;
|
|
211
|
-
trigger_id
|
|
229
|
+
trigger_id: string;
|
|
212
230
|
api_app_id: string;
|
|
213
231
|
container: StringIndexed;
|
|
214
232
|
app_unfurl?: any;
|
|
@@ -218,15 +236,16 @@ export interface BlockAction<ElementAction extends BasicElementAction = BlockEle
|
|
|
218
236
|
name: string;
|
|
219
237
|
};
|
|
220
238
|
}
|
|
221
|
-
export
|
|
222
|
-
export
|
|
223
|
-
export
|
|
224
|
-
export
|
|
225
|
-
export
|
|
226
|
-
export
|
|
227
|
-
export
|
|
228
|
-
export
|
|
229
|
-
export
|
|
230
|
-
export
|
|
231
|
-
export
|
|
239
|
+
export type BlockButtonAction = BlockAction<ButtonAction>;
|
|
240
|
+
export type BlockStaticSelectAction = BlockAction<StaticSelectAction>;
|
|
241
|
+
export type BlockUsersSelectAction = BlockAction<UsersSelectAction>;
|
|
242
|
+
export type BlockConversationsSelectAction = BlockAction<ConversationsSelectAction>;
|
|
243
|
+
export type BlockChannelsSelectAction = BlockAction<ChannelsSelectAction>;
|
|
244
|
+
export type BlockExternalSelectAction = BlockAction<ExternalSelectAction>;
|
|
245
|
+
export type BlockOverflowAction = BlockAction<OverflowAction>;
|
|
246
|
+
export type BlockDatepickerAction = BlockAction<DatepickerAction>;
|
|
247
|
+
export type BlockTimepickerAction = BlockAction<TimepickerAction>;
|
|
248
|
+
export type BlockRadioButtonsAction = BlockAction<RadioButtonsAction>;
|
|
249
|
+
export type BlockCheckboxesAction = BlockAction<CheckboxesAction>;
|
|
250
|
+
export type BlockPlainTextInputAction = BlockAction<PlainTextInputAction>;
|
|
232
251
|
//# sourceMappingURL=block-action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-action.d.ts","sourceRoot":"","sources":["../../../src/types/actions/block-action.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"block-action.d.ts","sourceRoot":"","sources":["../../../src/types/actions/block-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dialogs were a way to trigger interactions with users in messaging.
|
|
3
|
-
* We now recommend using Block Kit in Modals.
|
|
4
|
-
* https://api.slack.com/dialogs
|
|
5
|
-
*
|
|
6
2
|
* A Slack dialog submit action wrapped in the standard metadata.
|
|
7
3
|
*
|
|
8
4
|
* This describes the entire JSON-encoded body of a request from Slack dialogs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-action.d.ts","sourceRoot":"","sources":["../../../src/types/actions/dialog-action.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dialog-action.d.ts","sourceRoot":"","sources":["../../../src/types/actions/dialog-action.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,IAAI,CAAC;IACT,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IAGrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,UAAU,CAAC,EAAE;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import type { FunctionCompleteFn, FunctionFailFn } from '../../CustomFunction';
|
|
2
|
+
import type { FunctionInputs } from '../events';
|
|
3
|
+
import type { AckFn, RespondFn, SayArguments, SayFn } from '../utilities';
|
|
4
|
+
import type { BlockAction } from './block-action';
|
|
5
|
+
import type { DialogSubmitAction, DialogValidation } from './dialog-action';
|
|
6
|
+
import type { InteractiveMessage } from './interactive-message';
|
|
7
|
+
import type { WorkflowStepEdit } from './workflow-step-edit';
|
|
6
8
|
export * from './block-action';
|
|
7
9
|
export * from './interactive-message';
|
|
8
10
|
export * from './dialog-action';
|
|
@@ -21,7 +23,15 @@ export * from './workflow-step-edit';
|
|
|
21
23
|
* offered when no generic parameter is bound would be limited to BasicElementAction rather than the union of known
|
|
22
24
|
* actions - ElementAction.
|
|
23
25
|
*/
|
|
24
|
-
export
|
|
26
|
+
export type SlackAction = BlockAction | InteractiveMessage | DialogSubmitAction | WorkflowStepEdit;
|
|
27
|
+
export interface ActionConstraints<A extends SlackAction = SlackAction> {
|
|
28
|
+
type?: A['type'];
|
|
29
|
+
block_id?: A extends BlockAction ? string | RegExp : never;
|
|
30
|
+
action_id?: A extends BlockAction ? string | RegExp : never;
|
|
31
|
+
callback_id?: Extract<A, {
|
|
32
|
+
callback_id?: string;
|
|
33
|
+
}> extends any ? string | RegExp : never;
|
|
34
|
+
}
|
|
25
35
|
/**
|
|
26
36
|
* Arguments which listeners and middleware receive to process an action from Slack's Block Kit interactive components,
|
|
27
37
|
* message actions, dialogs, or legacy interactive messages.
|
|
@@ -30,17 +40,21 @@ export declare type SlackAction = BlockAction | InteractiveMessage | DialogSubmi
|
|
|
30
40
|
* `BlockAction<ElementAction>` can be used to create a type for this parameter based on an element's action type. In
|
|
31
41
|
* this case `ElementAction` must extend `BasicElementAction`.
|
|
32
42
|
*/
|
|
33
|
-
export
|
|
43
|
+
export type SlackActionMiddlewareArgs<Action extends SlackAction = SlackAction> = {
|
|
34
44
|
payload: Action extends BlockAction<infer ElementAction> ? ElementAction : Action extends InteractiveMessage<infer InteractiveAction> ? InteractiveAction : Action;
|
|
35
|
-
action:
|
|
45
|
+
action: Action extends BlockAction<infer ElementAction> ? ElementAction : Action extends InteractiveMessage<infer InteractiveAction> ? InteractiveAction : Action;
|
|
36
46
|
body: Action;
|
|
37
|
-
say: Action extends Exclude<SlackAction, DialogSubmitAction | WorkflowStepEdit> ? SayFn : never;
|
|
38
47
|
respond: RespondFn;
|
|
39
48
|
ack: ActionAckFn<Action>;
|
|
40
|
-
|
|
49
|
+
complete?: FunctionCompleteFn;
|
|
50
|
+
fail?: FunctionFailFn;
|
|
51
|
+
inputs?: FunctionInputs;
|
|
52
|
+
} & (Action extends Exclude<SlackAction, DialogSubmitAction | WorkflowStepEdit> ? {
|
|
53
|
+
say: SayFn;
|
|
54
|
+
} : unknown);
|
|
41
55
|
/**
|
|
42
56
|
* Type function which given an action `A` returns a corresponding type for the `ack()` function. The function is used
|
|
43
57
|
* to acknowledge the receipt (and possibly signal failure) of an action from a listener or middleware.
|
|
44
58
|
*/
|
|
45
|
-
|
|
59
|
+
type ActionAckFn<A extends SlackAction> = A extends InteractiveMessage ? AckFn<string | SayArguments> : A extends DialogSubmitAction ? AckFn<DialogValidation> : AckFn<void>;
|
|
46
60
|
//# sourceMappingURL=index.d.ts.map
|