@slack/bolt 4.0.0-rc.1 → 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 +32 -48
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +174 -86
- 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 +19 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +45 -32
- package/dist/errors.js.map +1 -1
- package/dist/helpers.d.ts +2 -2
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +5 -4
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -9
- package/dist/index.js.map +1 -1
- package/dist/middleware/builtin.d.ts +19 -22
- package/dist/middleware/builtin.d.ts.map +1 -1
- package/dist/middleware/builtin.js +93 -111
- 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 +187 -181
- 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 +92 -44
- 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 +2 -2
- package/dist/receivers/ParamsIncomingMessage.d.ts.map +1 -1
- 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 +9 -9
- package/dist/receivers/SocketModeReceiver.d.ts.map +1 -1
- package/dist/receivers/SocketModeReceiver.js +29 -21
- package/dist/receivers/SocketModeReceiver.js.map +1 -1
- package/dist/receivers/custom-routes.d.ts +2 -2
- 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 +17 -17
- package/dist/types/actions/block-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/middleware.d.ts +26 -14
- 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 +16 -51
- 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 +27 -18
- 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 +15 -7
- package/dist/types/view/index.d.ts.map +1 -1
- package/package.json +27 -41
- package/dist/WorkflowFunction.d.ts +0 -63
- package/dist/WorkflowFunction.d.ts.map +0 -1
- package/dist/WorkflowFunction.js +0 -130
- package/dist/WorkflowFunction.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/events/base-events.d.ts +0 -1187
- 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/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
|
@@ -1,41 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { ActionConstraints, OptionsConstraints, ShortcutConstraints, ViewConstraints } from '../App';
|
|
2
|
+
import type { AnyMiddlewareArgs, EventTypePattern, Middleware, SlackActionMiddlewareArgs, SlackCommandMiddlewareArgs, SlackEventMiddlewareArgs, SlackOptionsMiddlewareArgs, SlackViewMiddlewareArgs } from '../types';
|
|
3
3
|
/**
|
|
4
4
|
* Middleware that filters out any event that isn't an action
|
|
5
5
|
*/
|
|
6
|
-
export declare const onlyActions: Middleware<AnyMiddlewareArgs
|
|
7
|
-
action?: SlackAction;
|
|
8
|
-
}>;
|
|
6
|
+
export declare const onlyActions: Middleware<AnyMiddlewareArgs>;
|
|
9
7
|
/**
|
|
10
8
|
* Middleware that filters out any event that isn't a shortcut
|
|
11
9
|
*/
|
|
12
|
-
export declare const onlyShortcuts: Middleware<AnyMiddlewareArgs
|
|
13
|
-
shortcut?: SlackShortcut;
|
|
14
|
-
}>;
|
|
10
|
+
export declare const onlyShortcuts: Middleware<AnyMiddlewareArgs>;
|
|
15
11
|
/**
|
|
16
12
|
* Middleware that filters out any event that isn't a command
|
|
17
13
|
*/
|
|
18
|
-
export declare const onlyCommands: Middleware<AnyMiddlewareArgs
|
|
19
|
-
command?: SlashCommand;
|
|
20
|
-
}>;
|
|
14
|
+
export declare const onlyCommands: Middleware<AnyMiddlewareArgs>;
|
|
21
15
|
/**
|
|
22
16
|
* Middleware that filters out any event that isn't an options
|
|
23
17
|
*/
|
|
24
|
-
export declare const onlyOptions: Middleware<AnyMiddlewareArgs
|
|
25
|
-
options?: SlackOptions;
|
|
26
|
-
}>;
|
|
18
|
+
export declare const onlyOptions: Middleware<AnyMiddlewareArgs>;
|
|
27
19
|
/**
|
|
28
20
|
* Middleware that filters out any event that isn't an event
|
|
29
21
|
*/
|
|
30
|
-
export declare const onlyEvents: Middleware<AnyMiddlewareArgs
|
|
31
|
-
event?: SlackEvent;
|
|
32
|
-
}>;
|
|
22
|
+
export declare const onlyEvents: Middleware<AnyMiddlewareArgs>;
|
|
33
23
|
/**
|
|
34
24
|
* Middleware that filters out any event that isn't a view_submission or view_closed event
|
|
35
25
|
*/
|
|
36
|
-
export declare const onlyViewActions: Middleware<AnyMiddlewareArgs
|
|
37
|
-
view?: ViewOutput;
|
|
38
|
-
}>;
|
|
26
|
+
export declare const onlyViewActions: Middleware<AnyMiddlewareArgs>;
|
|
39
27
|
/**
|
|
40
28
|
* Middleware that checks for matches given constraints
|
|
41
29
|
*/
|
|
@@ -46,7 +34,16 @@ export declare function matchMessage(pattern: string | RegExp): Middleware<Slack
|
|
|
46
34
|
*/
|
|
47
35
|
export declare function matchCommandName(pattern: string | RegExp): Middleware<SlackCommandMiddlewareArgs>;
|
|
48
36
|
export declare function matchEventType(pattern: EventTypePattern): Middleware<SlackEventMiddlewareArgs>;
|
|
49
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Filters out any event originating from the handling app.
|
|
39
|
+
*/
|
|
40
|
+
export declare const ignoreSelf: Middleware<AnyMiddlewareArgs>;
|
|
41
|
+
/**
|
|
42
|
+
* Filters out any message events whose subtype does not match the provided subtype.
|
|
43
|
+
*/
|
|
50
44
|
export declare function subtype(subtype1: string): Middleware<SlackEventMiddlewareArgs<'message'>>;
|
|
51
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Filters out any message event whose text does not start with an @-mention of the handling app.
|
|
47
|
+
*/
|
|
48
|
+
export declare const directMention: Middleware<SlackEventMiddlewareArgs<'message'>>;
|
|
52
49
|
//# sourceMappingURL=builtin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../src/middleware/builtin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../src/middleware/builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAE1G,OAAO,KAAK,EACV,iBAAiB,EAKjB,gBAAgB,EAKhB,UAAU,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAG1B,uBAAuB,EACxB,MAAM,UAAU,CAAC;AA4ClB;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAIrD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,iBAAiB,CAIvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,UAAU,CAAC,iBAAiB,CAItD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAIrD,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,iBAAiB,CAIpD,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,iBAAiB,CAIzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,iBAAiB,GAAG,eAAe,GAAG,mBAAmB,GAAG,kBAAkB,GAC1F,UAAU,CAAC,yBAAyB,GAAG,0BAA0B,GAAG,uBAAuB,CAAC,CAiF9F;AAKD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,UAAU,CAAC,wBAAwB,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC,CAyBjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,0BAA0B,CAAC,CASjG;AAYD,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAwB9F;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,iBAAiB,CA4BpD,CAAC;AAGF;;GAEG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAMzF;AAID;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,wBAAwB,CAAC,SAAS,CAAC,CA6BzE,CAAC"}
|
|
@@ -1,90 +1,81 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* eslint-disable @typescript-eslint/dot-notation */
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.directMention = exports.subtype = exports.ignoreSelf = exports.matchEventType = exports.matchCommandName = exports.matchMessage = exports.matchConstraints = exports.onlyViewActions = exports.onlyEvents = exports.onlyOptions = exports.onlyCommands = exports.onlyShortcuts = exports.onlyActions = void 0;
|
|
5
4
|
const errors_1 = require("../errors");
|
|
5
|
+
/** Type predicate that can narrow payloads block action or suggestion payloads */
|
|
6
|
+
function isBlockPayload(payload) {
|
|
7
|
+
return 'action_id' in payload && payload.action_id !== undefined;
|
|
8
|
+
}
|
|
9
|
+
// TODO: consider exporting these type guards for use elsewhere within bolt
|
|
10
|
+
// TODO: is there overlap with `function_executed` event here?
|
|
11
|
+
function isCallbackIdentifiedBody(body) {
|
|
12
|
+
return 'callback_id' in body && body.callback_id !== undefined;
|
|
13
|
+
}
|
|
14
|
+
// TODO: clarify terminology used internally: event vs. body vs. payload
|
|
15
|
+
/** Type predicate that can narrow event bodies to ones containing Views */
|
|
16
|
+
function isViewBody(body) {
|
|
17
|
+
return 'view' in body && body.view !== undefined;
|
|
18
|
+
}
|
|
19
|
+
function isEventArgs(args) {
|
|
20
|
+
return 'event' in args && args.event !== undefined;
|
|
21
|
+
}
|
|
22
|
+
function isMessageEventArgs(args) {
|
|
23
|
+
return isEventArgs(args) && 'message' in args;
|
|
24
|
+
}
|
|
6
25
|
/**
|
|
7
26
|
* Middleware that filters out any event that isn't an action
|
|
8
27
|
*/
|
|
9
28
|
const onlyActions = async (args) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
// Filter out any non-actions
|
|
13
|
-
if (action === undefined) {
|
|
14
|
-
return;
|
|
29
|
+
if ('action' in args && args.action) {
|
|
30
|
+
await args.next();
|
|
15
31
|
}
|
|
16
|
-
// It matches so we should continue down this middleware listener chain
|
|
17
|
-
await next();
|
|
18
32
|
};
|
|
19
33
|
exports.onlyActions = onlyActions;
|
|
20
34
|
/**
|
|
21
35
|
* Middleware that filters out any event that isn't a shortcut
|
|
22
36
|
*/
|
|
23
37
|
const onlyShortcuts = async (args) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// Filter out any non-shortcuts
|
|
27
|
-
if (shortcut === undefined) {
|
|
28
|
-
return;
|
|
38
|
+
if ('shortcut' in args && args.shortcut) {
|
|
39
|
+
await args.next();
|
|
29
40
|
}
|
|
30
|
-
// It matches so we should continue down this middleware listener chain
|
|
31
|
-
await next();
|
|
32
41
|
};
|
|
33
42
|
exports.onlyShortcuts = onlyShortcuts;
|
|
34
43
|
/**
|
|
35
44
|
* Middleware that filters out any event that isn't a command
|
|
36
45
|
*/
|
|
37
46
|
const onlyCommands = async (args) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// Filter out any non-commands
|
|
41
|
-
if (command === undefined) {
|
|
42
|
-
return;
|
|
47
|
+
if ('command' in args && args.command) {
|
|
48
|
+
await args.next();
|
|
43
49
|
}
|
|
44
|
-
// It matches so we should continue down this middleware listener chain
|
|
45
|
-
await next();
|
|
46
50
|
};
|
|
47
51
|
exports.onlyCommands = onlyCommands;
|
|
48
52
|
/**
|
|
49
53
|
* Middleware that filters out any event that isn't an options
|
|
50
54
|
*/
|
|
51
55
|
const onlyOptions = async (args) => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
// Filter out any non-options requests
|
|
55
|
-
if (options === undefined) {
|
|
56
|
-
return;
|
|
56
|
+
if ('options' in args && args.options) {
|
|
57
|
+
await args.next();
|
|
57
58
|
}
|
|
58
|
-
// It matches so we should continue down this middleware listener chain
|
|
59
|
-
await next();
|
|
60
59
|
};
|
|
61
60
|
exports.onlyOptions = onlyOptions;
|
|
61
|
+
// TODO: event terminology here "event that isn't an event" wat
|
|
62
62
|
/**
|
|
63
63
|
* Middleware that filters out any event that isn't an event
|
|
64
64
|
*/
|
|
65
65
|
const onlyEvents = async (args) => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
// Filter out any non-events
|
|
69
|
-
if (event === undefined) {
|
|
70
|
-
return;
|
|
66
|
+
if (isEventArgs(args)) {
|
|
67
|
+
await args.next();
|
|
71
68
|
}
|
|
72
|
-
// It matches so we should continue down this middleware listener chain
|
|
73
|
-
await next();
|
|
74
69
|
};
|
|
75
70
|
exports.onlyEvents = onlyEvents;
|
|
71
|
+
// TODO: event terminology "ViewAction" is confusing since "Action" we use for block actions
|
|
76
72
|
/**
|
|
77
73
|
* Middleware that filters out any event that isn't a view_submission or view_closed event
|
|
78
74
|
*/
|
|
79
75
|
const onlyViewActions = async (args) => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// Filter out anything that doesn't have a view
|
|
83
|
-
if (view === undefined) {
|
|
84
|
-
return;
|
|
76
|
+
if ('view' in args) {
|
|
77
|
+
await args.next();
|
|
85
78
|
}
|
|
86
|
-
// It matches so we should continue down this middleware listener chain
|
|
87
|
-
await next();
|
|
88
79
|
};
|
|
89
80
|
exports.onlyViewActions = onlyViewActions;
|
|
90
81
|
/**
|
|
@@ -110,7 +101,7 @@ function matchConstraints(constraints) {
|
|
|
110
101
|
else {
|
|
111
102
|
tempMatches = payload.block_id.match(constraints.block_id);
|
|
112
103
|
if (tempMatches !== null) {
|
|
113
|
-
context
|
|
104
|
+
context.blockIdMatches = tempMatches;
|
|
114
105
|
}
|
|
115
106
|
else {
|
|
116
107
|
return;
|
|
@@ -127,7 +118,7 @@ function matchConstraints(constraints) {
|
|
|
127
118
|
else {
|
|
128
119
|
tempMatches = payload.action_id.match(constraints.action_id);
|
|
129
120
|
if (tempMatches !== null) {
|
|
130
|
-
context
|
|
121
|
+
context.actionIdMatches = tempMatches;
|
|
131
122
|
}
|
|
132
123
|
else {
|
|
133
124
|
return;
|
|
@@ -139,10 +130,10 @@ function matchConstraints(constraints) {
|
|
|
139
130
|
if ('callback_id' in constraints && constraints.callback_id !== undefined) {
|
|
140
131
|
let callbackId = '';
|
|
141
132
|
if (isViewBody(body)) {
|
|
142
|
-
callbackId = body
|
|
133
|
+
callbackId = body.view.callback_id;
|
|
143
134
|
}
|
|
144
135
|
else if (isCallbackIdentifiedBody(body)) {
|
|
145
|
-
callbackId = body
|
|
136
|
+
callbackId = body.callback_id;
|
|
146
137
|
}
|
|
147
138
|
else {
|
|
148
139
|
return;
|
|
@@ -155,7 +146,7 @@ function matchConstraints(constraints) {
|
|
|
155
146
|
else {
|
|
156
147
|
tempMatches = callbackId.match(constraints.callback_id);
|
|
157
148
|
if (tempMatches !== null) {
|
|
158
|
-
context
|
|
149
|
+
context.callbackIdMatches = tempMatches;
|
|
159
150
|
}
|
|
160
151
|
else {
|
|
161
152
|
return;
|
|
@@ -189,7 +180,7 @@ function matchMessage(pattern) {
|
|
|
189
180
|
else {
|
|
190
181
|
tempMatches = event.text.match(pattern);
|
|
191
182
|
if (tempMatches !== null) {
|
|
192
|
-
context
|
|
183
|
+
context.matches = tempMatches;
|
|
193
184
|
}
|
|
194
185
|
else {
|
|
195
186
|
return;
|
|
@@ -236,7 +227,7 @@ function matchEventType(pattern) {
|
|
|
236
227
|
else {
|
|
237
228
|
tempMatches = event.type.match(pattern);
|
|
238
229
|
if (tempMatches !== null) {
|
|
239
|
-
context
|
|
230
|
+
context.matches = tempMatches;
|
|
240
231
|
}
|
|
241
232
|
else {
|
|
242
233
|
return;
|
|
@@ -246,78 +237,69 @@ function matchEventType(pattern) {
|
|
|
246
237
|
};
|
|
247
238
|
}
|
|
248
239
|
exports.matchEventType = matchEventType;
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
// type narrowing
|
|
260
|
-
// Look for an event that is identified as a bot message from the same bot ID as this app, and return to skip
|
|
261
|
-
if (message.subtype === 'bot_message' && message.bot_id === botId) {
|
|
262
|
-
return;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
// Its an Events API event that isn't of type message, but the user ID might match our own app. Filter these out.
|
|
266
|
-
// However, some events still must be fired, because they can make sense.
|
|
267
|
-
const eventsWhichShouldBeKept = ['member_joined_channel', 'member_left_channel'];
|
|
268
|
-
const isEventShouldBeKept = eventsWhichShouldBeKept.includes(args.event.type);
|
|
269
|
-
if (botUserId !== undefined && 'user' in args.event && args.event.user === botUserId && !isEventShouldBeKept) {
|
|
240
|
+
/**
|
|
241
|
+
* Filters out any event originating from the handling app.
|
|
242
|
+
*/
|
|
243
|
+
const ignoreSelf = async (args) => {
|
|
244
|
+
const { botId, botUserId } = args.context;
|
|
245
|
+
if (isEventArgs(args)) {
|
|
246
|
+
if (isMessageEventArgs(args)) {
|
|
247
|
+
const { message } = args;
|
|
248
|
+
// Look for an event that is identified as a bot message from the same bot ID as this app, and return to skip
|
|
249
|
+
if (message.subtype === 'bot_message' && message.bot_id === botId) {
|
|
270
250
|
return;
|
|
271
251
|
}
|
|
272
252
|
}
|
|
273
|
-
//
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
253
|
+
// It's an Events API event that isn't of type message, but the user ID might match our own app. Filter these out.
|
|
254
|
+
// However, some events still must be fired, because they can make sense.
|
|
255
|
+
const eventsWhichShouldBeKept = ['member_joined_channel', 'member_left_channel'];
|
|
256
|
+
if (botUserId !== undefined &&
|
|
257
|
+
'user' in args.event &&
|
|
258
|
+
args.event.user === botUserId &&
|
|
259
|
+
!eventsWhichShouldBeKept.includes(args.event.type)) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// If all the previous checks didn't skip this message, then its okay to resume to next
|
|
264
|
+
await args.next();
|
|
265
|
+
};
|
|
277
266
|
exports.ignoreSelf = ignoreSelf;
|
|
267
|
+
// TODO: breaking change: constrain the subtype argument to be a valid message subtype
|
|
268
|
+
/**
|
|
269
|
+
* Filters out any message events whose subtype does not match the provided subtype.
|
|
270
|
+
*/
|
|
278
271
|
function subtype(subtype1) {
|
|
279
272
|
return async ({ message, next }) => {
|
|
280
|
-
if (message.subtype === subtype1) {
|
|
273
|
+
if (message && message.subtype === subtype1) {
|
|
281
274
|
await next();
|
|
282
275
|
}
|
|
283
276
|
};
|
|
284
277
|
}
|
|
285
278
|
exports.subtype = subtype;
|
|
286
279
|
const slackLink = /<(?<type>[@#!])?(?<link>[^>|]+)(?:\|(?<label>[^>]+))?>/;
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
}
|
|
309
|
-
|
|
280
|
+
/**
|
|
281
|
+
* Filters out any message event whose text does not start with an @-mention of the handling app.
|
|
282
|
+
*/
|
|
283
|
+
const directMention = async ({ message, context, next }) => {
|
|
284
|
+
// When context does not have a botUserId in it, then this middleware cannot perform its job. Bail immediately.
|
|
285
|
+
if (context.botUserId === undefined) {
|
|
286
|
+
throw new errors_1.ContextMissingPropertyError('botUserId', 'Cannot match direct mentions of the app without a bot user ID. Ensure authorize callback returns a botUserId.');
|
|
287
|
+
}
|
|
288
|
+
if (!message || !('text' in message) || message.text === undefined) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
// Match the message text with a user mention format
|
|
292
|
+
const text = message.text.trim();
|
|
293
|
+
const matches = slackLink.exec(text);
|
|
294
|
+
if (matches === null || // stop when no matches are found
|
|
295
|
+
matches.index !== 0 || // stop if match isn't at the beginning
|
|
296
|
+
// stop if match isn't a user mention with the right user ID
|
|
297
|
+
matches.groups === undefined ||
|
|
298
|
+
matches.groups.type !== '@' ||
|
|
299
|
+
matches.groups.link !== context.botUserId) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
await next();
|
|
303
|
+
};
|
|
310
304
|
exports.directMention = directMention;
|
|
311
|
-
function isBlockPayload(payload) {
|
|
312
|
-
return payload.action_id !== undefined;
|
|
313
|
-
}
|
|
314
|
-
function isCallbackIdentifiedBody(body) {
|
|
315
|
-
return body.callback_id !== undefined;
|
|
316
|
-
}
|
|
317
|
-
function isViewBody(body) {
|
|
318
|
-
return body.view !== undefined;
|
|
319
|
-
}
|
|
320
|
-
function isEventArgs(args) {
|
|
321
|
-
return args.event !== undefined;
|
|
322
|
-
}
|
|
323
305
|
//# sourceMappingURL=builtin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../src/middleware/builtin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../src/middleware/builtin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { Logger } from '@slack/logger';
|
|
2
|
+
import type { WebClient } from '@slack/web-api';
|
|
3
|
+
import type { AnyMiddlewareArgs, Context, Middleware } from '../types';
|
|
4
4
|
export default function processMiddleware(middleware: Middleware<AnyMiddlewareArgs>[], initialArgs: AnyMiddlewareArgs, context: Context, client: WebClient, logger: Logger, last: () => Promise<void>): Promise<void>;
|
|
5
5
|
//# sourceMappingURL=process.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/middleware/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/middleware/process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEvE,wBAA8B,iBAAiB,CAC7C,UAAU,EAAE,UAAU,CAAC,iBAAiB,CAAC,EAAE,EAC3C,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -10,8 +10,8 @@ async function processMiddleware(middleware, initialArgs, context, client, logge
|
|
|
10
10
|
if (toCallMiddlewareIndex < middleware.length) {
|
|
11
11
|
lastCalledMiddlewareIndex = toCallMiddlewareIndex;
|
|
12
12
|
return middleware[toCallMiddlewareIndex]({
|
|
13
|
-
next: () => invokeMiddleware(toCallMiddlewareIndex + 1),
|
|
14
13
|
...initialArgs,
|
|
14
|
+
next: () => invokeMiddleware(toCallMiddlewareIndex + 1),
|
|
15
15
|
context,
|
|
16
16
|
client,
|
|
17
17
|
logger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/middleware/process.ts"],"names":[],"mappings":";;AAIe,KAAK,UAAU,iBAAiB,CAC7C,UAA2C,EAC3C,WAA8B,EAC9B,OAAgB,EAChB,MAAiB,EACjB,MAAc,EACd,IAAyB;IAEzB,IAAI,yBAAyB,GAAG,CAAC,CAAC,CAAC;IAEnC,KAAK,UAAU,gBAAgB,CAAC,qBAA6B;QAC3D,IAAI,yBAAyB,IAAI,qBAAqB,EAAE;
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/middleware/process.ts"],"names":[],"mappings":";;AAIe,KAAK,UAAU,iBAAiB,CAC7C,UAA2C,EAC3C,WAA8B,EAC9B,OAAgB,EAChB,MAAiB,EACjB,MAAc,EACd,IAAyB;IAEzB,IAAI,yBAAyB,GAAG,CAAC,CAAC,CAAC;IAEnC,KAAK,UAAU,gBAAgB,CAAC,qBAA6B;QAC3D,IAAI,yBAAyB,IAAI,qBAAqB,EAAE,CAAC;YACvD,0BAA0B;YAC1B,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,qBAAqB,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;YAC9C,yBAAyB,GAAG,qBAAqB,CAAC;YAClD,OAAO,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBACvC,GAAG,WAAW;gBACd,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,qBAAqB,GAAG,CAAC,CAAC;gBACvD,OAAO;gBACP,MAAM;gBACN,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AA/BD,oCA+BC"}
|
|
@@ -1,22 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import App from '../App';
|
|
3
|
-
import { Receiver } from '../types/receiver';
|
|
4
|
-
import { StringIndexed } from '../types/
|
|
5
|
-
export
|
|
1
|
+
import { LogLevel, type Logger } from '@slack/logger';
|
|
2
|
+
import type App from '../App';
|
|
3
|
+
import type { Receiver } from '../types/receiver';
|
|
4
|
+
import type { StringIndexed } from '../types/utilities';
|
|
5
|
+
export type AwsEvent = AwsEventV1 | AwsEventV2;
|
|
6
|
+
type AwsEventStringParameters = Record<string, string | undefined>;
|
|
7
|
+
type AwsEventMultiValueStringParameters = Record<string, string[] | undefined>;
|
|
8
|
+
export interface AwsEventV1 {
|
|
6
9
|
body: string | null;
|
|
7
|
-
headers:
|
|
8
|
-
multiValueHeaders: any;
|
|
9
|
-
httpMethod: string;
|
|
10
|
+
headers: AwsEventStringParameters;
|
|
10
11
|
isBase64Encoded: boolean;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
queryStringParameters: any | null;
|
|
14
|
-
multiValueQueryStringParameters: any | null;
|
|
15
|
-
stageVariables: any | null;
|
|
12
|
+
pathParameters: AwsEventStringParameters | null;
|
|
13
|
+
queryStringParameters: AwsEventStringParameters | null;
|
|
16
14
|
requestContext: any;
|
|
15
|
+
stageVariables: AwsEventStringParameters | null;
|
|
16
|
+
httpMethod: string;
|
|
17
|
+
multiValueHeaders: AwsEventMultiValueStringParameters;
|
|
18
|
+
multiValueQueryStringParameters: AwsEventMultiValueStringParameters;
|
|
19
|
+
path: string;
|
|
17
20
|
resource: string;
|
|
18
21
|
}
|
|
19
|
-
export
|
|
22
|
+
export interface AwsEventV2 {
|
|
23
|
+
body?: string;
|
|
24
|
+
headers: AwsEventStringParameters;
|
|
25
|
+
isBase64Encoded: boolean;
|
|
26
|
+
pathParameters?: AwsEventStringParameters;
|
|
27
|
+
queryStringParameters?: AwsEventStringParameters;
|
|
28
|
+
requestContext: any;
|
|
29
|
+
stageVariables?: AwsEventStringParameters;
|
|
30
|
+
cookies?: string[];
|
|
31
|
+
rawPath: string;
|
|
32
|
+
rawQueryString: string;
|
|
33
|
+
routeKey: string;
|
|
34
|
+
version: string;
|
|
35
|
+
}
|
|
36
|
+
export type AwsCallback = (error?: Error | string | null, result?: any) => void;
|
|
37
|
+
export interface ReceiverInvalidRequestSignatureHandlerArgs {
|
|
38
|
+
rawBody: string;
|
|
39
|
+
signature: string;
|
|
40
|
+
ts: number;
|
|
41
|
+
awsEvent: AwsEvent;
|
|
42
|
+
awsResponse: Promise<AwsResponse>;
|
|
43
|
+
}
|
|
20
44
|
export interface AwsResponse {
|
|
21
45
|
statusCode: number;
|
|
22
46
|
headers?: {
|
|
@@ -28,19 +52,54 @@ export interface AwsResponse {
|
|
|
28
52
|
body: string;
|
|
29
53
|
isBase64Encoded?: boolean;
|
|
30
54
|
}
|
|
31
|
-
export
|
|
55
|
+
export type AwsHandler = (event: AwsEvent, context: any, callback: AwsCallback) => Promise<AwsResponse>;
|
|
32
56
|
export interface AwsLambdaReceiverOptions {
|
|
57
|
+
/**
|
|
58
|
+
* The Slack Signing secret to be used as an input to signature verification to ensure that requests are coming from
|
|
59
|
+
* Slack.
|
|
60
|
+
*
|
|
61
|
+
* If the {@link signatureVerification} flag is set to `false`, this can be set to any value as signature verification
|
|
62
|
+
* using this secret will not be performed.
|
|
63
|
+
*
|
|
64
|
+
* @see {@link https://api.slack.com/authentication/verifying-requests-from-slack#about} for details about signing secrets
|
|
65
|
+
*/
|
|
33
66
|
signingSecret: string;
|
|
67
|
+
/**
|
|
68
|
+
* The {@link Logger} for the receiver
|
|
69
|
+
*
|
|
70
|
+
* @default ConsoleLogger
|
|
71
|
+
*/
|
|
34
72
|
logger?: Logger;
|
|
73
|
+
/**
|
|
74
|
+
* The {@link LogLevel} to be used for the logger.
|
|
75
|
+
*
|
|
76
|
+
* @default LogLevel.INFO
|
|
77
|
+
*/
|
|
35
78
|
logLevel?: LogLevel;
|
|
79
|
+
/**
|
|
80
|
+
* Flag that determines whether Bolt should {@link https://api.slack.com/authentication/verifying-requests-from-slack|verify Slack's signature on incoming requests}.
|
|
81
|
+
*
|
|
82
|
+
* @default true
|
|
83
|
+
*/
|
|
84
|
+
signatureVerification?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Optional `function` that can extract custom properties from an incoming receiver event
|
|
87
|
+
* @param request The API Gateway event {@link AwsEvent}
|
|
88
|
+
* @returns An object containing custom properties
|
|
89
|
+
*
|
|
90
|
+
* @default noop
|
|
91
|
+
*/
|
|
36
92
|
customPropertiesExtractor?: (request: AwsEvent) => StringIndexed;
|
|
93
|
+
invalidRequestSignatureHandler?: (args: ReceiverInvalidRequestSignatureHandlerArgs) => void;
|
|
37
94
|
}
|
|
38
95
|
export default class AwsLambdaReceiver implements Receiver {
|
|
39
96
|
private signingSecret;
|
|
40
97
|
private app?;
|
|
41
98
|
private logger;
|
|
99
|
+
private signatureVerification;
|
|
42
100
|
private customPropertiesExtractor;
|
|
43
|
-
|
|
101
|
+
private invalidRequestSignatureHandler;
|
|
102
|
+
constructor({ signingSecret, logger, logLevel, signatureVerification, customPropertiesExtractor, invalidRequestSignatureHandler, }: AwsLambdaReceiverOptions);
|
|
44
103
|
init(app: App): void;
|
|
45
104
|
start(..._args: any[]): Promise<AwsHandler>;
|
|
46
105
|
stop(..._args: any[]): Promise<void>;
|
|
@@ -49,5 +108,7 @@ export default class AwsLambdaReceiver implements Receiver {
|
|
|
49
108
|
private parseRequestBody;
|
|
50
109
|
private isValidRequestSignature;
|
|
51
110
|
private getHeaderValue;
|
|
111
|
+
private defaultInvalidRequestSignatureHandler;
|
|
52
112
|
}
|
|
113
|
+
export {};
|
|
53
114
|
//# sourceMappingURL=AwsLambdaReceiver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AwsLambdaReceiver.d.ts","sourceRoot":"","sources":["../../src/receivers/AwsLambdaReceiver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AwsLambdaReceiver.d.ts","sourceRoot":"","sources":["../../src/receivers/AwsLambdaReceiver.ts"],"names":[],"mappings":"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"}
|