slack.ts 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/api/index.d.ts +9 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/interactive/block_actions.d.ts +4 -22
- package/dist/api/interactive/block_actions.d.ts.map +1 -1
- package/dist/api/interactive/common.d.ts +23 -0
- package/dist/api/interactive/common.d.ts.map +1 -0
- package/dist/api/interactive/common.js +1 -0
- package/dist/api/interactive/view_submission.d.ts +8 -0
- package/dist/api/interactive/view_submission.d.ts.map +1 -0
- package/dist/api/interactive/view_submission.js +1 -0
- package/dist/api/types/value.d.ts +6 -0
- package/dist/api/types/value.d.ts.map +1 -0
- package/dist/api/types/value.js +1 -0
- package/dist/api/types/view.d.ts +26 -0
- package/dist/api/types/view.d.ts.map +1 -0
- package/dist/api/types/view.js +1 -0
- package/dist/api/web/views.d.ts +17 -0
- package/dist/api/web/views.d.ts.map +1 -0
- package/dist/api/web/views.js +1 -0
- package/dist/builders/blocks/actions.d.ts +24 -0
- package/dist/builders/blocks/actions.d.ts.map +1 -0
- package/dist/builders/blocks/actions.js +25 -0
- package/dist/builders/blocks/base.d.ts +18 -0
- package/dist/builders/blocks/base.d.ts.map +1 -0
- package/dist/builders/blocks/base.js +19 -0
- package/dist/builders/blocks/elements/base.d.ts +9 -0
- package/dist/builders/blocks/elements/base.d.ts.map +1 -0
- package/dist/builders/blocks/elements/base.js +12 -0
- package/dist/builders/blocks/elements/button.d.ts +23 -0
- package/dist/builders/blocks/elements/button.d.ts.map +1 -0
- package/dist/builders/blocks/elements/button.js +46 -0
- package/dist/builders/blocks/elements/index.d.ts +3 -0
- package/dist/builders/blocks/elements/index.d.ts.map +1 -0
- package/dist/builders/blocks/elements/index.js +2 -0
- package/dist/builders/blocks/elements/plain_text_input.d.ts +12 -0
- package/dist/builders/blocks/elements/plain_text_input.d.ts.map +1 -0
- package/dist/builders/blocks/elements/plain_text_input.js +12 -0
- package/dist/builders/blocks/index.d.ts +7 -0
- package/dist/builders/blocks/index.d.ts.map +1 -0
- package/dist/builders/blocks/index.js +6 -0
- package/dist/builders/blocks/input.d.ts +21 -0
- package/dist/builders/blocks/input.d.ts.map +1 -0
- package/dist/builders/blocks/input.js +31 -0
- package/dist/builders/blocks/objects/index.d.ts +2 -0
- package/dist/builders/blocks/objects/index.d.ts.map +1 -0
- package/dist/builders/blocks/objects/index.js +1 -0
- package/dist/builders/blocks/objects/text.d.ts +22 -0
- package/dist/builders/blocks/objects/text.d.ts.map +1 -0
- package/dist/builders/blocks/objects/text.js +53 -0
- package/dist/builders/blocks/section.d.ts +24 -0
- package/dist/builders/blocks/section.d.ts.map +1 -0
- package/dist/builders/blocks/section.js +22 -0
- package/dist/builders/index.d.ts +2 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +1 -0
- package/dist/client.d.ts +26 -11
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +34 -18
- package/dist/events/receivers/socket.js +1 -1
- package/dist/events/types/index.d.ts +4 -0
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/resources/channel.d.ts +6 -2
- package/dist/resources/channel.d.ts.map +1 -1
- package/dist/resources/channel.js +4 -22
- package/dist/resources/message.d.ts +3 -3
- package/dist/resources/message.d.ts.map +1 -1
- package/dist/resources/message.js +5 -23
- package/dist/resources/modal.d.ts +21 -0
- package/dist/resources/modal.d.ts.map +1 -0
- package/dist/resources/modal.js +54 -0
- package/dist/resources/submission.d.ts +11 -0
- package/dist/resources/submission.d.ts.map +1 -0
- package/dist/resources/submission.js +14 -0
- package/dist/utils/paginate.d.ts +10 -0
- package/dist/utils/paginate.d.ts.map +1 -0
- package/dist/utils/paginate.js +22 -0
- package/dist/utils/respond.d.ts +6 -1
- package/dist/utils/respond.d.ts.map +1 -1
- package/dist/utils/respond.js +8 -0
- package/dist/utils/typing.d.ts +2 -0
- package/dist/utils/typing.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Builder } from "../base.js";
|
|
2
|
+
export class TextObjectBuilder extends Builder {
|
|
3
|
+
_text;
|
|
4
|
+
_mrkdwn;
|
|
5
|
+
_emoji = false;
|
|
6
|
+
_verbatim = false;
|
|
7
|
+
constructor(_text, _mrkdwn) {
|
|
8
|
+
super();
|
|
9
|
+
this._text = _text;
|
|
10
|
+
this._mrkdwn = _mrkdwn;
|
|
11
|
+
}
|
|
12
|
+
emoji(emoji = true) {
|
|
13
|
+
this._emoji = emoji;
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
verbatim(verbatim = true) {
|
|
17
|
+
this._verbatim = verbatim;
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
mrkdwn(mrkdwn = true) {
|
|
21
|
+
this._mrkdwn = mrkdwn;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
plain() {
|
|
25
|
+
return this.mrkdwn(false);
|
|
26
|
+
}
|
|
27
|
+
build() {
|
|
28
|
+
if (this._mrkdwn) {
|
|
29
|
+
return {
|
|
30
|
+
type: "mrkdwn",
|
|
31
|
+
text: this._text,
|
|
32
|
+
verbatim: this._verbatim,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
return {
|
|
37
|
+
type: "plain_text",
|
|
38
|
+
text: this._text,
|
|
39
|
+
emoji: this._emoji,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export function mrkdwn(text) {
|
|
45
|
+
return new TextObjectBuilder(text, true);
|
|
46
|
+
}
|
|
47
|
+
export { mrkdwn as text };
|
|
48
|
+
export function plain(text) {
|
|
49
|
+
return new TextObjectBuilder(text, false);
|
|
50
|
+
}
|
|
51
|
+
export function ensureIsTextObjectBuilder(text) {
|
|
52
|
+
return typeof text === "string" ? new TextObjectBuilder(text, true) : text;
|
|
53
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BlockBuilder } from "./base.js";
|
|
2
|
+
import type { SectionBlock } from "@slack/types";
|
|
3
|
+
import { type TextObjectBuilder } from "./objects/text.js";
|
|
4
|
+
type TypedSectionBlock<Mrkdwn extends boolean = boolean, BlockID extends string = string> = SectionBlock & (Mrkdwn extends true ? {
|
|
5
|
+
text: {
|
|
6
|
+
type: "mrkdwn";
|
|
7
|
+
};
|
|
8
|
+
} : {
|
|
9
|
+
text: {
|
|
10
|
+
type: "plain_text";
|
|
11
|
+
};
|
|
12
|
+
}) & {
|
|
13
|
+
block_id: BlockID;
|
|
14
|
+
};
|
|
15
|
+
export declare class SectionBlockBuilder<Mrkdwn extends boolean = boolean, BlockID extends string = string> extends BlockBuilder<TypedSectionBlock<Mrkdwn, BlockID>, BlockID> {
|
|
16
|
+
private _text;
|
|
17
|
+
constructor(_text: TextObjectBuilder<Mrkdwn>);
|
|
18
|
+
id<BlockID extends string>(blockId: BlockID): SectionBlockBuilder<Mrkdwn, BlockID>;
|
|
19
|
+
build(): TypedSectionBlock<Mrkdwn, BlockID>;
|
|
20
|
+
}
|
|
21
|
+
export declare function section(text: string): SectionBlockBuilder<true>;
|
|
22
|
+
export declare function section<Mrkdwn extends boolean>(text: TextObjectBuilder<Mrkdwn>): SectionBlockBuilder<Mrkdwn>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../src/builders/blocks/section.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElF,KAAK,iBAAiB,CACrB,MAAM,SAAS,OAAO,GAAG,OAAO,EAChC,OAAO,SAAS,MAAM,GAAG,MAAM,IAC5B,YAAY,GACf,CAAC,MAAM,SAAS,IAAI,GAAG;IAAE,IAAI,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,CAAA;CAAE,CAAC,GAAG;IACzF,QAAQ,EAAE,OAAO,CAAA;CACjB,CAAA;AAEF,qBAAa,mBAAmB,CAC/B,MAAM,SAAS,OAAO,GAAG,OAAO,EAChC,OAAO,SAAS,MAAM,GAAG,MAAM,CAC9B,SAAQ,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IACtD,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC;IAI3C,EAAE,CAAC,OAAO,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC;IAIlF,KAAK,IAAI,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC;CAOpD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;AAChE,wBAAgB,OAAO,CAAC,MAAM,SAAS,OAAO,EAC7C,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BlockBuilder } from "./base.js";
|
|
2
|
+
import { ensureIsTextObjectBuilder } from "./objects/text.js";
|
|
3
|
+
export class SectionBlockBuilder extends BlockBuilder {
|
|
4
|
+
_text;
|
|
5
|
+
constructor(_text) {
|
|
6
|
+
super();
|
|
7
|
+
this._text = _text;
|
|
8
|
+
}
|
|
9
|
+
id(blockId) {
|
|
10
|
+
return this._id(blockId);
|
|
11
|
+
}
|
|
12
|
+
build() {
|
|
13
|
+
return {
|
|
14
|
+
...this._build(),
|
|
15
|
+
type: "section",
|
|
16
|
+
text: this._text.build(),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function section(text) {
|
|
21
|
+
return new SectionBlockBuilder(ensureIsTextObjectBuilder(text));
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./blocks/index.js";
|
package/dist/client.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import
|
|
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
|
-
*
|
|
53
|
-
*
|
|
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
|
|
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>(
|
|
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
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
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
|
|
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 {
|
|
3
|
+
import { SlackWebAPIError, SlackWebAPIPlatformError } from "./error.js";
|
|
6
4
|
import { DummyReceiver } from "./events/receivers/dummy.js";
|
|
7
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
73
|
-
*
|
|
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
|
|
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(
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
|
|
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(), {
|
|
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
|
|
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;
|
|
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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -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.
|
|
12
|
+
* messages.
|
|
13
13
|
*/
|
|
14
14
|
batch?: number;
|
|
15
|
-
/**
|
|
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;
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
} :
|
|
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":"AAAA,OAAO,KAAK,EAAE,WAAW,
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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"}
|