slack.ts 0.0.5 → 0.0.7

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 (106) hide show
  1. package/dist/{events/types → api/events}/events.d.ts +1 -1
  2. package/dist/api/events/events.d.ts.map +1 -0
  3. package/dist/{events/types → api/events}/index.d.ts +2 -19
  4. package/dist/api/events/index.d.ts.map +1 -0
  5. package/dist/api/interactive/block_actions.d.ts +9 -4
  6. package/dist/api/interactive/block_actions.d.ts.map +1 -1
  7. package/dist/api/interactive/view_submission.d.ts +3 -2
  8. package/dist/api/interactive/view_submission.d.ts.map +1 -1
  9. package/dist/api/slash/index.d.ts +18 -0
  10. package/dist/api/slash/index.d.ts.map +1 -0
  11. package/dist/api/slash/index.js +1 -0
  12. package/dist/api/types/message.d.ts +3 -3
  13. package/dist/api/types/message.d.ts.map +1 -1
  14. package/dist/api/types/view.d.ts +4 -4
  15. package/dist/api/types/view.d.ts.map +1 -1
  16. package/dist/blocks/actions.d.ts +25 -0
  17. package/dist/blocks/actions.d.ts.map +1 -0
  18. package/dist/blocks/actions.js +25 -0
  19. package/dist/blocks/base.d.ts +19 -0
  20. package/dist/blocks/base.d.ts.map +1 -0
  21. package/dist/blocks/base.js +20 -0
  22. package/dist/blocks/elements/base.d.ts +10 -0
  23. package/dist/blocks/elements/base.d.ts.map +1 -0
  24. package/dist/blocks/elements/base.js +12 -0
  25. package/dist/blocks/elements/button.d.ts +23 -0
  26. package/dist/blocks/elements/button.d.ts.map +1 -0
  27. package/dist/blocks/elements/button.js +46 -0
  28. package/dist/blocks/elements/index.d.ts +4 -0
  29. package/dist/blocks/elements/index.d.ts.map +1 -0
  30. package/dist/blocks/elements/index.js +3 -0
  31. package/dist/blocks/elements/overflow.d.ts +30 -0
  32. package/dist/blocks/elements/overflow.d.ts.map +1 -0
  33. package/dist/blocks/elements/overflow.js +28 -0
  34. package/dist/blocks/elements/plain_text_input.d.ts +27 -0
  35. package/dist/blocks/elements/plain_text_input.d.ts.map +1 -0
  36. package/dist/blocks/elements/plain_text_input.js +58 -0
  37. package/dist/blocks/index.d.ts +7 -0
  38. package/dist/blocks/index.d.ts.map +1 -0
  39. package/dist/blocks/index.js +6 -0
  40. package/dist/blocks/input.d.ts +21 -0
  41. package/dist/blocks/input.d.ts.map +1 -0
  42. package/dist/blocks/input.js +31 -0
  43. package/dist/blocks/objects/confirm.d.ts +34 -0
  44. package/dist/blocks/objects/confirm.d.ts.map +1 -0
  45. package/dist/blocks/objects/confirm.js +54 -0
  46. package/dist/blocks/objects/index.d.ts +4 -0
  47. package/dist/blocks/objects/index.d.ts.map +1 -0
  48. package/dist/blocks/objects/index.js +3 -0
  49. package/dist/blocks/objects/option.d.ts +17 -0
  50. package/dist/blocks/objects/option.d.ts.map +1 -0
  51. package/dist/blocks/objects/option.js +21 -0
  52. package/dist/blocks/objects/text.d.ts +25 -0
  53. package/dist/blocks/objects/text.d.ts.map +1 -0
  54. package/dist/blocks/objects/text.js +57 -0
  55. package/dist/blocks/section.d.ts +42 -0
  56. package/dist/blocks/section.d.ts.map +1 -0
  57. package/dist/blocks/section.js +48 -0
  58. package/dist/blocks/utils/extract.d.ts +56 -0
  59. package/dist/blocks/utils/extract.d.ts.map +1 -0
  60. package/dist/blocks/utils/extract.js +1 -0
  61. package/dist/client.d.ts +34 -6
  62. package/dist/client.d.ts.map +1 -1
  63. package/dist/client.js +11 -2
  64. package/dist/index.d.ts +1 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +1 -0
  67. package/dist/receivers/base.d.ts +23 -0
  68. package/dist/receivers/base.d.ts.map +1 -0
  69. package/dist/receivers/base.js +1 -0
  70. package/dist/{events/receivers → receivers}/dummy.d.ts +1 -1
  71. package/dist/receivers/dummy.d.ts.map +1 -0
  72. package/dist/{events/receivers → receivers}/socket.d.ts +2 -2
  73. package/dist/receivers/socket.d.ts.map +1 -0
  74. package/dist/{events/receivers → receivers}/socket.js +4 -0
  75. package/dist/resources/action.d.ts +1 -1
  76. package/dist/resources/action.d.ts.map +1 -1
  77. package/dist/resources/action.js +2 -2
  78. package/dist/resources/channel.d.ts +3 -2
  79. package/dist/resources/channel.d.ts.map +1 -1
  80. package/dist/resources/message.d.ts +19 -16
  81. package/dist/resources/message.d.ts.map +1 -1
  82. package/dist/resources/message.js +5 -6
  83. package/dist/resources/modal.d.ts +9 -8
  84. package/dist/resources/modal.d.ts.map +1 -1
  85. package/dist/resources/slash.d.ts +15 -0
  86. package/dist/resources/slash.d.ts.map +1 -0
  87. package/dist/resources/slash.js +22 -0
  88. package/dist/resources/submission.d.ts +6 -4
  89. package/dist/resources/submission.d.ts.map +1 -1
  90. package/dist/resources/submission.js +5 -2
  91. package/dist/utils/messaging.d.ts +8 -6
  92. package/dist/utils/messaging.d.ts.map +1 -1
  93. package/dist/utils/messaging.js +5 -1
  94. package/dist/utils/paginate.d.ts +2 -2
  95. package/dist/utils/paginate.d.ts.map +1 -1
  96. package/dist/utils/respond.d.ts +5 -12
  97. package/dist/utils/respond.d.ts.map +1 -1
  98. package/dist/utils/respond.js +1 -1
  99. package/package.json +1 -1
  100. package/dist/events/receivers/dummy.d.ts.map +0 -1
  101. package/dist/events/receivers/socket.d.ts.map +0 -1
  102. package/dist/events/types/events.d.ts.map +0 -1
  103. package/dist/events/types/index.d.ts.map +0 -1
  104. /package/dist/{events/types → api/events}/events.js +0 -0
  105. /package/dist/{events/types → api/events}/index.js +0 -0
  106. /package/dist/{events/receivers → receivers}/dummy.js +0 -0
@@ -1,4 +1,4 @@
1
- import type { AnyMessage } from "../../api/types/message.js";
1
+ import type { AnyMessage } from "../types/message.js";
2
2
  import type { DistributiveOmit } from "../../utils/typing.js";
3
3
  export type AppMentionEvent = {
4
4
  type: "app_mention";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/api/events/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CAChB,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAExC,MAAM,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CAChB,GAAG,UAAU,CAAA"}
@@ -1,10 +1,4 @@
1
- import type EventEmitter from "events";
2
1
  import type { AppMentionEvent, MessageEvent } from "./events.js";
3
- import type { BlockActions } from "../../api/interactive/block_actions.js";
4
- import type { ViewSubmission } from "../../api/interactive/view_submission.js";
5
- export interface EventsReceiver extends EventEmitter<ReceiverEventMap> {
6
- start(): unknown;
7
- }
8
2
  export interface EventWrapper<T extends AllEvents = AllEvents> {
9
3
  type: "event_callback";
10
4
  token: string;
@@ -21,20 +15,9 @@ export interface EventWrapper<T extends AllEvents = AllEvents> {
21
15
  }
22
16
  export type AllEventTypes = AllEvents["type"];
23
17
  export type SlackEventMap = {
24
- [K in AllEventTypes]: AllEvents & {
18
+ [K in AllEventTypes]: Extract<AllEvents, {
25
19
  type: K;
26
- };
27
- };
28
- export type ReceiverEventMap = {
29
- event: [
30
- EventWrapper<AllEvents>
31
- ];
32
- block_actions: [
33
- BlockActions
34
- ];
35
- view_submission: [
36
- ViewSubmission
37
- ];
20
+ }>;
38
21
  };
39
22
  export type AllEvents = AppMentionEvent | MessageEvent;
40
23
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE7D,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,OAAO,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;CACrD,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,YAAY,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { PlainTextElement } from "@slack/types";
1
+ import type { ConfirmationDialog, PlainTextElement, PlainTextOption } from "@slack/types";
2
2
  import type { AnyMessage } from "../types/message.js";
3
3
  import type { InteractionCommon } from "./common.js";
4
4
  import type { StateValue } from "../types/value.js";
@@ -50,12 +50,17 @@ export interface PlainTextInputAction extends ActionCommon {
50
50
  type: "plain_text_input";
51
51
  value: string | null;
52
52
  }
53
- export type BlockAction = ButtonAction | PlainTextInputAction;
53
+ export interface OverflowAction extends ActionCommon {
54
+ type: "overflow";
55
+ confirm?: ConfirmationDialog;
56
+ selected_option: PlainTextOption;
57
+ }
58
+ export type BlockAction = ButtonAction | PlainTextInputAction | OverflowAction;
54
59
  export type BlockActionTypes = BlockAction["type"];
55
60
  export type BlockActionMap = {
56
- [K in BlockActionTypes]: BlockAction & {
61
+ [K in BlockActionTypes]: Extract<BlockAction, {
57
62
  type: K;
58
- };
63
+ }>;
59
64
  };
60
65
  export {};
61
66
  //# sourceMappingURL=block_actions.d.ts.map
@@ -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;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"}
1
+ {"version":3,"file":"block_actions.d.ts","sourceRoot":"","sources":["../../../src/api/interactive/block_actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACzF,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,WAAW,cAAe,SAAQ,YAAY;IACnD,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,eAAe,EAAE,eAAe,CAAA;CAChC;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,oBAAoB,GAAG,cAAc,CAAA;AAE9E,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;AAElD,MAAM,MAAM,cAAc,GAAG;KAC3B,CAAC,IAAI,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;CAC1D,CAAA"}
@@ -1,8 +1,9 @@
1
+ import type { KnownBlock } from "@slack/types";
1
2
  import type { ModalView } from "../types/view.js";
2
3
  import type { InteractionCommon } from "./common.js";
3
- export interface ViewSubmission extends InteractionCommon {
4
+ export interface ViewSubmission<Blocks extends KnownBlock[] = KnownBlock[]> extends InteractionCommon {
4
5
  type: "view_submission";
5
- view: ModalView;
6
+ view: ModalView<Blocks>;
6
7
  response_urls: string[];
7
8
  }
8
9
  //# sourceMappingURL=view_submission.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"view_submission.d.ts","sourceRoot":"","sources":["../../../src/api/interactive/view_submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEjD,MAAM,WAAW,cAAc,CAC9B,MAAM,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE,CACzC,SAAQ,iBAAiB;IAC1B,IAAI,EAAE,iBAAiB,CAAA;IACvB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IACvB,aAAa,EAAE,MAAM,EAAE,CAAA;CACvB"}
@@ -0,0 +1,18 @@
1
+ export interface SlashCommandPayload {
2
+ token: string;
3
+ team_id: string;
4
+ team_domain: string;
5
+ channel_id: string;
6
+ channel_name: string;
7
+ user_id: string;
8
+ user_name: string;
9
+ command: `/${string}`;
10
+ text: string;
11
+ api_app_id: string;
12
+ is_enterprise_install: 'true' | 'false';
13
+ enterprise_id?: string;
14
+ enterprise_name?: string;
15
+ response_url: string;
16
+ trigger_id: string;
17
+ }
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/slash/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,IAAI,MAAM,EAAE,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CAClB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -50,8 +50,8 @@ interface MaybeBot {
50
50
  interface MaybeAttachments {
51
51
  attachments: Attachment[];
52
52
  }
53
- interface MaybeBlocks {
54
- blocks?: KnownBlock[];
53
+ interface MaybeBlocks<Blocks extends KnownBlock[] = KnownBlock[]> {
54
+ blocks?: Blocks;
55
55
  }
56
56
  interface MessageCommon {
57
57
  type: 'message';
@@ -61,7 +61,7 @@ interface MessageCommon {
61
61
  text?: string;
62
62
  user?: string;
63
63
  }
64
- export interface NormalMessage extends MessageCommon, MaybeBot, MaybeAttachments, MaybeBlocks {
64
+ export interface NormalMessage<Blocks extends KnownBlock[] = KnownBlock[]> extends MessageCommon, MaybeBot, MaybeAttachments, MaybeBlocks<Blocks> {
65
65
  subtype?: never;
66
66
  user: string;
67
67
  team: string;
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/api/types/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/api/types/message.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  import type { KnownBlock, PlainTextElement } from "@slack/types";
2
- import type { StateValue } from "./value.js";
3
- export interface ModalView {
2
+ import type { ExtractValues } from "../../blocks/utils/extract.js";
3
+ export interface ModalView<Blocks extends KnownBlock[] = KnownBlock[]> {
4
4
  type: "modal";
5
5
  id: string;
6
6
  team_id: string;
7
7
  title: PlainTextElement;
8
- blocks: KnownBlock[];
8
+ blocks: Blocks;
9
9
  close: PlainTextElement | null;
10
10
  submit: PlainTextElement | null;
11
11
  private_metadata: string;
12
12
  callback_id: string;
13
13
  state: {
14
- values: Record<string, Record<string, StateValue>>;
14
+ values: ExtractValues<Blocks>;
15
15
  };
16
16
  hash: string;
17
17
  clear_on_close: boolean;
@@ -1 +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"}
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,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,MAAM,WAAW,SAAS,CAAC,MAAM,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE;IACpE,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,gBAAgB,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,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,aAAa,CAAC,MAAM,CAAC,CAAA;KAAE,CAAA;IACxC,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,25 @@
1
+ import { BlockBuilder } from "./base.js";
2
+ import type { ActionsBlock } from "@slack/types";
3
+ import type { ButtonBuilder } from "./elements/button.js";
4
+ import type { BlockElementBuilder } from "./elements/base.js";
5
+ import type { OverflowBuilder } from "./elements/overflow.js";
6
+ type ActionsElementBuilder = ButtonBuilder<string> | OverflowBuilder<any, string>;
7
+ type TypedActionsBlock<Actions extends ActionsElementBuilder[], BlockID extends string> = ActionsBlock & {
8
+ block_id: BlockID;
9
+ elements: {
10
+ [K in keyof Actions]: Actions[K] extends BlockElementBuilder<infer Output> ? Output : never;
11
+ };
12
+ };
13
+ export declare class ActionsBlockBuilder<Actions extends ActionsElementBuilder[], BlockID extends string = string> extends BlockBuilder<TypedActionsBlock<Actions, BlockID>, BlockID> {
14
+ private _actions;
15
+ constructor(_actions: Actions);
16
+ id<BlockID extends string>(blockId: BlockID): ActionsBlockBuilder<Actions, BlockID>;
17
+ action<Action extends ActionsElementBuilder>(action: Action): ActionsBlockBuilder<[
18
+ ...Actions,
19
+ Action
20
+ ]>;
21
+ build(): TypedActionsBlock<Actions, BlockID>;
22
+ }
23
+ export declare function actions<Actions extends ActionsElementBuilder[]>(...actions: Actions): ActionsBlockBuilder<Actions, string>;
24
+ export {};
25
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/blocks/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,KAAK,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AAEjF,KAAK,iBAAiB,CACrB,OAAO,SAAS,qBAAqB,EAAE,EACvC,OAAO,SAAS,MAAM,IACnB,YAAY,GAAG;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE;SACR,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,mBAAmB,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK;KAC3F,CAAA;CACD,CAAA;AAED,qBAAa,mBAAmB,CAC/B,OAAO,SAAS,qBAAqB,EAAE,EACvC,OAAO,SAAS,MAAM,GAAG,MAAM,CAC9B,SAAQ,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IACvD,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,OAAO;IAI5B,EAAE,CAAC,OAAO,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;IAI5F,MAAM,CAAC,MAAM,SAAS,qBAAqB,EAC1C,MAAM,EAAE,MAAM,GACZ,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;IAKnC,KAAK,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC;CAOrD;AAED,wBAAgB,OAAO,CAAC,OAAO,SAAS,qBAAqB,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,wCAEnF"}
@@ -0,0 +1,25 @@
1
+ import { BlockBuilder } from "./base.js";
2
+ export class ActionsBlockBuilder extends BlockBuilder {
3
+ _actions;
4
+ constructor(_actions) {
5
+ super();
6
+ this._actions = _actions;
7
+ }
8
+ id(blockId) {
9
+ return this._id(blockId);
10
+ }
11
+ action(action) {
12
+ this._actions.push(action);
13
+ return this;
14
+ }
15
+ build() {
16
+ return {
17
+ ...this._build(),
18
+ type: "actions",
19
+ elements: this._actions.map((a) => a.build()),
20
+ };
21
+ }
22
+ }
23
+ export function actions(...actions) {
24
+ return new ActionsBlockBuilder(actions);
25
+ }
@@ -0,0 +1,19 @@
1
+ type BuilderResults<T extends BlockBuilder<unknown>[]> = {
2
+ [K in keyof T]: T[K] extends BlockBuilder<infer Output> ? Output : never;
3
+ };
4
+ export declare function blocks<Builders extends BlockBuilder<unknown>[]>(...blocks: Builders): BuilderResults<Builders>;
5
+ export declare abstract class Builder<Output> {
6
+ abstract build(): Output;
7
+ protected _build(): Record<never, never>;
8
+ }
9
+ export declare abstract class BlockBuilder<Output, BlockID extends string = string, Complete extends boolean = true> extends Builder<Output> {
10
+ private _blockIsNotComplete?;
11
+ private _blockId;
12
+ protected _id(id: string): any;
13
+ abstract id<BlockID extends string>(blockId: BlockID): BlockBuilder<unknown, BlockID, Complete>;
14
+ protected _build(): {
15
+ block_id: BlockID;
16
+ };
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/blocks/base.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,CAAC,CAAC,SAAS,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI;KACvD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK;CACxE,CAAA;AAED,wBAAgB,MAAM,CAAC,QAAQ,SAAS,YAAY,CAAC,OAAO,CAAC,EAAE,EAC9D,GAAG,MAAM,EAAE,QAAQ,GACjB,cAAc,CAAC,QAAQ,CAAC,CAE1B;AAED,8BAAsB,OAAO,CAAC,MAAM;IACnC,QAAQ,CAAC,KAAK,IAAI,MAAM;IAExB,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;CAGxC;AAED,8BAAsB,YAAY,CACjC,MAAM,EACN,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,QAAQ,SAAS,OAAO,GAAG,IAAI,CAC9B,SAAQ,OAAO,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,mBAAmB,CAAC,CAAU;IAEtC,OAAO,CAAC,QAAQ,CAAuB;IAEvC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAER,GAAG;IAGnB,QAAQ,CAAC,EAAE,CAAC,OAAO,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;cAE5E,MAAM,IAAI;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE;CAGlD"}
@@ -0,0 +1,20 @@
1
+ import { randomUUID } from 'crypto';
2
+ export function blocks(...blocks) {
3
+ return blocks.map((b) => b.build());
4
+ }
5
+ export class Builder {
6
+ _build() {
7
+ return {};
8
+ }
9
+ }
10
+ export class BlockBuilder extends Builder {
11
+ _blockIsNotComplete;
12
+ _blockId = randomUUID();
13
+ _id(id) {
14
+ this._blockId = id;
15
+ return this;
16
+ }
17
+ _build() {
18
+ return { block_id: this._blockId };
19
+ }
20
+ }
@@ -0,0 +1,10 @@
1
+ import { Builder } from "../base.js";
2
+ export declare abstract class BlockElementBuilder<Output, ActionID extends string = string> extends Builder<Output> {
3
+ protected _actionId: string;
4
+ protected _id(actionId: string): any;
5
+ abstract id<ActionID extends string>(actionId: ActionID): BlockElementBuilder<unknown, ActionID>;
6
+ _build(): {
7
+ action_id: ActionID;
8
+ };
9
+ }
10
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/blocks/elements/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,8BAAsB,mBAAmB,CACxC,MAAM,EACN,QAAQ,SAAS,MAAM,GAAG,MAAM,CAC/B,SAAQ,OAAO,CAAC,MAAM,CAAC;IACxB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAe;IAE1C,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAEd,GAAG;IAGnB,QAAQ,CAAC,EAAE,CAAC,QAAQ,SAAS,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAEvF,MAAM,IAAI;QAAE,SAAS,EAAE,QAAQ,CAAA;KAAE;CAG1C"}
@@ -0,0 +1,12 @@
1
+ import { randomUUID } from "crypto";
2
+ import { Builder } from "../base.js";
3
+ export class BlockElementBuilder extends Builder {
4
+ _actionId = randomUUID();
5
+ _id(actionId) {
6
+ this._actionId = actionId;
7
+ return this;
8
+ }
9
+ _build() {
10
+ return { action_id: this._actionId };
11
+ }
12
+ }
@@ -0,0 +1,23 @@
1
+ import type { Button, ColorScheme } from "@slack/types";
2
+ import { type TextObjectBuilder } from "../objects/text.js";
3
+ import { BlockElementBuilder } from "./base.js";
4
+ type TypedButton<ActionID extends string> = Button & {
5
+ action_id: ActionID;
6
+ };
7
+ export declare class ButtonBuilder<ActionID extends string = string> extends BlockElementBuilder<TypedButton<ActionID>, ActionID> {
8
+ private _text;
9
+ private _value?;
10
+ private _url?;
11
+ private _style?;
12
+ private _accessibilityLabel?;
13
+ constructor(_text: TextObjectBuilder<false>);
14
+ id<ActionID extends string>(actionId: ActionID): ButtonBuilder<ActionID>;
15
+ value(value: string): this;
16
+ url(url: string): this;
17
+ style(style: ColorScheme): this;
18
+ accessibilityLabel(accessibilityLabel: string): this;
19
+ build(): TypedButton<ActionID>;
20
+ }
21
+ export declare function button(text: string | TextObjectBuilder<false>): ButtonBuilder<string>;
22
+ export {};
23
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/blocks/elements/button.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAE5C,KAAK,WAAW,CAAC,QAAQ,SAAS,MAAM,IAAI,MAAM,GAAG;IAAE,SAAS,EAAE,QAAQ,CAAA;CAAE,CAAA;AAE5E,qBAAa,aAAa,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,mBAAmB,CACvF,WAAW,CAAC,QAAQ,CAAC,EACrB,QAAQ,CACR;IAMY,OAAO,CAAC,KAAK;IALzB,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,IAAI,CAAC,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,mBAAmB,CAAC,CAAQ;gBAEhB,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC;IAI1C,EAAE,CAAC,QAAQ,SAAS,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IAIjF,KAAK,CAAC,KAAK,EAAE,MAAM;IAKnB,GAAG,CAAC,GAAG,EAAE,MAAM;IAKf,KAAK,CAAC,KAAK,EAAE,WAAW;IAKxB,kBAAkB,CAAC,kBAAkB,EAAE,MAAM;IAKpC,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC;CAWvC;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,yBAE7D"}
@@ -0,0 +1,46 @@
1
+ import { ensureIsTextObjectBuilder } from "../objects/text.js";
2
+ import { BlockElementBuilder } from "./base.js";
3
+ export class ButtonBuilder extends BlockElementBuilder {
4
+ _text;
5
+ _value;
6
+ _url;
7
+ _style;
8
+ _accessibilityLabel;
9
+ constructor(_text) {
10
+ super();
11
+ this._text = _text;
12
+ }
13
+ id(actionId) {
14
+ return this._id(actionId);
15
+ }
16
+ value(value) {
17
+ this._value = value;
18
+ return this;
19
+ }
20
+ url(url) {
21
+ this._url = url;
22
+ return this;
23
+ }
24
+ style(style) {
25
+ this._style = style;
26
+ return this;
27
+ }
28
+ accessibilityLabel(accessibilityLabel) {
29
+ this._accessibilityLabel = accessibilityLabel;
30
+ return this;
31
+ }
32
+ build() {
33
+ return {
34
+ ...this._build(),
35
+ type: "button",
36
+ text: this._text.build(),
37
+ value: this._value,
38
+ url: this._url,
39
+ style: this._style,
40
+ accessibility_label: this._accessibilityLabel,
41
+ };
42
+ }
43
+ }
44
+ export function button(text) {
45
+ return new ButtonBuilder(ensureIsTextObjectBuilder(text).plain());
46
+ }
@@ -0,0 +1,4 @@
1
+ export { button } from "./button.js";
2
+ export { overflow } from "./overflow.js";
3
+ export { plainTextInput } from "./plain_text_input.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/elements/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { button } from "./button.js";
2
+ export { overflow } from "./overflow.js";
3
+ export { plainTextInput } from "./plain_text_input.js";
@@ -0,0 +1,30 @@
1
+ import type { ColorScheme, Overflow, PlainTextOption } from "@slack/types";
2
+ import { BlockElementBuilder } from "./base.js";
3
+ import type { OptionObjectBuilder } from "../objects/option.js";
4
+ import { ConfirmBuilder } from "../objects/confirm.js";
5
+ import type { TextObjectBuilder } from "../objects/text.js";
6
+ type TypedOverflow<Options extends OptionObjectBuilder[], ActionID extends string> = Overflow & {
7
+ action_id: ActionID;
8
+ options: {
9
+ [K in keyof Options]: Options[K] extends OptionObjectBuilder<infer Value> ? PlainTextOption & {
10
+ value: Value;
11
+ } : never;
12
+ };
13
+ };
14
+ export declare class OverflowBuilder<Options extends OptionObjectBuilder[], ActionID extends string = string> extends BlockElementBuilder<TypedOverflow<Options, ActionID>, ActionID> {
15
+ private _options;
16
+ private _confirm?;
17
+ constructor(_options: Options);
18
+ id<ActionID extends string>(actionId: ActionID): OverflowBuilder<Options, ActionID>;
19
+ confirm(confirm: ConfirmBuilder<true, true, true, true> | {
20
+ title: string | TextObjectBuilder<false>;
21
+ text: string | TextObjectBuilder;
22
+ confirm: string | TextObjectBuilder<false>;
23
+ deny: string | TextObjectBuilder<false>;
24
+ style?: ColorScheme;
25
+ }): this;
26
+ build(): TypedOverflow<Options, ActionID>;
27
+ }
28
+ export declare function overflow<Options extends OptionObjectBuilder[]>(...options: Options): OverflowBuilder<Options, string>;
29
+ export {};
30
+ //# sourceMappingURL=overflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overflow.d.ts","sourceRoot":"","sources":["../../../src/blocks/elements/overflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAA2B,MAAM,oBAAoB,CAAA;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,KAAK,aAAa,CAAC,OAAO,SAAS,mBAAmB,EAAE,EAAE,QAAQ,SAAS,MAAM,IAAI,QAAQ,GAAG;IAC/F,SAAS,EAAE,QAAQ,CAAA;IACnB,OAAO,EAAE;SACP,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,mBAAmB,CAAC,MAAM,KAAK,CAAC,GACtE,eAAe,GAAG;YAAE,KAAK,EAAE,KAAK,CAAA;SAAE,GAClC,KAAK;KACR,CAAA;CACD,CAAA;AAED,qBAAa,eAAe,CAC3B,OAAO,SAAS,mBAAmB,EAAE,EACrC,QAAQ,SAAS,MAAM,GAAG,MAAM,CAC/B,SAAQ,mBAAmB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAG5D,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,QAAQ,CAAC,CAAwC;gBAErC,QAAQ,EAAE,OAAO;IAI5B,EAAE,CAAC,QAAQ,SAAS,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;IAI5F,OAAO,CACN,OAAO,EACJ,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GACtC;QACA,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAA;QAChC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACvC,KAAK,CAAC,EAAE,WAAW,CAAA;KAClB;IAMI,KAAK,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;CAQlD;AAED,wBAAgB,QAAQ,CAAC,OAAO,SAAS,mBAAmB,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,oCAElF"}
@@ -0,0 +1,28 @@
1
+ import { BlockElementBuilder } from "./base.js";
2
+ import { ConfirmBuilder, confirm as buildConfirm } from "../objects/confirm.js";
3
+ export class OverflowBuilder extends BlockElementBuilder {
4
+ _options;
5
+ _confirm;
6
+ constructor(_options) {
7
+ super();
8
+ this._options = _options;
9
+ }
10
+ id(actionId) {
11
+ return this._id(actionId);
12
+ }
13
+ confirm(confirm) {
14
+ this._confirm = confirm instanceof ConfirmBuilder ? confirm : buildConfirm(confirm);
15
+ return this;
16
+ }
17
+ build() {
18
+ return {
19
+ ...this._build(),
20
+ type: "overflow",
21
+ options: this._options.map((o) => o.build()),
22
+ confirm: this._confirm?.build(),
23
+ };
24
+ }
25
+ }
26
+ export function overflow(...options) {
27
+ return new OverflowBuilder(options);
28
+ }
@@ -0,0 +1,27 @@
1
+ import type { DispatchActionConfig, PlainTextInput } from "@slack/types";
2
+ import { type TextObjectBuilder } from "../objects/text.js";
3
+ import { BlockElementBuilder } from "./base.js";
4
+ type TypedPlainTextInput<ActionID extends string> = PlainTextInput & {
5
+ action_id: ActionID;
6
+ };
7
+ export declare class PlainTextInputBuilder<ActionID extends string> extends BlockElementBuilder<TypedPlainTextInput<ActionID>, ActionID> {
8
+ private _multiline;
9
+ private _default?;
10
+ private _autofocus;
11
+ private _placeholder?;
12
+ private _minLength?;
13
+ private _maxLength?;
14
+ private _triggers?;
15
+ id<ActionID extends string>(actionId: ActionID): PlainTextInputBuilder<ActionID>;
16
+ multiline(multiline?: boolean): this;
17
+ default(value: string): this;
18
+ autofocus(autofocus?: boolean): this;
19
+ placeholder(placeholder: string | TextObjectBuilder<false>): this;
20
+ min(minLength: number): this;
21
+ max(maxLength: number): this;
22
+ triggers(...triggers: DispatchActionConfig["trigger_actions_on"] & {}): this;
23
+ build(): TypedPlainTextInput<ActionID>;
24
+ }
25
+ export declare function plainTextInput(): PlainTextInputBuilder<string>;
26
+ export {};
27
+ //# sourceMappingURL=plain_text_input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain_text_input.d.ts","sourceRoot":"","sources":["../../../src/blocks/elements/plain_text_input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACxE,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAE5C,KAAK,mBAAmB,CAAC,QAAQ,SAAS,MAAM,IAAI,cAAc,GAAG;IAAE,SAAS,EAAE,QAAQ,CAAA;CAAE,CAAA;AAE5F,qBAAa,qBAAqB,CAAC,QAAQ,SAAS,MAAM,CAAE,SAAQ,mBAAmB,CACtF,mBAAmB,CAAC,QAAQ,CAAC,EAC7B,QAAQ,CACR;IACA,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAQ;IACzB,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAC,CAA4C;IAErD,EAAE,CAAC,QAAQ,SAAS,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC;IAIzF,SAAS,CAAC,SAAS,GAAE,OAAc;IAKnC,OAAO,CAAC,KAAK,EAAE,MAAM;IAKrB,SAAS,CAAC,SAAS,GAAE,OAAc;IAKnC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC;IAK1D,GAAG,CAAC,SAAS,EAAE,MAAM;IAKrB,GAAG,CAAC,SAAS,EAAE,MAAM;IAKrB,QAAQ,CAAC,GAAG,QAAQ,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,GAAG,EAAE;IAK5D,KAAK,IAAI,mBAAmB,CAAC,QAAQ,CAAC;CAa/C;AAED,wBAAgB,cAAc,kCAE7B"}
@@ -0,0 +1,58 @@
1
+ import { ensureIsTextObjectBuilder } from "../objects/text.js";
2
+ import { BlockElementBuilder } from "./base.js";
3
+ export class PlainTextInputBuilder extends BlockElementBuilder {
4
+ _multiline = false;
5
+ _default;
6
+ _autofocus = false;
7
+ _placeholder;
8
+ _minLength;
9
+ _maxLength;
10
+ _triggers;
11
+ id(actionId) {
12
+ return this._id(actionId);
13
+ }
14
+ multiline(multiline = true) {
15
+ this._multiline = multiline;
16
+ return this;
17
+ }
18
+ default(value) {
19
+ this._default = value;
20
+ return this;
21
+ }
22
+ autofocus(autofocus = true) {
23
+ this._autofocus = autofocus;
24
+ return this;
25
+ }
26
+ placeholder(placeholder) {
27
+ this._placeholder = ensureIsTextObjectBuilder(placeholder).plain();
28
+ return this;
29
+ }
30
+ min(minLength) {
31
+ this._minLength = minLength;
32
+ return this;
33
+ }
34
+ max(maxLength) {
35
+ this._maxLength = maxLength;
36
+ return this;
37
+ }
38
+ triggers(...triggers) {
39
+ this._triggers = triggers;
40
+ return this;
41
+ }
42
+ build() {
43
+ return {
44
+ ...this._build(),
45
+ type: "plain_text_input",
46
+ multiline: this._multiline,
47
+ initial_value: this._default,
48
+ focus_on_load: this._autofocus,
49
+ placeholder: this._placeholder?.build(),
50
+ min_length: this._minLength,
51
+ max_length: this._maxLength,
52
+ dispatch_action_config: this._triggers ? { trigger_actions_on: this._triggers } : undefined,
53
+ };
54
+ }
55
+ }
56
+ export function plainTextInput() {
57
+ return new PlainTextInputBuilder();
58
+ }
@@ -0,0 +1,7 @@
1
+ export { blocks } from "./base.js";
2
+ export { actions } from "./actions.js";
3
+ export { input } from "./input.js";
4
+ export { section } from "./section.js";
5
+ export * from "./elements/index.js";
6
+ export * from "./objects/index.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { blocks } from "./base.js";
2
+ export { actions } from "./actions.js";
3
+ export { input } from "./input.js";
4
+ export { section } from "./section.js";
5
+ export * from "./elements/index.js";
6
+ export * from "./objects/index.js";
@@ -0,0 +1,21 @@
1
+ import type { InputBlock } from "@slack/types";
2
+ import { BlockBuilder } from "./base.js";
3
+ import type { BlockElementBuilder } from "./elements/base.js";
4
+ import type { PlainTextInputBuilder } from "./elements/plain_text_input.js";
5
+ import { type TextObjectBuilder } from "./objects/text.js";
6
+ type InputElementBuilder = PlainTextInputBuilder<string>;
7
+ type TypedInputBlock<Element extends InputElementBuilder, BlockID extends string> = InputBlock & {
8
+ block_id: BlockID;
9
+ element: Element extends BlockElementBuilder<infer Output> ? Output : never;
10
+ };
11
+ export declare class InputBlockBuilder<Element extends InputElementBuilder, HasLabel extends boolean = false, BlockID extends string = string> extends BlockBuilder<TypedInputBlock<Element, BlockID>, BlockID, HasLabel> {
12
+ private _element;
13
+ private _label?;
14
+ constructor(_element: Element);
15
+ id<BlockID extends string>(blockId: BlockID): InputBlockBuilder<Element, HasLabel, BlockID>;
16
+ label(text: string | TextObjectBuilder<false>): InputBlockBuilder<Element, true, BlockID>;
17
+ build(this: InputBlockBuilder<Element, true, BlockID>): TypedInputBlock<Element, BlockID>;
18
+ }
19
+ export declare function input<Element extends InputElementBuilder>(element: Element): InputBlockBuilder<Element, false, string>;
20
+ export {};
21
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/blocks/input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElF,KAAK,mBAAmB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAExD,KAAK,eAAe,CAAC,OAAO,SAAS,mBAAmB,EAAE,OAAO,SAAS,MAAM,IAAI,UAAU,GAAG;IAChG,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,SAAS,mBAAmB,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAA;CAC3E,CAAA;AAED,qBAAa,iBAAiB,CAC7B,OAAO,SAAS,mBAAmB,EACnC,QAAQ,SAAS,OAAO,GAAG,KAAK,EAChC,OAAO,SAAS,MAAM,GAAG,MAAM,CAC9B,SAAQ,YAAY,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC;IAG/D,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,MAAM,CAAC,CAA0B;gBAErB,QAAQ,EAAE,OAAO;IAI5B,EAAE,CAAC,OAAO,SAAS,MAAM,EACjC,OAAO,EAAE,OAAO,GACd,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;IAIhD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;IAKhF,KAAK,CACb,IAAI,EAAE,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,GAC7C,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC;CAUpC;AAED,wBAAgB,KAAK,CAAC,OAAO,SAAS,mBAAmB,EAAE,OAAO,EAAE,OAAO,6CAE1E"}