slack.ts 0.0.4 → 0.0.5

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 (48) hide show
  1. package/README.md +2 -0
  2. package/dist/api/index.d.ts +9 -0
  3. package/dist/api/index.d.ts.map +1 -1
  4. package/dist/api/index.js +1 -0
  5. package/dist/api/interactive/block_actions.d.ts +4 -22
  6. package/dist/api/interactive/block_actions.d.ts.map +1 -1
  7. package/dist/api/interactive/common.d.ts +23 -0
  8. package/dist/api/interactive/common.d.ts.map +1 -0
  9. package/dist/api/interactive/common.js +1 -0
  10. package/dist/api/interactive/view_submission.d.ts +8 -0
  11. package/dist/api/interactive/view_submission.d.ts.map +1 -0
  12. package/dist/api/interactive/view_submission.js +1 -0
  13. package/dist/api/types/value.d.ts +6 -0
  14. package/dist/api/types/value.d.ts.map +1 -0
  15. package/dist/api/types/value.js +1 -0
  16. package/dist/api/types/view.d.ts +26 -0
  17. package/dist/api/types/view.d.ts.map +1 -0
  18. package/dist/api/types/view.js +1 -0
  19. package/dist/api/web/views.d.ts +17 -0
  20. package/dist/api/web/views.d.ts.map +1 -0
  21. package/dist/api/web/views.js +1 -0
  22. package/dist/client.d.ts +26 -11
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +34 -18
  25. package/dist/events/receivers/socket.js +1 -1
  26. package/dist/events/types/index.d.ts +4 -0
  27. package/dist/events/types/index.d.ts.map +1 -1
  28. package/dist/resources/channel.d.ts +6 -2
  29. package/dist/resources/channel.d.ts.map +1 -1
  30. package/dist/resources/channel.js +4 -22
  31. package/dist/resources/message.d.ts +3 -3
  32. package/dist/resources/message.d.ts.map +1 -1
  33. package/dist/resources/message.js +5 -23
  34. package/dist/resources/modal.d.ts +21 -0
  35. package/dist/resources/modal.d.ts.map +1 -0
  36. package/dist/resources/modal.js +54 -0
  37. package/dist/resources/submission.d.ts +11 -0
  38. package/dist/resources/submission.d.ts.map +1 -0
  39. package/dist/resources/submission.js +14 -0
  40. package/dist/utils/paginate.d.ts +10 -0
  41. package/dist/utils/paginate.d.ts.map +1 -0
  42. package/dist/utils/paginate.js +22 -0
  43. package/dist/utils/respond.d.ts +6 -1
  44. package/dist/utils/respond.d.ts.map +1 -1
  45. package/dist/utils/respond.js +8 -0
  46. package/dist/utils/typing.d.ts +2 -0
  47. package/dist/utils/typing.d.ts.map +1 -1
  48. package/package.json +1 -1
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  An opinionated Slack API library with full TypeScript support.
4
4
 
5
+ **NOTE**: This library is still in active development! Any version update (even patch, sorry) may introduce breaking changes! Use at your own risk!
6
+
5
7
  ## Usage
6
8
 
7
9
  You can install this package from npm with
@@ -1,9 +1,11 @@
1
+ import type { CursorPaginationResponse } from "./types/api.js";
1
2
  import type { AppsConnectionsOpenParams, AppsConnectionsOpenResponse } from "./web/apps.js";
2
3
  import type { AuthTestParams, AuthTestResponse } from "./web/auth.js";
3
4
  import type { ChatPostMessageParams, ChatPostMessageResponse } from "./web/chat.js";
4
5
  import type { ConversationsHistoryParams, ConversationsHistoryResponse, ConversationsInfoParams, ConversationsInfoResponse, ConversationsRepliesParams, ConversationsRepliesResponse } from "./web/conversations.js";
5
6
  import type { FilesCompleteUploadExternalParams, FilesCompleteUploadExternalResponse, FilesGetUploadURLExternalParams, FilesGetUploadURLExternalResponse } from "./web/files.js";
6
7
  import type { UsersInfoParams, UsersInfoResponse } from "./web/users.js";
8
+ import type { ViewsOpenParams, ViewsOpenResponse } from "./web/views.js";
7
9
  export interface SlackWebAPIMap {
8
10
  "apps.connections.open": {
9
11
  params: AppsConnectionsOpenParams;
@@ -41,8 +43,15 @@ export interface SlackWebAPIMap {
41
43
  params: UsersInfoParams;
42
44
  response: UsersInfoResponse;
43
45
  };
46
+ "views.open": {
47
+ params: ViewsOpenParams;
48
+ response: ViewsOpenResponse;
49
+ };
44
50
  }
45
51
  export type SlackAPIMethod = keyof SlackWebAPIMap;
52
+ export type SlackPaginatingAPIMethod = {
53
+ [K in SlackAPIMethod]: SlackWebAPIMap[K]["response"] extends CursorPaginationResponse ? K : never;
54
+ }[SlackAPIMethod];
46
55
  export type SlackAPIParams<Method extends SlackAPIMethod> = SlackWebAPIMap[Method]["params"] & {
47
56
  token?: string;
48
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EACX,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EACX,iCAAiC,EACjC,mCAAmC,EACnC,+BAA+B,EAC/B,iCAAiC,EACjC,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAErE,MAAM,WAAW,cAAc;IAC9B,uBAAuB,EAAE;QACxB,MAAM,EAAE,yBAAyB,CAAA;QACjC,QAAQ,EAAE,2BAA2B,CAAA;KACrC,CAAA;IACD,WAAW,EAAE;QACZ,MAAM,EAAE,cAAc,CAAA;QACtB,QAAQ,EAAE,gBAAgB,CAAA;KAC1B,CAAA;IACD,kBAAkB,EAAE;QACnB,MAAM,EAAE,qBAAqB,CAAA;QAC7B,QAAQ,EAAE,uBAAuB,CAAA;KACjC,CAAA;IACD,oBAAoB,EAAE;QACrB,MAAM,EAAE,uBAAuB,CAAA;QAC/B,QAAQ,EAAE,yBAAyB,CAAA;KACnC,CAAA;IACD,uBAAuB,EAAE;QACxB,MAAM,EAAE,0BAA0B,CAAA;QAClC,QAAQ,EAAE,4BAA4B,CAAA;KACtC,CAAA;IACD,uBAAuB,EAAE;QACxB,MAAM,EAAE,0BAA0B,CAAA;QAClC,QAAQ,EAAE,4BAA4B,CAAA;KACtC,CAAA;IACD,8BAA8B,EAAE;QAC/B,MAAM,EAAE,iCAAiC,CAAA;QACzC,QAAQ,EAAE,mCAAmC,CAAA;KAC7C,CAAA;IACD,4BAA4B,EAAE;QAC7B,MAAM,EAAE,+BAA+B,CAAA;QACvC,QAAQ,EAAE,iCAAiC,CAAA;KAC3C,CAAA;IACD,YAAY,EAAE;QACb,MAAM,EAAE,eAAe,CAAA;QACvB,QAAQ,EAAE,iBAAiB,CAAA;KAC3B,CAAA;CACD;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,cAAc,CAAA;AACjD,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AACD,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,cAAc,IACvD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5B,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;AAEtD,eAAO,MAAM,YAAY,EAAE,cAAc,EAIxC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EACX,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EACX,iCAAiC,EACjC,mCAAmC,EACnC,+BAA+B,EAC/B,iCAAiC,EACjC,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAErE,MAAM,WAAW,cAAc;IAC9B,uBAAuB,EAAE;QACxB,MAAM,EAAE,yBAAyB,CAAA;QACjC,QAAQ,EAAE,2BAA2B,CAAA;KACrC,CAAA;IACD,WAAW,EAAE;QACZ,MAAM,EAAE,cAAc,CAAA;QACtB,QAAQ,EAAE,gBAAgB,CAAA;KAC1B,CAAA;IACD,kBAAkB,EAAE;QACnB,MAAM,EAAE,qBAAqB,CAAA;QAC7B,QAAQ,EAAE,uBAAuB,CAAA;KACjC,CAAA;IACD,oBAAoB,EAAE;QACrB,MAAM,EAAE,uBAAuB,CAAA;QAC/B,QAAQ,EAAE,yBAAyB,CAAA;KACnC,CAAA;IACD,uBAAuB,EAAE;QACxB,MAAM,EAAE,0BAA0B,CAAA;QAClC,QAAQ,EAAE,4BAA4B,CAAA;KACtC,CAAA;IACD,uBAAuB,EAAE;QACxB,MAAM,EAAE,0BAA0B,CAAA;QAClC,QAAQ,EAAE,4BAA4B,CAAA;KACtC,CAAA;IACD,8BAA8B,EAAE;QAC/B,MAAM,EAAE,iCAAiC,CAAA;QACzC,QAAQ,EAAE,mCAAmC,CAAA;KAC7C,CAAA;IACD,4BAA4B,EAAE;QAC7B,MAAM,EAAE,+BAA+B,CAAA;QACvC,QAAQ,EAAE,iCAAiC,CAAA;KAC3C,CAAA;IACD,YAAY,EAAE;QACb,MAAM,EAAE,eAAe,CAAA;QACvB,QAAQ,EAAE,iBAAiB,CAAA;KAC3B,CAAA;IACD,YAAY,EAAE;QACb,MAAM,EAAE,eAAe,CAAA;QACvB,QAAQ,EAAE,iBAAiB,CAAA;KAC3B,CAAA;CACD;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,cAAc,CAAA;AACjD,MAAM,MAAM,wBAAwB,GAAG;KACrC,CAAC,IAAI,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,wBAAwB,GAAG,CAAC,GAAG,KAAK;CACjG,CAAC,cAAc,CAAC,CAAA;AACjB,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AACD,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,cAAc,IACvD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5B,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;AAEtD,eAAO,MAAM,YAAY,EAAE,cAAc,EAKxC,CAAA"}
package/dist/api/index.js CHANGED
@@ -2,4 +2,5 @@ export const POST_METHODS = [
2
2
  'apps.connections.open',
3
3
  'chat.postMessage',
4
4
  'files.completeUploadExternal',
5
+ 'views.open',
5
6
  ];
@@ -1,35 +1,17 @@
1
1
  import type { PlainTextElement } from "@slack/types";
2
2
  import type { AnyMessage } from "../types/message.js";
3
- export interface BlockActions {
3
+ import type { InteractionCommon } from "./common.js";
4
+ import type { StateValue } from "../types/value.js";
5
+ export interface BlockActions extends InteractionCommon {
4
6
  type: "block_actions";
5
- user: {
6
- id: string;
7
- username: string;
8
- name: string;
9
- team_id: string;
10
- };
11
- api_app_id: string;
12
- token: string;
13
7
  container: BlockActionContainer;
14
- trigger_id: string;
15
- team: {
16
- id: string;
17
- domain: string;
18
- enterprise_id?: string;
19
- enterprise_name?: string;
20
- };
21
- enterprise?: {
22
- id: string;
23
- name: string;
24
- };
25
- is_enterprise_install?: boolean;
26
8
  channel?: {
27
9
  id: string;
28
10
  name: string;
29
11
  };
30
12
  message?: AnyMessage;
31
13
  state?: {
32
- values: Record<string, Record<string, unknown>>;
14
+ values: Record<string, Record<string, StateValue>>;
33
15
  };
34
16
  response_url?: string;
35
17
  actions: BlockAction[];
@@ -1 +1 @@
1
- {"version":3,"file":"block_actions.d.ts","sourceRoot":"","sources":["../../../src/api/interactive/block_actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,eAAe,CAAA;IACrB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACrE,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,oBAAoB,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtF,UAAU,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAA;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,WAAW,EAAE,CAAA;CACtB;AAED,UAAU,0BAA0B;IACnC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;CACtB;AAED,UAAU,aAAa;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CACf;AAED,UAAU,gBAAgB;IACzB,IAAI,EAAE,SAAS,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;CACrB;AAED,KAAK,oBAAoB,GAAG,0BAA0B,GAAG,aAAa,GAAG,gBAAgB,CAAA;AAEzF,UAAU,YAAY;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IACjD,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;CAC5B;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACzD,IAAI,EAAE,kBAAkB,CAAA;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,oBAAoB,CAAA;AAE7D,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;AAElD,MAAM,MAAM,cAAc,GAAG;KAC3B,CAAC,IAAI,gBAAgB,GAAG,WAAW,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE;CAClD,CAAA"}
1
+ {"version":3,"file":"block_actions.d.ts","sourceRoot":"","sources":["../../../src/api/interactive/block_actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,WAAW,YAAa,SAAQ,iBAAiB;IACtD,IAAI,EAAE,eAAe,CAAA;IACrB,SAAS,EAAE,oBAAoB,CAAA;IAC/B,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;KAAE,CAAA;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,WAAW,EAAE,CAAA;CACtB;AAED,UAAU,0BAA0B;IACnC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;CACtB;AAED,UAAU,aAAa;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CACf;AAED,UAAU,gBAAgB;IACzB,IAAI,EAAE,SAAS,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;CACrB;AAED,KAAK,oBAAoB,GAAG,0BAA0B,GAAG,aAAa,GAAG,gBAAgB,CAAA;AAEzF,UAAU,YAAY;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IACjD,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;CAC5B;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACzD,IAAI,EAAE,kBAAkB,CAAA;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,oBAAoB,CAAA;AAE7D,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;AAElD,MAAM,MAAM,cAAc,GAAG;KAC3B,CAAC,IAAI,gBAAgB,GAAG,WAAW,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE;CAClD,CAAA"}
@@ -0,0 +1,23 @@
1
+ export interface InteractionCommon {
2
+ team: {
3
+ id: string;
4
+ domain: string;
5
+ enterprise_id?: string;
6
+ enterprise_name?: string;
7
+ };
8
+ user: {
9
+ id: string;
10
+ username: string;
11
+ name: string;
12
+ team_id: string;
13
+ };
14
+ api_app_id: string;
15
+ token: string;
16
+ trigger_id: string;
17
+ is_enterprise_install?: boolean;
18
+ enterprise?: {
19
+ id: string;
20
+ name: string;
21
+ };
22
+ }
23
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/api/interactive/common.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtF,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACrE,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,UAAU,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CACzC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { ModalView } from "../types/view.js";
2
+ import type { InteractionCommon } from "./common.js";
3
+ export interface ViewSubmission extends InteractionCommon {
4
+ type: "view_submission";
5
+ view: ModalView;
6
+ response_urls: string[];
7
+ }
8
+ //# sourceMappingURL=view_submission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view_submission.d.ts","sourceRoot":"","sources":["../../../src/api/interactive/view_submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEjD,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACxD,IAAI,EAAE,iBAAiB,CAAA;IACvB,IAAI,EAAE,SAAS,CAAA;IACf,aAAa,EAAE,MAAM,EAAE,CAAA;CACvB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export interface PlainTextInputValue {
2
+ type: 'plain_text_input';
3
+ value: string;
4
+ }
5
+ export type StateValue = PlainTextInputValue;
6
+ //# sourceMappingURL=value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../src/api/types/value.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,kBAAkB,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import type { KnownBlock, PlainTextElement } from "@slack/types";
2
+ import type { StateValue } from "./value.js";
3
+ export interface ModalView {
4
+ type: "modal";
5
+ id: string;
6
+ team_id: string;
7
+ title: PlainTextElement;
8
+ blocks: KnownBlock[];
9
+ close: PlainTextElement | null;
10
+ submit: PlainTextElement | null;
11
+ private_metadata: string;
12
+ callback_id: string;
13
+ state: {
14
+ values: Record<string, Record<string, StateValue>>;
15
+ };
16
+ hash: string;
17
+ clear_on_close: boolean;
18
+ notify_on_close: boolean;
19
+ external_id: string;
20
+ previous_view_id: string | null;
21
+ root_view_id: string | null;
22
+ app_id: string;
23
+ app_installed_team_id: string;
24
+ bot_id: string;
25
+ }
26
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/api/types/view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,gBAAgB,CAAA;IACvB,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC9B,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;KAAE,CAAA;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,qBAAqB,EAAE,MAAM,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;CACd"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ import type { DistributivePick, NotNull } from "../../utils/typing.js";
2
+ import type { ModalView } from "../types/view.js";
3
+ export type ViewsOpenParams = {
4
+ view: Partial<{
5
+ [K in keyof ModalView]: NotNull<ModalView[K]>;
6
+ }> & DistributivePick<ModalView, "type" | "title" | "blocks">;
7
+ } & ({
8
+ trigger_id: string;
9
+ interactivity_pointer?: never;
10
+ } | {
11
+ trigger_id?: never;
12
+ interactivity_pointer: string;
13
+ });
14
+ export interface ViewsOpenResponse {
15
+ view: ModalView;
16
+ }
17
+ //# sourceMappingURL=views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../../src/api/web/views.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC,GAC/D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAA;CACzD,GAAG,CACD;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,KAAK,CAAA;CAAE,GACrD;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,qBAAqB,EAAE,MAAM,CAAA;CAAE,CACvD,CAAA;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,SAAS,CAAA;CACf"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/client.d.ts CHANGED
@@ -1,13 +1,14 @@
1
- import { ChannelRef } from "./resources/channel.js";
1
+ import EventEmitter from "events";
2
2
  import { type SlackAPIMethod, type SlackAPIParams, type SlackAPIResponse } from "./api/index.js";
3
+ import type { BlockAction, BlockActionMap, BlockActions, BlockActionTypes } from "./api/interactive/block_actions.js";
3
4
  import { type SocketEventsReceiverOptions } from "./events/receivers/socket.js";
4
- import type { DistributiveOmit } from "./utils/typing.js";
5
5
  import type { AllEvents, AllEventTypes, EventWrapper, SlackEventMap } from "./events/types/index.js";
6
- import { type MessageInstance } from "./resources/message.js";
7
6
  import type { MessageEvent } from "./events/types/events.js";
8
- import type { BlockAction, BlockActionMap, BlockActions, BlockActionTypes } from "./api/interactive/block_actions.js";
9
- import EventEmitter from "events";
10
7
  import { Action, type ActionInstance } from "./resources/action.js";
8
+ import { ChannelRef } from "./resources/channel.js";
9
+ import { type MessageInstance } from "./resources/message.js";
10
+ import type { DistributiveOmit } from "./utils/typing.js";
11
+ import type { ViewSubmission } from "./api/interactive/view_submission.js";
11
12
  type ReceiverOptions = ({
12
13
  type: "socket";
13
14
  } & DistributiveOmit<SocketEventsReceiverOptions, "client">) | {
@@ -36,12 +37,14 @@ export declare class App extends EventEmitter<AppEventMap> {
36
37
  /**
37
38
  * Registers a callback for `message` events.
38
39
  *
40
+ * @deprecated Use `app.on('message', callback)` or `app.on('event:message', callback)`
39
41
  * @param callback Function to execute when a new message is received
40
42
  */
41
43
  message(callback: MessageCallback): void;
42
44
  /**
43
45
  * Registers a callback for a given type of event.
44
46
  *
47
+ * @deprecated Use `app.on('event:type', callback)` instead
45
48
  * @param type Type of event to register
46
49
  * @param callback Function to execute when the event is received
47
50
  */
@@ -49,9 +52,8 @@ export declare class App extends EventEmitter<AppEventMap> {
49
52
  /**
50
53
  * Registers a callback for a given type of block actions.
51
54
  *
52
- * For more powerful callbacks, use `app.on('action:button', ...)`, `app.on('action.action_id',
53
- * ...)`, or `app.on('action:button.action_id', ...)` instead.
54
- *
55
+ * @deprecated Use `app.on('action:type', ...)`, `app.on('action.action_id', ...)`, or
56
+ * `app.on('action:type.action_id', ...)` instead
55
57
  * @param type Type of event to register
56
58
  * @param callback Function to execute when the event is received
57
59
  */
@@ -72,12 +74,11 @@ export declare class App extends EventEmitter<AppEventMap> {
72
74
  /**
73
75
  * Makes a Slack Web API request.
74
76
  *
75
- * @param endpoint The Slack Web API method to call
77
+ * @param method The Slack Web API method to call
76
78
  * @param params The parameters for the method
77
- * @param [method='GET'] The HTTP method for the request. Default is `'GET'`
78
79
  * @returns The response from the API call
79
80
  */
80
- request<Method extends SlackAPIMethod>(endpoint: Method, params: SlackAPIParams<Method>, method?: "GET" | "POST"): Promise<SlackAPIResponse<Method> & {
81
+ request<Method extends SlackAPIMethod>(method: Method, params: SlackAPIParams<Method>): Promise<SlackAPIResponse<Method> & {
81
82
  ok: true;
82
83
  }>;
83
84
  }
@@ -91,6 +92,12 @@ type AppEventMap = {
91
92
  action: [
92
93
  ActionInstance
93
94
  ];
95
+ submit: [
96
+ ViewSubmission
97
+ ];
98
+ message: [
99
+ MessageInstance
100
+ ];
94
101
  } & {
95
102
  [K in AllEventTypes as `event:${K}`]: [
96
103
  {
@@ -110,6 +117,14 @@ type AppEventMap = {
110
117
  [K in BlockActionTypes as `action:${K}.${string}`]: [
111
118
  ActionInstance<BlockActionMap[K]>
112
119
  ];
120
+ } & {
121
+ [K in `submit.${string}`]: [
122
+ ViewSubmission
123
+ ];
124
+ } & {
125
+ [K in `message#${string}`]: [
126
+ MessageInstance
127
+ ];
113
128
  };
114
129
  export {};
115
130
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -1,12 +1,12 @@
1
- import { sleep } from "./utils/index.js";
2
- import { ChannelRef } from "./resources/channel.js";
3
- import { SlackWebAPIError, SlackWebAPIPlatformError } from "./error.js";
1
+ import EventEmitter from "events";
4
2
  import { POST_METHODS, } from "./api/index.js";
5
- import { SocketEventsReceiver } from "./events/receivers/socket.js";
3
+ import { SlackWebAPIError, SlackWebAPIPlatformError } from "./error.js";
6
4
  import { DummyReceiver } from "./events/receivers/dummy.js";
7
- import { Message } from "./resources/message.js";
8
- import EventEmitter from "events";
5
+ import { SocketEventsReceiver } from "./events/receivers/socket.js";
9
6
  import { Action } from "./resources/action.js";
7
+ import { ChannelRef } from "./resources/channel.js";
8
+ import { Message } from "./resources/message.js";
9
+ import { sleep } from "./utils/index.js";
10
10
  export class App extends EventEmitter {
11
11
  #token;
12
12
  #receiver;
@@ -23,12 +23,14 @@ export class App extends EventEmitter {
23
23
  }
24
24
  this.#receiver.on("event", this.#onEvent.bind(this));
25
25
  this.#receiver.on("block_actions", this.#onBlockActions.bind(this));
26
+ this.#receiver.on("view_submission", this.#onViewSubmission.bind(this));
27
+ this.on("event:message", this.#onMessage.bind(this));
26
28
  }
27
- async #onEvent(event) {
29
+ #onEvent(event) {
28
30
  this.emit("event", event);
29
31
  this.emit(`event:${event.event.type}`, { payload: event.event, event: event });
30
32
  }
31
- async #onBlockActions(event) {
33
+ #onBlockActions(event) {
32
34
  this.emit("actions", event);
33
35
  for (const action of event.actions) {
34
36
  const obj = new Action(this, action, event);
@@ -37,13 +39,23 @@ export class App extends EventEmitter {
37
39
  this.emit(`action:${action.type}.${action.action_id}`, obj);
38
40
  }
39
41
  }
42
+ #onViewSubmission(event) {
43
+ this.emit("submit", event);
44
+ this.emit(`submit.${event.view.callback_id}`, event);
45
+ }
40
46
  async #onCallbackError(error) {
41
47
  console.error("Error occurred executing callback");
42
48
  console.error(error);
43
49
  }
50
+ #onMessage({ payload }) {
51
+ const message = new Message(this, payload.channel, payload.ts, payload);
52
+ this.emit("message", message);
53
+ this.emit(`message#${payload.channel}`, message);
54
+ }
44
55
  /**
45
56
  * Registers a callback for `message` events.
46
57
  *
58
+ * @deprecated Use `app.on('message', callback)` or `app.on('event:message', callback)`
47
59
  * @param callback Function to execute when a new message is received
48
60
  */
49
61
  message(callback) {
@@ -58,6 +70,7 @@ export class App extends EventEmitter {
58
70
  /**
59
71
  * Registers a callback for a given type of event.
60
72
  *
73
+ * @deprecated Use `app.on('event:type', callback)` instead
61
74
  * @param type Type of event to register
62
75
  * @param callback Function to execute when the event is received
63
76
  */
@@ -69,9 +82,8 @@ export class App extends EventEmitter {
69
82
  /**
70
83
  * Registers a callback for a given type of block actions.
71
84
  *
72
- * For more powerful callbacks, use `app.on('action:button', ...)`, `app.on('action.action_id',
73
- * ...)`, or `app.on('action:button.action_id', ...)` instead.
74
- *
85
+ * @deprecated Use `app.on('action:type', ...)`, `app.on('action.action_id', ...)`, or
86
+ * `app.on('action:type.action_id', ...)` instead
75
87
  * @param type Type of event to register
76
88
  * @param callback Function to execute when the event is received
77
89
  */
@@ -100,15 +112,15 @@ export class App extends EventEmitter {
100
112
  /**
101
113
  * Makes a Slack Web API request.
102
114
  *
103
- * @param endpoint The Slack Web API method to call
115
+ * @param method The Slack Web API method to call
104
116
  * @param params The parameters for the method
105
- * @param [method='GET'] The HTTP method for the request. Default is `'GET'`
106
117
  * @returns The response from the API call
107
118
  */
108
- async request(endpoint, params, method = POST_METHODS.includes(endpoint) ? "POST" : "GET") {
109
- const body = method !== "GET" ? JSON.stringify(params) : undefined;
110
- const url = new URL(`https://slack.com/api/${endpoint}`);
111
- if (method === "GET" && params) {
119
+ async request(method, params) {
120
+ const httpMethod = POST_METHODS.includes(method) ? "POST" : "GET";
121
+ const body = httpMethod !== "GET" ? JSON.stringify(params) : undefined;
122
+ const url = new URL(`https://slack.com/api/${method}`);
123
+ if (httpMethod === "GET" && params) {
112
124
  for (const [key, value] of Object.entries(params)) {
113
125
  if (value instanceof Array) {
114
126
  for (const item of value) {
@@ -127,7 +139,11 @@ export class App extends EventEmitter {
127
139
  if (params.token || this.#token) {
128
140
  headers.set("Authorization", `Bearer ${params.token || this.#token}`);
129
141
  }
130
- const res = await request(url.toString(), { method, body, headers });
142
+ const res = await request(url.toString(), {
143
+ method: httpMethod,
144
+ body,
145
+ headers,
146
+ });
131
147
  if (!res.ok) {
132
148
  throw new SlackWebAPIPlatformError(url.toString(), res, res.error);
133
149
  }
@@ -19,7 +19,7 @@ export class SocketEventsReceiver extends EventEmitter {
19
19
  }
20
20
  async _connect() {
21
21
  const { url } = await this.client.request('apps.connections.open', { token: this.#appToken });
22
- this.#ws = new WebSocket(url + '&debug_reconnects=true');
22
+ this.#ws = new WebSocket(url);
23
23
  this.#ws.addEventListener('open', this.#onOpen.bind(this));
24
24
  this.#ws.addEventListener('message', this.#onMessage.bind(this));
25
25
  this.#ws.addEventListener('close', this.#onClose.bind(this));
@@ -1,6 +1,7 @@
1
1
  import type EventEmitter from "events";
2
2
  import type { AppMentionEvent, MessageEvent } from "./events.js";
3
3
  import type { BlockActions } from "../../api/interactive/block_actions.js";
4
+ import type { ViewSubmission } from "../../api/interactive/view_submission.js";
4
5
  export interface EventsReceiver extends EventEmitter<ReceiverEventMap> {
5
6
  start(): unknown;
6
7
  }
@@ -31,6 +32,9 @@ export type ReceiverEventMap = {
31
32
  block_actions: [
32
33
  BlockActions
33
34
  ];
35
+ view_submission: [
36
+ ViewSubmission
37
+ ];
34
38
  };
35
39
  export type AllEvents = AppMentionEvent | MessageEvent;
36
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAA;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAEvE,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IACrE,KAAK,IAAI,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC5D,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,CAAC,CAAA;IACR,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG;KAC1B,CAAC,IAAI,aAAa,GAAG,SAAS,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE;CAC7C,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;IAChC,aAAa,EAAE,CAAC,YAAY,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAA;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AAE3E,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IACrE,KAAK,IAAI,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC5D,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,CAAC,CAAA;IACR,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG;KAC1B,CAAC,IAAI,aAAa,GAAG,SAAS,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE;CAC7C,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;IAChC,aAAa,EAAE,CAAC,YAAY,CAAC,CAAA;IAC7B,eAAe,EAAE,CAAC,cAAc,CAAC,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,YAAY,CAAA"}
@@ -9,10 +9,14 @@ import { UserRef } from "./user.js";
9
9
  interface FetchMessagesParams extends Omit<TimestampPaginationParams, "limit"> {
10
10
  /**
11
11
  * How many messages to fetch in each API call. This will not affect the number of returned
12
- * messages. Defaults to 100
12
+ * messages.
13
13
  */
14
14
  batch?: number;
15
- /** How many messages to return in total. Defaults to unlimited */
15
+ /**
16
+ * How many messages to return in total.
17
+ *
18
+ * @default Infinity
19
+ */
16
20
  limit?: number;
17
21
  }
18
22
  declare class ChannelMixin {
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/resources/channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAGN,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAW,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,UAAU,mBAAoB,SAAQ,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC;IAC7E;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,cAAM,YAAY;;IAIhB,SAAS,CAAC,MAAM,EAAE,GAAG;gBAAX,MAAM,EAAE,GAAG,EACrB,EAAE,EAAE,MAAM;IAKX,wBAAwB;IACxB,IAAI,EAAE,WAEL;IAED;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAE1F;;;;;OAKG;IACG,IAAI,CACT,OAAO,EAAE,gBAAgB,CAAC,uBAAuB,EAAE,SAAS,CAAC,GAAG,MAAM,GACpE,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAiB1C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM;IAIlB;;;;;;;OAOG;IACI,QAAQ,CAAC,MAAM,GAAE,mBAAwB;CAqBhD;AAED,qBAAa,UAAW,SAAQ,YAAa,YAAW,WAAW,CAAC,eAAe,CAAC;;IACnF,IAAI,CAAC,QAAQ,GAAG,eAAe,EAAE,QAAQ,GAAG,KAAK,EAChD,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/F,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GACjF,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAQnC;AAED,qBAAa,OAAQ,SAAQ,YAAY;;gBAG5B,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;IAMvD,sFAAsF;IACtF,IAAI,OAAO,wBAEV;CACD;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/resources/channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAGN,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAW,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,UAAU,mBAAoB,SAAQ,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC;IAC7E;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,cAAM,YAAY;;IAIhB,SAAS,CAAC,MAAM,EAAE,GAAG;gBAAX,MAAM,EAAE,GAAG,EACrB,EAAE,EAAE,MAAM;IAKX,wBAAwB;IACxB,IAAI,EAAE,WAEL;IAED;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAE1F;;;;;OAKG;IACG,IAAI,CACT,OAAO,EAAE,gBAAgB,CAAC,uBAAuB,EAAE,SAAS,CAAC,GAAG,MAAM,GACpE,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAiB1C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM;IAIlB;;;;;;;OAOG;IACI,QAAQ,CAAC,MAAM,GAAE,mBAAwB;CAOhD;AAED,qBAAa,UAAW,SAAQ,YAAa,YAAW,WAAW,CAAC,eAAe,CAAC;;IACnF,IAAI,CAAC,QAAQ,GAAG,eAAe,EAAE,QAAQ,GAAG,KAAK,EAChD,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/F,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GACjF,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAQnC;AAED,qBAAa,OAAQ,SAAQ,YAAY;;gBAG5B,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;IAMvD,sFAAsF;IACtF,IAAI,OAAO,wBAEV;CACD;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { makeProxy } from "../utils/index.js";
2
2
  import { sendMessage, } from "../utils/messaging.js";
3
+ import { paginate } from "../utils/paginate.js";
3
4
  import { Message, MessageRef } from "./message.js";
4
5
  import { UserRef } from "./user.js";
5
6
  class ChannelMixin {
@@ -41,28 +42,9 @@ class ChannelMixin {
41
42
  * @returns An async iterator of messages, from newest to oldest
42
43
  */
43
44
  async *messages(params = {}) {
44
- let remaining = params.limit ?? Infinity;
45
- let cursor;
46
- if (remaining <= 0)
47
- return;
48
- while (true) {
49
- const batch = await this.client.request("conversations.history", {
50
- channel: this.#id,
51
- latest: params.latest,
52
- oldest: params.oldest,
53
- inclusive: params.inclusive,
54
- limit: Math.min(remaining, params.batch ?? 100),
55
- cursor,
56
- });
57
- for (const message of batch.messages) {
58
- yield new Message(this.client, this.#id, message.ts, message);
59
- if (--remaining <= 0)
60
- return;
61
- }
62
- cursor = batch.response_metadata?.next_cursor;
63
- if (!batch.has_more || !cursor)
64
- return;
65
- }
45
+ yield* paginate(this.client, "conversations.history", { channel: this.#id, ...params }, (r) => r.messages
46
+ .values()
47
+ .map((m) => new Message(this.client, this.#id, m.ts, m)));
66
48
  }
67
49
  }
68
50
  export class ChannelRef extends ChannelMixin {
@@ -11,8 +11,6 @@ interface FetchRepliesParams extends Omit<TimestampPaginationParams, "limit"> {
11
11
  /**
12
12
  * How many replies to fetch in each API call. This will not affect the number of returned
13
13
  * messages.
14
- *
15
- * @default 100
16
14
  */
17
15
  batch?: number;
18
16
  /**
@@ -135,7 +133,9 @@ type ExtractWaitActionType<Specifier extends string> = {
135
133
  type ExtractTypeAndActionID<T extends string> = T extends `${infer Type extends BlockActionTypes}.${infer ActionID}` ? {
136
134
  type: Type;
137
135
  action_id: ActionID;
138
- } : never;
136
+ } : {
137
+ action_id: T;
138
+ };
139
139
  type ExtractString<T> = T extends string ? T : never;
140
140
  export {};
141
141
  //# sourceMappingURL=message.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/resources/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/resources/message.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { SlackError, SlackTimeoutError } from "../error.js";
2
2
  import { makeProxy } from "../utils/index.js";
3
3
  import { sendMessage, } from "../utils/messaging.js";
4
+ import { paginate } from "../utils/paginate.js";
4
5
  import { ChannelRef } from "./channel.js";
5
6
  import { UserRef } from "./user.js";
6
7
  class MessageMixin {
@@ -54,29 +55,10 @@ class MessageMixin {
54
55
  * @returns An async iterator of messages, from oldest to newest
55
56
  */
56
57
  async *replies(params = {}) {
57
- let remaining = params.limit ?? Infinity;
58
- let cursor;
59
- while (true) {
60
- const batch = await this.client.request("conversations.replies", {
61
- channel: this.#channel,
62
- ts: this.#ts,
63
- latest: params.latest,
64
- oldest: params.oldest,
65
- inclusive: params.inclusive,
66
- limit: params.batch ?? 100,
67
- cursor,
68
- });
69
- for (const message of batch.messages) {
70
- if (!(params.root ?? true) && message.ts === this.#ts)
71
- continue;
72
- yield new Message(this.client, this.#channel, message.ts, message);
73
- if (--remaining <= 0)
74
- return;
75
- }
76
- cursor = batch.response_metadata?.next_cursor;
77
- if (!batch.has_more || !cursor)
78
- return;
79
- }
58
+ yield* paginate(this.client, "conversations.replies", { channel: this.#channel, ts: this.#ts, ...params }, (r) => r.messages
59
+ .values()
60
+ .filter((m) => m.ts !== this.#ts || (params.root ?? true))
61
+ .map((m) => new Message(this.client, this.#channel, m.ts, m)));
80
62
  }
81
63
  }
82
64
  export class MessageRef extends MessageMixin {
@@ -0,0 +1,21 @@
1
+ import type { ModalView } from "../api/types/view.js";
2
+ import type { App } from "../client.js";
3
+ import { type SubmissionInstance } from "./submission.js";
4
+ export declare class Modal {
5
+ #private;
6
+ protected client: App;
7
+ constructor(client: App, data: ModalView);
8
+ get raw(): ModalView;
9
+ get wait(): ModalWait;
10
+ }
11
+ export type ModalInstance = Modal & ModalView;
12
+ declare class ModalWait {
13
+ private client;
14
+ private modal;
15
+ private _timeout;
16
+ constructor(client: App, modal: ModalInstance);
17
+ timeout(timeout: number): this;
18
+ submit(): Promise<SubmissionInstance>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/resources/modal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAGpC,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAElE,qBAAa,KAAK;;IAIhB,SAAS,CAAC,MAAM,EAAE,GAAG;gBAAX,MAAM,EAAE,GAAG,EACrB,IAAI,EAAE,SAAS;IAMhB,IAAI,GAAG,cAEN;IAED,IAAI,IAAI,cAEP;CACD;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,CAAA;AAE7C,cAAM,SAAS;IAIb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IAJd,OAAO,CAAC,QAAQ,CAAgB;gBAGvB,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,aAAa;IAG7B,OAAO,CAAC,OAAO,EAAE,MAAM;IAKjB,MAAM;CA0BZ"}
@@ -0,0 +1,54 @@
1
+ import { SlackTimeoutError } from "../error.js";
2
+ import { makeProxy } from "../utils/index.js";
3
+ import { Submission } from "./submission.js";
4
+ export class Modal {
5
+ client;
6
+ #data;
7
+ constructor(client, data) {
8
+ this.client = client;
9
+ this.#data = data;
10
+ return makeProxy(this, () => this.#data);
11
+ }
12
+ get raw() {
13
+ return this.#data;
14
+ }
15
+ get wait() {
16
+ return new ModalWait(this.client, makeProxy(this, () => this.#data));
17
+ }
18
+ }
19
+ class ModalWait {
20
+ client;
21
+ modal;
22
+ _timeout = 60000;
23
+ constructor(client, modal) {
24
+ this.client = client;
25
+ this.modal = modal;
26
+ }
27
+ timeout(timeout) {
28
+ this._timeout = timeout;
29
+ return this;
30
+ }
31
+ async submit() {
32
+ return new Promise((resolve, reject) => {
33
+ const cleanup = () => {
34
+ this.client.off(key, callback);
35
+ if (timeout)
36
+ clearTimeout(timeout);
37
+ };
38
+ const callback = (event) => {
39
+ if (event.view.id === this.modal.id) {
40
+ cleanup();
41
+ resolve(new Submission(this.client, event));
42
+ }
43
+ };
44
+ const key = `submit.${this.modal.callback_id}`;
45
+ this.client.on(key, callback);
46
+ const timeout = this._timeout > 0
47
+ ? setTimeout(() => {
48
+ cleanup();
49
+ reject(new SlackTimeoutError(`Timed out waiting for action (${this._timeout} ms)`));
50
+ }, this._timeout)
51
+ : null;
52
+ });
53
+ }
54
+ }
@@ -0,0 +1,11 @@
1
+ import type { ViewSubmission } from "../api/interactive/view_submission.js";
2
+ import type { App } from "../client.js";
3
+ import { type Responder } from "../utils/respond.js";
4
+ export declare class Submission {
5
+ #private;
6
+ protected client: App;
7
+ constructor(client: App, data: ViewSubmission);
8
+ get respond(): Responder;
9
+ }
10
+ export type SubmissionInstance = Submission & ViewSubmission;
11
+ //# sourceMappingURL=submission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission.d.ts","sourceRoot":"","sources":["../../src/resources/submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEhE,qBAAa,UAAU;;IAIrB,SAAS,CAAC,MAAM,EAAE,GAAG;gBAAX,MAAM,EAAE,GAAG,EACrB,IAAI,EAAE,cAAc;IAMrB,IAAI,OAAO,IAAI,SAAS,CAEvB;CACD;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,cAAc,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { makeProxy } from "../utils/index.js";
2
+ import { ResponderImpl } from "../utils/respond.js";
3
+ export class Submission {
4
+ client;
5
+ #data;
6
+ constructor(client, data) {
7
+ this.client = client;
8
+ this.#data = data;
9
+ return makeProxy(this, () => this.#data);
10
+ }
11
+ get respond() {
12
+ return new ResponderImpl(this.client, this.#data.response_urls[0], this.#data.trigger_id);
13
+ }
14
+ }
@@ -0,0 +1,10 @@
1
+ import type { SlackAPIParams, SlackAPIResponse, SlackPaginatingAPIMethod } from "../api/index.js";
2
+ import type { App } from "../client.js";
3
+ import type { DistributiveOmit } from "./typing.js";
4
+ export declare function paginate<Method extends SlackPaginatingAPIMethod, T>(client: App, method: Method, params: DistributiveOmit<SlackAPIParams<Method>, "limit" | "cursor"> & {
5
+ limit?: number;
6
+ batch?: number;
7
+ }, converter: (response: SlackAPIResponse<Method> & {
8
+ ok: true;
9
+ }) => Iterable<T> | AsyncIterable<T>): AsyncGenerator<Awaited<T>, void, unknown>;
10
+ //# sourceMappingURL=paginate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginate.d.ts","sourceRoot":"","sources":["../../src/utils/paginate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAA;AACxF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,wBAAuB,QAAQ,CAAC,MAAM,SAAS,wBAAwB,EAAE,CAAC,EACzE,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG;IACtE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,EACD,SAAS,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,6CAmBhG"}
@@ -0,0 +1,22 @@
1
+ export async function* paginate(client, method, params, converter) {
2
+ let remaining = params.limit ?? Infinity;
3
+ let cursor;
4
+ if (remaining <= 0)
5
+ return;
6
+ while (true) {
7
+ const batch = await client.request(method, {
8
+ ...params,
9
+ cursor,
10
+ limit: params.batch ?? undefined,
11
+ batch: undefined,
12
+ });
13
+ for await (const item of converter(batch)) {
14
+ yield item;
15
+ if (--remaining <= 0)
16
+ return;
17
+ }
18
+ cursor = batch.response_metadata?.next_cursor;
19
+ if (!batch.has_more || !cursor)
20
+ return;
21
+ }
22
+ }
@@ -1,5 +1,7 @@
1
1
  import type { KnownBlock } from "@slack/types";
2
2
  import type { App } from "../client.js";
3
+ import type { ViewsOpenParams } from "../api/web/views.js";
4
+ import { type ModalInstance } from "../resources/modal.js";
3
5
  export declare class ResponderImpl implements Responder {
4
6
  private client;
5
7
  private response_url;
@@ -8,8 +10,11 @@ export declare class ResponderImpl implements Responder {
8
10
  message(message: string | MessageResponseParams): Promise<void>;
9
11
  edit(message: string | MessageResponseParams): Promise<void>;
10
12
  delete(): Promise<void>;
13
+ modal(view: ViewsOpenParams["view"]): Promise<ModalInstance>;
11
14
  }
12
- export type Responder<HasResponseURL extends boolean = true> = {} & (HasResponseURL extends true ? {
15
+ export type Responder<HasResponseURL extends boolean = true> = {
16
+ modal(view: ViewsOpenParams["view"]): Promise<ModalInstance>;
17
+ } & (HasResponseURL extends true ? {
13
18
  message(message: string | MessageResponseParams): Promise<void>;
14
19
  edit(message: string | MessageResponseParams): Promise<void>;
15
20
  delete(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../src/utils/respond.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEpC,qBAAa,aAAc,YAAW,SAAS;IAE7C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,UAAU;gBAFV,MAAM,EAAE,GAAG,EACX,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,UAAU,EAAE,MAAM;IAGrB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IAuB/C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IAuB5C,MAAM;CAaZ;AAED,MAAM,MAAM,SAAS,CAAC,cAAc,SAAS,OAAO,GAAG,IAAI,IAAI,EAAE,GAAG,CAAC,cAAc,SAAS,IAAI,GAC7F;IACA,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,GACA,EAAE,CAAC,CAAA;AAEN,MAAM,MAAM,qBAAqB,GAAG;IACnC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;CACrB,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../src/utils/respond.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAS,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAG9D,qBAAa,aAAc,YAAW,SAAS;IAE7C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,UAAU;gBAFV,MAAM,EAAE,GAAG,EACX,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,UAAU,EAAE,MAAM;IAGrB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IAuB/C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IAuB5C,MAAM;IAcN,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;CAKzC;AAED,MAAM,MAAM,SAAS,CAAC,cAAc,SAAS,OAAO,GAAG,IAAI,IAAI;IAC9D,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAC5D,GAAG,CAAC,cAAc,SAAS,IAAI,GAC7B;IACA,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,GACA,EAAE,CAAC,CAAA;AAEN,MAAM,MAAM,qBAAqB,GAAG;IACnC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;CACrB,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAAA"}
@@ -1,4 +1,6 @@
1
1
  import { SlackError } from "../error.js";
2
+ import { Modal } from "../resources/modal.js";
3
+ import { randomUUID } from "crypto";
2
4
  export class ResponderImpl {
3
5
  client;
4
6
  response_url;
@@ -60,4 +62,10 @@ export class ResponderImpl {
60
62
  throw new SlackError(`Responding to response_url failed with status code ${resp.status}`);
61
63
  }
62
64
  }
65
+ async modal(view) {
66
+ if (!view.callback_id)
67
+ view.callback_id = randomUUID();
68
+ const resp = await this.client.request("views.open", { view, trigger_id: this.trigger_id });
69
+ return new Modal(this.client, resp.view);
70
+ }
63
71
  }
@@ -1,3 +1,5 @@
1
1
  export type DistributiveOmit<T, Key extends keyof any> = T extends any ? Omit<T, Key> : never;
2
+ export type DistributivePick<T, Key extends keyof T> = T extends any ? Pick<T, Key> : never;
2
3
  export type ExtractPrefix<T extends string, PrefixType extends string = string, Sep extends string = ':', IfNotFound = never> = T extends `${infer Prefix extends PrefixType}${Sep}${string}` ? Prefix : IfNotFound;
4
+ export type NotNull<T> = T extends null ? never : T;
3
5
  //# sourceMappingURL=typing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typing.d.ts","sourceRoot":"","sources":["../../src/utils/typing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,GAAG,SAAS,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAE7F,MAAM,MAAM,aAAa,CACxB,CAAC,SAAS,MAAM,EAChB,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,GAAG,SAAS,MAAM,GAAG,GAAG,EACxB,UAAU,GAAG,KAAK,IACf,CAAC,SAAS,GAAG,MAAM,MAAM,SAAS,UAAU,GAAG,GAAG,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,UAAU,CAAA"}
1
+ {"version":3,"file":"typing.d.ts","sourceRoot":"","sources":["../../src/utils/typing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,GAAG,SAAS,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAE7F,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,GAAG,SAAS,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3F,MAAM,MAAM,aAAa,CACxB,CAAC,SAAS,MAAM,EAChB,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,GAAG,SAAS,MAAM,GAAG,GAAG,EACxB,UAAU,GAAG,KAAK,IACf,CAAC,SAAS,GAAG,MAAM,MAAM,SAAS,UAAU,GAAG,GAAG,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,UAAU,CAAA;AAEvF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slack.ts",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "A fully-typed, opinionated Slack API library",
5
5
  "author": "@jollyroger182",
6
6
  "license": "MIT",