@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.
Files changed (218) hide show
  1. package/README.md +22 -16
  2. package/dist/App.d.ts +39 -80
  3. package/dist/App.d.ts.map +1 -1
  4. package/dist/App.js +223 -234
  5. package/dist/App.js.map +1 -1
  6. package/dist/CustomFunction.d.ts +58 -0
  7. package/dist/CustomFunction.d.ts.map +1 -0
  8. package/dist/CustomFunction.js +144 -0
  9. package/dist/CustomFunction.js.map +1 -0
  10. package/dist/WorkflowStep.d.ts +89 -36
  11. package/dist/WorkflowStep.d.ts.map +1 -1
  12. package/dist/WorkflowStep.js +29 -8
  13. package/dist/WorkflowStep.js.map +1 -1
  14. package/dist/conversation-store.d.ts +1 -1
  15. package/dist/conversation-store.d.ts.map +1 -1
  16. package/dist/conversation-store.js +3 -3
  17. package/dist/conversation-store.js.map +1 -1
  18. package/dist/errors.d.ts +12 -7
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +42 -53
  21. package/dist/errors.js.map +1 -1
  22. package/dist/helpers.d.ts +16 -3
  23. package/dist/helpers.d.ts.map +1 -1
  24. package/dist/helpers.js +43 -11
  25. package/dist/helpers.js.map +1 -1
  26. package/dist/index.d.ts +4 -5
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +16 -11
  29. package/dist/index.js.map +1 -1
  30. package/dist/middleware/builtin.d.ts +20 -23
  31. package/dist/middleware/builtin.d.ts.map +1 -1
  32. package/dist/middleware/builtin.js +93 -110
  33. package/dist/middleware/builtin.js.map +1 -1
  34. package/dist/middleware/process.d.ts +3 -3
  35. package/dist/middleware/process.d.ts.map +1 -1
  36. package/dist/middleware/process.js +1 -1
  37. package/dist/middleware/process.js.map +1 -1
  38. package/dist/receivers/AwsLambdaReceiver.d.ts +77 -16
  39. package/dist/receivers/AwsLambdaReceiver.d.ts.map +1 -1
  40. package/dist/receivers/AwsLambdaReceiver.js +53 -25
  41. package/dist/receivers/AwsLambdaReceiver.js.map +1 -1
  42. package/dist/receivers/BufferedIncomingMessage.d.ts +2 -1
  43. package/dist/receivers/BufferedIncomingMessage.d.ts.map +1 -1
  44. package/dist/receivers/ExpressReceiver.d.ts +13 -13
  45. package/dist/receivers/ExpressReceiver.d.ts.map +1 -1
  46. package/dist/receivers/ExpressReceiver.js +70 -70
  47. package/dist/receivers/ExpressReceiver.js.map +1 -1
  48. package/dist/receivers/HTTPModuleFunctions.d.ts +18 -20
  49. package/dist/receivers/HTTPModuleFunctions.d.ts.map +1 -1
  50. package/dist/receivers/HTTPModuleFunctions.js +189 -171
  51. package/dist/receivers/HTTPModuleFunctions.js.map +1 -1
  52. package/dist/receivers/HTTPReceiver.d.ts +14 -14
  53. package/dist/receivers/HTTPReceiver.d.ts.map +1 -1
  54. package/dist/receivers/HTTPReceiver.js +102 -48
  55. package/dist/receivers/HTTPReceiver.js.map +1 -1
  56. package/dist/receivers/HTTPResponseAck.d.ts +7 -7
  57. package/dist/receivers/HTTPResponseAck.d.ts.map +1 -1
  58. package/dist/receivers/HTTPResponseAck.js +37 -5
  59. package/dist/receivers/HTTPResponseAck.js.map +1 -1
  60. package/dist/receivers/ParamsIncomingMessage.d.ts +14 -0
  61. package/dist/receivers/ParamsIncomingMessage.d.ts.map +1 -0
  62. package/dist/{types/block-suggestion/index.js → receivers/ParamsIncomingMessage.js} +1 -1
  63. package/dist/receivers/ParamsIncomingMessage.js.map +1 -0
  64. package/dist/receivers/SocketModeFunctions.d.ts +3 -5
  65. package/dist/receivers/SocketModeFunctions.d.ts.map +1 -1
  66. package/dist/receivers/SocketModeFunctions.js +14 -23
  67. package/dist/receivers/SocketModeFunctions.js.map +1 -1
  68. package/dist/receivers/SocketModeReceiver.d.ts +10 -9
  69. package/dist/receivers/SocketModeReceiver.d.ts.map +1 -1
  70. package/dist/receivers/SocketModeReceiver.js +41 -25
  71. package/dist/receivers/SocketModeReceiver.js.map +1 -1
  72. package/dist/receivers/custom-routes.d.ts +4 -3
  73. package/dist/receivers/custom-routes.d.ts.map +1 -1
  74. package/dist/receivers/custom-routes.js +10 -9
  75. package/dist/receivers/custom-routes.js.map +1 -1
  76. package/dist/receivers/verify-redirect-opts.d.ts +1 -1
  77. package/dist/receivers/verify-redirect-opts.d.ts.map +1 -1
  78. package/dist/receivers/verify-redirect-opts.js +3 -3
  79. package/dist/receivers/verify-redirect-opts.js.map +1 -1
  80. package/dist/receivers/verify-request.d.ts +1 -12
  81. package/dist/receivers/verify-request.d.ts.map +1 -1
  82. package/dist/receivers/verify-request.js +4 -18
  83. package/dist/receivers/verify-request.js.map +1 -1
  84. package/dist/types/actions/block-action.d.ts +41 -22
  85. package/dist/types/actions/block-action.d.ts.map +1 -1
  86. package/dist/types/actions/dialog-action.d.ts +0 -4
  87. package/dist/types/actions/dialog-action.d.ts.map +1 -1
  88. package/dist/types/actions/index.d.ts +25 -11
  89. package/dist/types/actions/index.d.ts.map +1 -1
  90. package/dist/types/actions/index.js +1 -0
  91. package/dist/types/actions/index.js.map +1 -1
  92. package/dist/types/actions/interactive-message.d.ts +3 -3
  93. package/dist/types/actions/interactive-message.d.ts.map +1 -1
  94. package/dist/types/actions/workflow-step-edit.d.ts +7 -7
  95. package/dist/types/actions/workflow-step-edit.d.ts.map +1 -1
  96. package/dist/types/command/index.d.ts +1 -2
  97. package/dist/types/command/index.d.ts.map +1 -1
  98. package/dist/types/events/index.d.ts +26 -24
  99. package/dist/types/events/index.d.ts.map +1 -1
  100. package/dist/types/events/index.js +4 -15
  101. package/dist/types/events/index.js.map +1 -1
  102. package/dist/types/index.d.ts +0 -2
  103. package/dist/types/index.d.ts.map +1 -1
  104. package/dist/types/index.js +0 -2
  105. package/dist/types/index.js.map +1 -1
  106. package/dist/types/middleware.d.ts +30 -30
  107. package/dist/types/middleware.d.ts.map +1 -1
  108. package/dist/types/middleware.js +3 -0
  109. package/dist/types/middleware.js.map +1 -1
  110. package/dist/types/options/index.d.ts +23 -59
  111. package/dist/types/options/index.d.ts.map +1 -1
  112. package/dist/types/receiver.d.ts +3 -3
  113. package/dist/types/receiver.d.ts.map +1 -1
  114. package/dist/types/shortcuts/global-shortcut.d.ts.map +1 -1
  115. package/dist/types/shortcuts/index.d.ts +14 -9
  116. package/dist/types/shortcuts/index.d.ts.map +1 -1
  117. package/dist/types/shortcuts/message-shortcut.d.ts.map +1 -1
  118. package/dist/types/utilities.d.ts +23 -13
  119. package/dist/types/utilities.d.ts.map +1 -1
  120. package/dist/types/utilities.js +7 -0
  121. package/dist/types/utilities.js.map +1 -1
  122. package/dist/types/view/index.d.ts +148 -12
  123. package/dist/types/view/index.d.ts.map +1 -1
  124. package/package.json +32 -61
  125. package/dist/Manifest.d.ts +0 -5
  126. package/dist/Manifest.d.ts.map +0 -1
  127. package/dist/Manifest.js +0 -16
  128. package/dist/Manifest.js.map +0 -1
  129. package/dist/SlackFunction.d.ts +0 -190
  130. package/dist/SlackFunction.d.ts.map +0 -1
  131. package/dist/SlackFunction.js +0 -441
  132. package/dist/SlackFunction.js.map +0 -1
  133. package/dist/Subscription.d.ts +0 -61
  134. package/dist/Subscription.d.ts.map +0 -1
  135. package/dist/Subscription.js +0 -169
  136. package/dist/Subscription.js.map +0 -1
  137. package/dist/cli/check-update.d.ts +0 -3
  138. package/dist/cli/check-update.d.ts.map +0 -1
  139. package/dist/cli/check-update.js +0 -13
  140. package/dist/cli/check-update.js.map +0 -1
  141. package/dist/cli/get-hooks.d.ts +0 -2
  142. package/dist/cli/get-hooks.d.ts.map +0 -1
  143. package/dist/cli/get-hooks.js +0 -19
  144. package/dist/cli/get-hooks.js.map +0 -1
  145. package/dist/cli/get-manifest.d.ts +0 -3
  146. package/dist/cli/get-manifest.d.ts.map +0 -1
  147. package/dist/cli/get-manifest.js +0 -16
  148. package/dist/cli/get-manifest.js.map +0 -1
  149. package/dist/cli/hook-utils/get-check-update-data.d.ts +0 -49
  150. package/dist/cli/hook-utils/get-check-update-data.d.ts.map +0 -1
  151. package/dist/cli/hook-utils/get-check-update-data.js +0 -252
  152. package/dist/cli/hook-utils/get-check-update-data.js.map +0 -1
  153. package/dist/cli/hook-utils/get-check-update-data.spec.d.ts +0 -2
  154. package/dist/cli/hook-utils/get-check-update-data.spec.d.ts.map +0 -1
  155. package/dist/cli/hook-utils/get-check-update-data.spec.js +0 -266
  156. package/dist/cli/hook-utils/get-check-update-data.spec.js.map +0 -1
  157. package/dist/cli/hook-utils/get-manifest-data.d.ts +0 -7
  158. package/dist/cli/hook-utils/get-manifest-data.d.ts.map +0 -1
  159. package/dist/cli/hook-utils/get-manifest-data.js +0 -30
  160. package/dist/cli/hook-utils/get-manifest-data.js.map +0 -1
  161. package/dist/cli/hook-utils/get-manifest-data.spec.d.ts +0 -2
  162. package/dist/cli/hook-utils/get-manifest-data.spec.d.ts.map +0 -1
  163. package/dist/cli/hook-utils/get-manifest-data.spec.js +0 -113
  164. package/dist/cli/hook-utils/get-manifest-data.spec.js.map +0 -1
  165. package/dist/cli/hook-utils/manifest.d.ts +0 -30
  166. package/dist/cli/hook-utils/manifest.d.ts.map +0 -1
  167. package/dist/cli/hook-utils/manifest.js +0 -103
  168. package/dist/cli/hook-utils/manifest.js.map +0 -1
  169. package/dist/cli/hook-utils/manifest.spec.d.ts +0 -2
  170. package/dist/cli/hook-utils/manifest.spec.d.ts.map +0 -1
  171. package/dist/cli/hook-utils/manifest.spec.js +0 -79
  172. package/dist/cli/hook-utils/manifest.spec.js.map +0 -1
  173. package/dist/cli/run.d.ts +0 -2
  174. package/dist/cli/run.d.ts.map +0 -1
  175. package/dist/cli/run.js +0 -37
  176. package/dist/cli/run.js.map +0 -1
  177. package/dist/cli/start.d.ts +0 -3
  178. package/dist/cli/start.d.ts.map +0 -1
  179. package/dist/cli/start.js +0 -40
  180. package/dist/cli/start.js.map +0 -1
  181. package/dist/receivers/http-utils.d.ts +0 -5
  182. package/dist/receivers/http-utils.d.ts.map +0 -1
  183. package/dist/receivers/http-utils.js +0 -19
  184. package/dist/receivers/http-utils.js.map +0 -1
  185. package/dist/receivers/render-html-for-install-path.d.ts +0 -3
  186. package/dist/receivers/render-html-for-install-path.d.ts.map +0 -1
  187. package/dist/receivers/render-html-for-install-path.js +0 -32
  188. package/dist/receivers/render-html-for-install-path.js.map +0 -1
  189. package/dist/types/block-suggestion/index.d.ts +0 -97
  190. package/dist/types/block-suggestion/index.d.ts.map +0 -1
  191. package/dist/types/block-suggestion/index.js.map +0 -1
  192. package/dist/types/events/base-events.d.ts +0 -1135
  193. package/dist/types/events/base-events.d.ts.map +0 -1
  194. package/dist/types/events/base-events.js +0 -5
  195. package/dist/types/events/base-events.js.map +0 -1
  196. package/dist/types/events/message-events.d.ts +0 -348
  197. package/dist/types/events/message-events.d.ts.map +0 -1
  198. package/dist/types/events/message-events.js +0 -3
  199. package/dist/types/events/message-events.js.map +0 -1
  200. package/dist/types/functions/index.d.ts +0 -26
  201. package/dist/types/functions/index.d.ts.map +0 -1
  202. package/dist/types/functions/index.js +0 -3
  203. package/dist/types/functions/index.js.map +0 -1
  204. package/dist/types/helpers.d.ts +0 -17
  205. package/dist/types/helpers.d.ts.map +0 -1
  206. package/dist/types/helpers.js +0 -3
  207. package/dist/types/helpers.js.map +0 -1
  208. package/dist/types/subscription/index.d.ts +0 -80
  209. package/dist/types/subscription/index.d.ts.map +0 -1
  210. package/dist/types/subscription/index.js +0 -3
  211. package/dist/types/subscription/index.js.map +0 -1
  212. package/src/cli/check-update.js +0 -13
  213. package/src/cli/get-hooks.js +0 -17
  214. package/src/cli/get-manifest.js +0 -16
  215. package/src/cli/hook-utils/get-check-update-data.js +0 -292
  216. package/src/cli/hook-utils/get-manifest-data.js +0 -39
  217. package/src/cli/hook-utils/manifest.js +0 -108
  218. package/src/cli/start.js +0 -43
@@ -1,190 +0,0 @@
1
- import { AllMiddlewareArgs, AnyMiddlewareArgs, Middleware, SlackAction, SlackActionMiddlewareArgs, SlackEventMiddlewareArgs, SlackViewAction, SlackViewMiddlewareArgs, SlackBlockSuggestion, SlackBlockSuggestionsMiddlewareArgs } from './types';
2
- import { ActionConstraints, ViewConstraints, BlockSuggestionConstraints } from './App';
3
- export declare const manifestUtil: any;
4
- export declare const getManifestDataUtil: any;
5
- export interface SlackFunctionExecutedMiddlewareArgs extends SlackEventMiddlewareArgs<'function_executed'> {
6
- complete: CompleteFunction;
7
- }
8
- export interface CompleteFunction {
9
- (args: CompleteFunctionArgs): Promise<void>;
10
- }
11
- export interface CompleteFunctionArgs {
12
- outputs?: Record<string, unknown>;
13
- error?: string;
14
- }
15
- export declare type AllSlackFunctionExecutedMiddlewareArgs = SlackFunctionExecutedMiddlewareArgs & SlackActionMiddlewareArgs & SlackBlockSuggestionsMiddlewareArgs & AllMiddlewareArgs;
16
- declare type FunctionInteractivityConstraints = ActionConstraints | ViewConstraints | BlockSuggestionConstraints;
17
- interface SlackFnValidateResult {
18
- pass: boolean;
19
- msg?: string;
20
- }
21
- export interface ManifestDefinitionResult {
22
- matchFound: boolean;
23
- fnKeys?: string[];
24
- }
25
- /**
26
- * *SlackFunction*
27
- *
28
- * Configure a SlackFunction's callbackId,
29
- * and any expected inputs and outputs
30
- * in your project's manifest file (json or js).
31
- *
32
- * Use this class to declare your handling logic:
33
- *
34
- * Example:
35
- * ```
36
- * const myFunc = new SlackFunction('fn_callback_id', () => {});
37
- * ```
38
- * You can also declare
39
- * optional handlers for `block_action` and `view` events
40
- * related to your function.
41
- *
42
- * Example:
43
- * ```
44
- * myFunc.action('action_id', () => {})
45
- * .view('view_callback_id', () => {});
46
- * ```
47
- * Note: This is not equivalent to app.action() or app.view()
48
- *
49
- * *Completing your function*
50
- *
51
- * Call the supplied utility `complete` when your function is
52
- * done executing. This tells Slack it can proceed
53
- * with any next steps in any workflow this function might
54
- * be included in.
55
- *
56
- * Supply outputs or an error or nothing when your
57
- * function is done. Note, your outputs should match what you
58
- * have defined in your in your manifest.
59
- *
60
- * Example:
61
- * ```
62
- * const myFunc = new SlackFunction('fn_callback_id', ({ complete }) => {
63
- * // do my work here
64
- *
65
- * complete() // or
66
- * complete({ outputs: {} }); // or
67
- * complete({ error: "error details here" });
68
- * });
69
- * ```
70
- *
71
- * Call `complete()` from your main handler or
72
- * an interactivity handler. Note, once a function is
73
- * completed (either with outputs or an error), interactions
74
- * from views generated in the course of function execution
75
- * will no longer trigger associated handlers, so remember to clean those up.
76
- * */
77
- export declare class SlackFunction {
78
- /**
79
- * @description The callback_id of the function
80
- * as defined in your manifest file
81
- * */
82
- private callbackId;
83
- /**
84
- * @description handler to to process corresponding
85
- * function_executed event
86
- */
87
- private handler;
88
- private interactivityHandlers;
89
- private logger;
90
- constructor(callbackId: string, handler: Middleware<SlackEventMiddlewareArgs>);
91
- /**
92
- * Attach a block_actions interactivity handler to your SlackFunction
93
- *
94
- * ```
95
- * Example:
96
- * const actionHandler = async () => {};
97
- * const actionHandler1 = async () => {};
98
- * myFunc.action("id", actionHandler).action("id1", actionHandler1);
99
- * ```
100
- *
101
- * @param actionIdOrConstraints Provide an action_id string
102
- * corresponding to the value supplied in your blocks or a
103
- * constraint object of type ActionConstraints<SlackAction>
104
- *
105
- * ```
106
- * Example:
107
- * myFunc.action({ type: "action_submission" });
108
- * myFunc.action({ action_id: "id" }, actionHandler);
109
- * ```
110
- * @param handler Provide a handler function
111
- * @returns SlackFunction instance
112
- */
113
- action<Action extends SlackAction = SlackAction, Constraints extends ActionConstraints<Action> = ActionConstraints<Action>>(actionIdOrConstraints: string | RegExp | Constraints, handler: Middleware<SlackActionMiddlewareArgs>): this;
114
- /**
115
- * Attach a block_suggestion interactivity handler to your SlackFunction
116
- *
117
- * ```
118
- * @param handler Provide a handler function
119
- * @returns SlackFunction instance
120
- */
121
- blockSuggestion<BlockSuggestion extends SlackBlockSuggestion = SlackBlockSuggestion, Constraints extends BlockSuggestionConstraints<BlockSuggestion> = BlockSuggestionConstraints<BlockSuggestion>>(actionIdOrConstraints: string | RegExp | Constraints, handler: Middleware<SlackBlockSuggestionsMiddlewareArgs>): this;
122
- /**
123
- * Attach a view_submission or view_closed interactivity handler
124
- * to your SlackFunction
125
- *
126
- * ```
127
- * Example:
128
- * const viewHandler = async () => {};
129
- * const viewHandler1 = async () => {};
130
- * myFunc.view("id", viewHandler).view("id1", viewHandler1)
131
- * ```
132
- *
133
- * @param callbackIdOrConstraints Provide a `callback_id` string
134
- * a constraint object of type ViewConstraints
135
- *
136
- * ```
137
- * Example:
138
- * myFunc.view({ type: "view_submission" });
139
- * myFunc.view({ callback_id: "id", }, viewHandler)
140
- * ```
141
- *
142
- * @param handler Provide a handler function
143
- * @returns SlackFunction instance
144
- */
145
- view(callbackIdOrConstraints: string | RegExp | ViewConstraints, handler: Middleware<SlackViewMiddlewareArgs<SlackViewAction>>): this;
146
- private matchesFuncConstraints;
147
- /**
148
- * Returns a a single middleware to global
149
- * middleware chain. Responsible for returning
150
- * handlers required for either function execution
151
- * or function interactivity event handlering to
152
- * the global event processing chain.
153
- */
154
- getMiddleware(): Middleware<AnyMiddlewareArgs>;
155
- runHandler: (args: AnyMiddlewareArgs & AllMiddlewareArgs) => Promise<void>;
156
- runInteractivityHandlers: (args: AnyMiddlewareArgs & AllMiddlewareArgs) => Promise<void>;
157
- /**
158
- * Ensure that SlackFunction `complete()` utility callback is provided
159
- * as args to all function and interactivity handlers registered on
160
- * SlackFunction instance
161
- * @param args middleware arguments
162
- */
163
- private prepareFnArgs;
164
- /**
165
- * Creates a `complete()` utility function
166
- *
167
- * @param args
168
- * @returns A `complete()` utility callback
169
- * which can be accessed from any SlackFunction
170
- * handler and used to to complete your SlackFunction.
171
- *
172
- * ```
173
- * Example:
174
- * const handler = async ({ complete }) => { complete() };
175
- * const myFunc = new SlackFunction("id", handler);
176
- * ```
177
- */
178
- private createComplete;
179
- }
180
- export declare function isFunctionExecutedEvent(args: AnyMiddlewareArgs): boolean;
181
- export declare function isFunctionInteractivityEvent(args: AnyMiddlewareArgs & AllMiddlewareArgs): boolean;
182
- export declare function passConstraint(constraintKey: Extract<(keyof ActionConstraints), string> | Extract<(keyof ViewConstraints), string>, constraints: FunctionInteractivityConstraints, payload: any): boolean;
183
- export declare function validate(callbackId: string, handler: Middleware<SlackEventMiddlewareArgs>): void;
184
- export declare function errorIfInvalidConstraintKeys(constraints: FunctionInteractivityConstraints, validKeys: string[], handler: Middleware<SlackActionMiddlewareArgs> | Middleware<SlackViewMiddlewareArgs<SlackViewAction>> | Middleware<SlackBlockSuggestionsMiddlewareArgs>): void;
185
- export declare function hasCallbackId(callbackId: string, _?: Middleware<SlackEventMiddlewareArgs>): SlackFnValidateResult;
186
- export declare function hasMatchingManifestDefinition(callbackId: string, _?: Middleware<SlackEventMiddlewareArgs>): SlackFnValidateResult;
187
- export declare function findMatchingManifestDefinition(callbackId: string): ManifestDefinitionResult;
188
- export declare function hasHandler(_: string, handler: Middleware<SlackEventMiddlewareArgs>): SlackFnValidateResult;
189
- export {};
190
- //# sourceMappingURL=SlackFunction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SlackFunction.d.ts","sourceRoot":"","sources":["../src/SlackFunction.ts"],"names":[],"mappings":"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"}
@@ -1,441 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.hasHandler = exports.findMatchingManifestDefinition = exports.hasMatchingManifestDefinition = exports.hasCallbackId = exports.errorIfInvalidConstraintKeys = exports.validate = exports.passConstraint = exports.isFunctionInteractivityEvent = exports.isFunctionExecutedEvent = exports.SlackFunction = exports.getManifestDataUtil = exports.manifestUtil = void 0;
7
- const util_1 = __importDefault(require("util"));
8
- const logger_1 = require("@slack/logger");
9
- const errors_1 = require("./errors");
10
- // eslint-disable-next-line
11
- exports.manifestUtil = require('./cli/hook-utils/manifest');
12
- // eslint-disable-next-line
13
- exports.getManifestDataUtil = require('./cli/hook-utils/get-manifest-data');
14
- /**
15
- * *SlackFunction*
16
- *
17
- * Configure a SlackFunction's callbackId,
18
- * and any expected inputs and outputs
19
- * in your project's manifest file (json or js).
20
- *
21
- * Use this class to declare your handling logic:
22
- *
23
- * Example:
24
- * ```
25
- * const myFunc = new SlackFunction('fn_callback_id', () => {});
26
- * ```
27
- * You can also declare
28
- * optional handlers for `block_action` and `view` events
29
- * related to your function.
30
- *
31
- * Example:
32
- * ```
33
- * myFunc.action('action_id', () => {})
34
- * .view('view_callback_id', () => {});
35
- * ```
36
- * Note: This is not equivalent to app.action() or app.view()
37
- *
38
- * *Completing your function*
39
- *
40
- * Call the supplied utility `complete` when your function is
41
- * done executing. This tells Slack it can proceed
42
- * with any next steps in any workflow this function might
43
- * be included in.
44
- *
45
- * Supply outputs or an error or nothing when your
46
- * function is done. Note, your outputs should match what you
47
- * have defined in your in your manifest.
48
- *
49
- * Example:
50
- * ```
51
- * const myFunc = new SlackFunction('fn_callback_id', ({ complete }) => {
52
- * // do my work here
53
- *
54
- * complete() // or
55
- * complete({ outputs: {} }); // or
56
- * complete({ error: "error details here" });
57
- * });
58
- * ```
59
- *
60
- * Call `complete()` from your main handler or
61
- * an interactivity handler. Note, once a function is
62
- * completed (either with outputs or an error), interactions
63
- * from views generated in the course of function execution
64
- * will no longer trigger associated handlers, so remember to clean those up.
65
- * */
66
- class SlackFunction {
67
- constructor(callbackId, handler) {
68
- this.runHandler = async (args) => {
69
- this.logger.debug('🚀 Executing my main handler:', this.handler);
70
- try {
71
- const handlerArgs = this.prepareFnArgs(args);
72
- await this.handler(handlerArgs);
73
- }
74
- catch (err) {
75
- this.logger.error('⚠️ Something went wrong executing:', this.handler, '\n⚠️ Error Details:', err);
76
- }
77
- };
78
- this.runInteractivityHandlers = async (args) => {
79
- const jobs = [];
80
- for (let i = 0; i < this.interactivityHandlers.length; i += 1) {
81
- const { constraints, handler } = this.interactivityHandlers[i];
82
- if (passInteractivityConstraints(constraints, args)) {
83
- const handlerArgs = this.prepareFnArgs(args);
84
- // helpful logging
85
- this.logger.debug('🚀 Executing my interactive handler:', handler);
86
- this.logger.debug('🚀 Registered with constraints:', constraints);
87
- jobs.push(handler(handlerArgs));
88
- }
89
- }
90
- return new Promise((resolve, reject) => {
91
- Promise.all(jobs).then((_) => resolve()).catch((error) => {
92
- const msg = `⚠️ A SlackFunction handler promise rejected. Error details: ${error}`;
93
- const err = new errors_1.SlackFunctionExecutionError(msg);
94
- reject(err);
95
- });
96
- });
97
- };
98
- validate(callbackId, handler);
99
- this.callbackId = callbackId;
100
- this.handler = handler;
101
- this.interactivityHandlers = [];
102
- // set an initial default logging
103
- const logger = new logger_1.ConsoleLogger();
104
- logger.setName(`SlackFunction: [${this.callbackId}]`);
105
- logger.setLevel(logger_1.LogLevel.DEBUG);
106
- this.logger = logger;
107
- }
108
- /**
109
- * Attach a block_actions interactivity handler to your SlackFunction
110
- *
111
- * ```
112
- * Example:
113
- * const actionHandler = async () => {};
114
- * const actionHandler1 = async () => {};
115
- * myFunc.action("id", actionHandler).action("id1", actionHandler1);
116
- * ```
117
- *
118
- * @param actionIdOrConstraints Provide an action_id string
119
- * corresponding to the value supplied in your blocks or a
120
- * constraint object of type ActionConstraints<SlackAction>
121
- *
122
- * ```
123
- * Example:
124
- * myFunc.action({ type: "action_submission" });
125
- * myFunc.action({ action_id: "id" }, actionHandler);
126
- * ```
127
- * @param handler Provide a handler function
128
- * @returns SlackFunction instance
129
- */
130
- action(actionIdOrConstraints, handler) {
131
- // normalize constraints
132
- const constraints = (typeof actionIdOrConstraints === 'string' ||
133
- util_1.default.types.isRegExp(actionIdOrConstraints)) ?
134
- { action_id: actionIdOrConstraints } :
135
- actionIdOrConstraints;
136
- // declare our valid constraints keys
137
- const validConstraintsKeys = ['action_id', 'block_id', 'callback_id', 'type'];
138
- // cast to string array for convenience
139
- const validConstraintsKeysAsStrings = validConstraintsKeys;
140
- errorIfInvalidConstraintKeys(constraints, validConstraintsKeysAsStrings, handler);
141
- this.interactivityHandlers.push({ constraints, handler });
142
- return this;
143
- }
144
- /**
145
- * Attach a block_suggestion interactivity handler to your SlackFunction
146
- *
147
- * ```
148
- * @param handler Provide a handler function
149
- * @returns SlackFunction instance
150
- */
151
- blockSuggestion(actionIdOrConstraints, handler) {
152
- // normalize constraints
153
- const constraints = (typeof actionIdOrConstraints === 'string' ||
154
- util_1.default.types.isRegExp(actionIdOrConstraints)) ?
155
- { action_id: actionIdOrConstraints } :
156
- actionIdOrConstraints;
157
- // declare our valid constraints keys
158
- const validConstraintsKeys = ['action_id', 'block_id', 'type'];
159
- // cast to string array for convenience
160
- const validConstraintsKeysAsStrings = validConstraintsKeys;
161
- errorIfInvalidConstraintKeys(constraints, validConstraintsKeysAsStrings, handler);
162
- this.interactivityHandlers.push({ constraints, handler });
163
- return this;
164
- }
165
- /**
166
- * Attach a view_submission or view_closed interactivity handler
167
- * to your SlackFunction
168
- *
169
- * ```
170
- * Example:
171
- * const viewHandler = async () => {};
172
- * const viewHandler1 = async () => {};
173
- * myFunc.view("id", viewHandler).view("id1", viewHandler1)
174
- * ```
175
- *
176
- * @param callbackIdOrConstraints Provide a `callback_id` string
177
- * a constraint object of type ViewConstraints
178
- *
179
- * ```
180
- * Example:
181
- * myFunc.view({ type: "view_submission" });
182
- * myFunc.view({ callback_id: "id", }, viewHandler)
183
- * ```
184
- *
185
- * @param handler Provide a handler function
186
- * @returns SlackFunction instance
187
- */
188
- view(callbackIdOrConstraints, handler) {
189
- // normalize constraints
190
- const constraints = (typeof callbackIdOrConstraints === 'string' ||
191
- util_1.default.types.isRegExp(callbackIdOrConstraints)) ?
192
- { callback_id: callbackIdOrConstraints, type: 'view_submission' } :
193
- callbackIdOrConstraints;
194
- // declare our valid constraints keys
195
- const validConstraintsKeys = ['callback_id', 'type'];
196
- // cast to string array for convenience
197
- const validConstraintsKeysAsStrings = validConstraintsKeys;
198
- errorIfInvalidConstraintKeys(constraints, validConstraintsKeysAsStrings, handler);
199
- this.interactivityHandlers.push({ constraints, handler });
200
- return this;
201
- }
202
- matchesFuncConstraints(args) {
203
- if ('function' in args.payload) {
204
- return this.callbackId === args.payload.function.callback_id;
205
- }
206
- return false;
207
- }
208
- /**
209
- * Returns a a single middleware to global
210
- * middleware chain. Responsible for returning
211
- * handlers required for either function execution
212
- * or function interactivity event handlering to
213
- * the global event processing chain.
214
- */
215
- getMiddleware() {
216
- return (args) => {
217
- // handle function executed event
218
- if ((isFunctionExecutedEvent(args) && this.matchesFuncConstraints(args))) {
219
- return this.runHandler(args);
220
- }
221
- // handle function interactivity events
222
- if (isFunctionInteractivityEvent(args)) {
223
- return this.runInteractivityHandlers(args);
224
- }
225
- // call the next middleware in the global middleware chain
226
- return args.next();
227
- };
228
- }
229
- /**
230
- * Ensure that SlackFunction `complete()` utility callback is provided
231
- * as args to all function and interactivity handlers registered on
232
- * SlackFunction instance
233
- * @param args middleware arguments
234
- */
235
- prepareFnArgs(args) {
236
- var _a;
237
- const { next: _next, ...subArgs } = args;
238
- // eslint-disable-next-line
239
- const preparedArgs = { ...subArgs };
240
- // ensure all handlers have complete utility
241
- preparedArgs.complete = (_a = preparedArgs.complete) !== null && _a !== void 0 ? _a : this.createComplete(preparedArgs);
242
- return preparedArgs;
243
- }
244
- /**
245
- * Creates a `complete()` utility function
246
- *
247
- * @param args
248
- * @returns A `complete()` utility callback
249
- * which can be accessed from any SlackFunction
250
- * handler and used to to complete your SlackFunction.
251
- *
252
- * ```
253
- * Example:
254
- * const handler = async ({ complete }) => { complete() };
255
- * const myFunc = new SlackFunction("id", handler);
256
- * ```
257
- */
258
- // eslint-disable-next-line
259
- createComplete(args) {
260
- const { payload, body, client } = args;
261
- // gets the function execution id from a function executed event
262
- let { function_execution_id } = payload;
263
- // gets the function execution id from the function data in a function interactivity event
264
- if (function_execution_id === undefined && body !== undefined && 'function_data' in body) {
265
- function_execution_id = body.function_data.execution_id;
266
- }
267
- // if stil undefined, error
268
- if (function_execution_id === undefined) {
269
- const msg = '⚠️ Cannot generate required complete utility without a function_execution_id';
270
- throw new errors_1.SlackFunctionCompleteError(msg);
271
- }
272
- // return the utility callback
273
- return ({ outputs, error } = {}) => {
274
- // Slack API requires functions complete with either outputs or error, not both
275
- if (outputs && error) {
276
- throw new errors_1.SlackFunctionCompleteError('⚠️ Cannot complete with outputs and error message supplied');
277
- }
278
- // if user has supplied outputs OR has supplied neither outputs nor error
279
- if (outputs !== undefined || (outputs === undefined && error === undefined)) {
280
- // helpful logging
281
- this.logger.debug('🚀 Attempting to complete with outputs:', outputs);
282
- return client.apiCall('functions.completeSuccess', {
283
- outputs: outputs !== null && outputs !== void 0 ? outputs : {},
284
- function_execution_id,
285
- });
286
- }
287
- if (error !== undefined) {
288
- this.logger.debug('🚀 Attempting to complete with error:', error);
289
- return client.apiCall('functions.completeError', {
290
- error,
291
- function_execution_id,
292
- });
293
- }
294
- return null;
295
- };
296
- }
297
- }
298
- exports.SlackFunction = SlackFunction;
299
- /* Event handling validation */
300
- function isFunctionExecutedEvent(args) {
301
- if (args.payload === undefined || args.payload === null) {
302
- return false;
303
- }
304
- return (args.payload.type === 'function_executed');
305
- }
306
- exports.isFunctionExecutedEvent = isFunctionExecutedEvent;
307
- function isFunctionInteractivityEvent(args) {
308
- const allowedInteractivityTypes = [
309
- 'block_actions', 'view_submission', 'view_closed', 'block_suggestion'
310
- ];
311
- if (args.body === undefined || args.body === null)
312
- return false;
313
- return (allowedInteractivityTypes.includes(args.body.type) &&
314
- ('function_data' in args.body));
315
- }
316
- exports.isFunctionInteractivityEvent = isFunctionInteractivityEvent;
317
- function passInteractivityConstraints(constraints, args) {
318
- const { payload, body } = args;
319
- if (!passConstraint('type', constraints, body))
320
- return false;
321
- if (!passConstraint('block_id', constraints, payload))
322
- return false;
323
- if (!passConstraint('action_id', constraints, payload))
324
- return false;
325
- if ('callback_id' in constraints) {
326
- if ('view' in body) {
327
- if (!passConstraint('callback_id', constraints, body.view))
328
- return false;
329
- }
330
- else {
331
- return false;
332
- }
333
- }
334
- return true;
335
- }
336
- function passConstraint(constraintKey, constraints,
337
- // eslint-disable-next-line
338
- payload) {
339
- let regExpMatches;
340
- let pass = true;
341
- // user provided constraint key, e.g. action_id
342
- if (constraintKey in constraints) {
343
- // event payload contains constraint key
344
- if (constraintKey in payload) {
345
- // eslint-disable-next-line
346
- // @ts-ignore - we ensure constraintKey exists in constraints above
347
- const constraintVal = constraints[constraintKey];
348
- if (typeof constraintVal === 'string') {
349
- if (constraintVal !== payload[constraintKey]) {
350
- pass = false;
351
- }
352
- }
353
- else {
354
- // treat constraintKey as regular expression and check payload for matches
355
- regExpMatches = payload[constraintKey].match(constraintVal);
356
- if (regExpMatches === null) {
357
- pass = false;
358
- }
359
- }
360
- }
361
- else {
362
- // user provided constraint, but payload doesn't contain key value
363
- pass = false;
364
- }
365
- }
366
- return pass;
367
- }
368
- exports.passConstraint = passConstraint;
369
- // all tests to run
370
- const validations = [hasCallbackId, hasMatchingManifestDefinition, hasHandler];
371
- /* Initialization validators */
372
- function validate(callbackId, handler) {
373
- validations.forEach((test) => {
374
- const res = test(callbackId, handler);
375
- if (!res.pass) {
376
- throw new errors_1.SlackFunctionInitializationError(res.msg);
377
- }
378
- });
379
- }
380
- exports.validate = validate;
381
- function errorIfInvalidConstraintKeys(constraints, validKeys, handler) {
382
- const invalidKeys = Object.keys(constraints).filter((key) => !validKeys.includes(key));
383
- if (invalidKeys.length > 0) {
384
- const msg = `⚠️ You supplied invalid constraints: ${invalidKeys} for handler: ${handler}`;
385
- throw new errors_1.SlackFunctionInitializationError(msg);
386
- }
387
- }
388
- exports.errorIfInvalidConstraintKeys = errorIfInvalidConstraintKeys;
389
- function hasCallbackId(callbackId, _) {
390
- const res = { pass: true, msg: '' };
391
- if (callbackId === undefined ||
392
- typeof callbackId !== 'string' ||
393
- callbackId === '') {
394
- res.pass = false;
395
- res.msg = 'SlackFunction expects a callback_id string as its first argument';
396
- }
397
- return res;
398
- }
399
- exports.hasCallbackId = hasCallbackId;
400
- function hasMatchingManifestDefinition(callbackId, _) {
401
- const res = { pass: true, msg: '' };
402
- const { matchFound, fnKeys } = findMatchingManifestDefinition(callbackId);
403
- if (!matchFound) {
404
- res.pass = false;
405
- res.msg = `Provided SlackFunction callback_id: "${callbackId}" does not have a matching manifest ` +
406
- 'definition. Please check your manifest file.\n' +
407
- `Definitions we were able to find: ${fnKeys}`;
408
- }
409
- return res;
410
- }
411
- exports.hasMatchingManifestDefinition = hasMatchingManifestDefinition;
412
- function findMatchingManifestDefinition(callbackId) {
413
- const result = { matchFound: false, fnKeys: [] };
414
- // call the hook to get the manifest
415
- const manifest = exports.getManifestDataUtil.getManifestData(process.cwd());
416
- // manifest file must exist in the project
417
- if (!('functions' in manifest)) {
418
- const msg = '⚠️ Could not find functions in your project manifest.';
419
- throw new errors_1.SlackFunctionInitializationError(msg);
420
- }
421
- try {
422
- // set the keys
423
- result.fnKeys = Object.keys(manifest.functions);
424
- result.matchFound = result.fnKeys.includes(callbackId);
425
- }
426
- catch (error) {
427
- throw new errors_1.SlackFunctionInitializationError('Something went wrong when trying to read your manifest function definitions');
428
- }
429
- return result;
430
- }
431
- exports.findMatchingManifestDefinition = findMatchingManifestDefinition;
432
- function hasHandler(_, handler) {
433
- const res = { pass: true, msg: '' };
434
- if (handler === undefined) {
435
- res.pass = false;
436
- res.msg = 'You must provide a SlackFunction handler';
437
- }
438
- return res;
439
- }
440
- exports.hasHandler = hasHandler;
441
- //# sourceMappingURL=SlackFunction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SlackFunction.js","sourceRoot":"","sources":["../src/SlackFunction.ts"],"names":[],"mappings":"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"}