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.
- 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/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/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
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
|
package/dist/api/index.d.ts
CHANGED
|
@@ -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
|
};
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
@@ -1,35 +1,17 @@
|
|
|
1
1
|
import type { PlainTextElement } from "@slack/types";
|
|
2
2
|
import type { AnyMessage } from "../types/message.js";
|
|
3
|
-
|
|
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,
|
|
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;
|
|
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 @@
|
|
|
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
|
|
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"}
|
|
@@ -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":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACrF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAGpC,OAAO,EAGN,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,UAAU,kBAAmB,SAAQ,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC;IAC5E;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACd;AAED,cAAM,YAAY;;IAKhB,SAAS,CAAC,MAAM,EAAE,GAAG;gBAAX,MAAM,EAAE,GAAG,EACrB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM;IAMX,8CAA8C;IAC9C,IAAI,OAAO,eAEV;IAED,SAAS,KAAK,UAAU,WAEvB;IAED,+BAA+B;IAC/B,IAAI,EAAE,WAEL;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,CAE5C;IAED;;;OAGG;IACH,IAAI,IAAI,gBAEP;IAED;;;;;OAKG;IACG,KAAK,CACV,OAAO,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,SAAS,GAAG,WAAW,CAAC,GACtE,OAAO,CAAC,SAAS,CAAC;IAErB;;;;;OAKG;IACG,KAAK,CACV,OAAO,EAAE,gBAAgB,CAAC,uBAAuB,EAAE,SAAS,GAAG,WAAW,CAAC,GAAG,MAAM,GAClF,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAqB1C;;;;;;OAMG;IACI,OAAO,CAAC,MAAM,GAAE,kBAAuB,GAAG,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC;CAY/F;AAED,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,CAC9D,SAAQ,YACR,YAAW,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;IAExC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,EACjD,WAAW,CAAC,EACT,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAC/D,IAAI,GACJ,SAAS,EACZ,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;CAsBnC;AAED,qBAAa,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,YAAY;;gBAGrE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAMnE,+EAA+E;IAC/E,QAAQ,IAAI,IAAI,IAAI,eAAe,CAAC,aAAa,CAAC;IAIlD,mCAAmC;IACnC,IAAI,GAAG,YAEN;IAED;;;;OAIG;IACH,IAAI,MAAM,YAET;IAED,cAAuB,SAAS,IAAI,MAAM,GAAG,SAAS,CAErD;CACD;AAED,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;AAEjG,cAAM,WAAW;IAIf,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IAJf,OAAO,CAAC,QAAQ,CAAW;gBAGlB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,GAAG;IAGpB;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,MAAM,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,EAAE,EAC1D,GAAG,UAAU,EAAE,SAAS,GACtB,OAAO,CAAC,4BAA4B,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAwD1E;AAED,KAAK,eAAe,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE7E,KAAK,4BAA4B,CAAC,QAAQ,SAAS,MAAM,IAAI,cAAc,CAC1E,qBAAqB,CAAC,QAAQ,CAAC,CAC/B,CAAA;AAED,KAAK,qBAAqB,CAAC,SAAS,SAAS,MAAM,IAAI;KACrD,CAAC,IAAI,SAAS,GAAG,WAAW,GAAG,sBAAsB,CAAC,SAAS,CAAC;CACjE,CAAC,SAAS,CAAC,CAAA;AAEZ,KAAK,sBAAsB,CAAC,CAAC,SAAS,MAAM,IAC3C,CAAC,SAAS,GAAG,MAAM,IAAI,SAAS,gBAAgB,IAAI,MAAM,QAAQ,EAAE,GACjE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAA;CAAE,GACnC;IAAE,SAAS,EAAE,CAAC,CAAA;CAAE,CAAA;AAEpB,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,KAAK,CAAA"}
|
|
@@ -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"}
|
|
@@ -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
|
+
}
|
package/dist/utils/respond.d.ts
CHANGED
|
@@ -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> = {
|
|
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;
|
|
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"}
|
package/dist/utils/respond.js
CHANGED
|
@@ -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
|
}
|
package/dist/utils/typing.d.ts
CHANGED
|
@@ -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"}
|