@marketing-sdk/slack 0.1.1-experimental.0
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/LICENSE +21 -0
- package/dist/client.d.ts +39 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +331 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +170 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/validators.d.ts +12 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +65 -0
- package/dist/validators.js.map +1 -0
- package/package.json +40 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Cody
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { CreateResponse, IMessageProvider, BaseProvider } from '@marketing-sdk/core';
|
|
2
|
+
import { Slack } from './types';
|
|
3
|
+
export declare class SlackClient extends BaseProvider implements IMessageProvider<Slack.MessagePayload> {
|
|
4
|
+
private webClient?;
|
|
5
|
+
private webhookUrl?;
|
|
6
|
+
private defaultChannel?;
|
|
7
|
+
constructor(config: {
|
|
8
|
+
token?: string;
|
|
9
|
+
webhookUrl?: string;
|
|
10
|
+
defaultChannel?: string;
|
|
11
|
+
});
|
|
12
|
+
protected getDefaultHeaders(): Record<string, string>;
|
|
13
|
+
protected getAuthHeaders(): Record<string, string>;
|
|
14
|
+
sendMessage(message: Slack.MessagePayload): Promise<CreateResponse<Slack.MessageResponse>>;
|
|
15
|
+
sendDirectMessage(userId: string, message: Omit<Slack.MessagePayload, 'channel'>): Promise<CreateResponse<Slack.MessageResponse>>;
|
|
16
|
+
scheduleMessage(message: Slack.ScheduledMessagePayload): Promise<CreateResponse<Slack.MessageResponse>>;
|
|
17
|
+
sendWebhookMessage(message: Slack.WebhookMessagePayload): Promise<CreateResponse<{
|
|
18
|
+
ok: boolean;
|
|
19
|
+
}>>;
|
|
20
|
+
createChannel(channel: Slack.ChannelPayload): Promise<CreateResponse<Slack.ChannelResponse>>;
|
|
21
|
+
inviteToChannel(invite: Slack.InvitePayload): Promise<CreateResponse<Slack.ChannelResponse>>;
|
|
22
|
+
getChannels(params?: {
|
|
23
|
+
limit?: number;
|
|
24
|
+
cursor?: string;
|
|
25
|
+
exclude_archived?: boolean;
|
|
26
|
+
types?: string;
|
|
27
|
+
}): Promise<CreateResponse<Slack.ChannelsListResponse>>;
|
|
28
|
+
getChannelMembers(channelId: string, params?: {
|
|
29
|
+
limit?: number;
|
|
30
|
+
cursor?: string;
|
|
31
|
+
}): Promise<CreateResponse<Slack.ChannelMembersResponse>>;
|
|
32
|
+
getUsers(params?: {
|
|
33
|
+
limit?: number;
|
|
34
|
+
cursor?: string;
|
|
35
|
+
}): Promise<CreateResponse<Slack.UsersListResponse>>;
|
|
36
|
+
getUserByEmail(email: string): Promise<CreateResponse<Slack.UserResponse>>;
|
|
37
|
+
private normalizeSlackError;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAA4B,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,qBAAa,WAAY,SAAQ,YAAa,YAAW,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC;IAC7F,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAC,CAAS;gBAEpB,MAAM,EAAE;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;IAqBD,SAAS,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMrD,SAAS,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIrC,WAAW,CACtB,OAAO,EAAE,KAAK,CAAC,cAAc,GAC5B,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAsCpC,iBAAiB,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAgCpC,eAAe,CAC1B,OAAO,EAAE,KAAK,CAAC,uBAAuB,GACrC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAsCpC,kBAAkB,CAC7B,OAAO,EAAE,KAAK,CAAC,qBAAqB,GACnC,OAAO,CAAC,cAAc,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAsB9B,aAAa,CACxB,OAAO,EAAE,KAAK,CAAC,cAAc,GAC5B,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAoCpC,eAAe,CAC1B,MAAM,EAAE,KAAK,CAAC,aAAa,GAC1B,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IA4BpC,WAAW,CAAC,MAAM,CAAC,EAAE;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IA4B1C,iBAAiB,CAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IA6B3C,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IA0BvC,cAAc,CACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAuC9C,OAAO,CAAC,mBAAmB;CAsD5B"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlackClient = void 0;
|
|
4
|
+
const web_api_1 = require("@slack/web-api");
|
|
5
|
+
const core_1 = require("@marketing-sdk/core");
|
|
6
|
+
const validators_1 = require("./validators");
|
|
7
|
+
class SlackClient extends core_1.BaseProvider {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
super({
|
|
10
|
+
baseURL: 'https://slack.com/api',
|
|
11
|
+
timeout: 30000,
|
|
12
|
+
});
|
|
13
|
+
if (config.token) {
|
|
14
|
+
this.webClient = new web_api_1.WebClient(config.token);
|
|
15
|
+
}
|
|
16
|
+
this.webhookUrl = config.webhookUrl;
|
|
17
|
+
this.defaultChannel = config.defaultChannel;
|
|
18
|
+
if (!config.token && !config.webhookUrl) {
|
|
19
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Either token or webhookUrl must be provided');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
getDefaultHeaders() {
|
|
23
|
+
return {
|
|
24
|
+
'Content-Type': 'application/json',
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
getAuthHeaders() {
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
async sendMessage(message) {
|
|
31
|
+
validators_1.SlackValidators.validateMessagePayload(message);
|
|
32
|
+
if (!this.webClient) {
|
|
33
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Bot token required for sendMessage. Use sendWebhookMessage for webhook-only usage.');
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const args = {
|
|
37
|
+
channel: message.channel || this.defaultChannel,
|
|
38
|
+
text: message.text,
|
|
39
|
+
};
|
|
40
|
+
if (message.blocks)
|
|
41
|
+
args.blocks = message.blocks;
|
|
42
|
+
if (message.thread_ts)
|
|
43
|
+
args.thread_ts = message.thread_ts;
|
|
44
|
+
if (message.reply_broadcast !== undefined)
|
|
45
|
+
args.reply_broadcast = message.reply_broadcast;
|
|
46
|
+
if (message.unfurl_links !== undefined)
|
|
47
|
+
args.unfurl_links = message.unfurl_links;
|
|
48
|
+
if (message.unfurl_media !== undefined)
|
|
49
|
+
args.unfurl_media = message.unfurl_media;
|
|
50
|
+
if (message.mrkdwn !== undefined)
|
|
51
|
+
args.mrkdwn = message.mrkdwn;
|
|
52
|
+
if (message.attachments)
|
|
53
|
+
args.attachments = message.attachments;
|
|
54
|
+
const response = await this.webClient.chat.postMessage(args);
|
|
55
|
+
return {
|
|
56
|
+
data: response,
|
|
57
|
+
error: null,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return {
|
|
62
|
+
data: null,
|
|
63
|
+
error: this.normalizeSlackError(error, 'Send Message'),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async sendDirectMessage(userId, message) {
|
|
68
|
+
if (!this.webClient) {
|
|
69
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Bot token required for sendDirectMessage');
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const openResponse = await this.webClient.conversations.open({
|
|
73
|
+
users: userId,
|
|
74
|
+
});
|
|
75
|
+
if (!openResponse.ok || !openResponse.channel?.id) {
|
|
76
|
+
throw new core_1.ProviderError(core_1.ErrorType.UNKNOWN, 'Failed to open direct message channel');
|
|
77
|
+
}
|
|
78
|
+
return this.sendMessage({
|
|
79
|
+
...message,
|
|
80
|
+
channel: openResponse.channel.id,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
return {
|
|
85
|
+
data: null,
|
|
86
|
+
error: this.normalizeSlackError(error, 'Send Direct Message'),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async scheduleMessage(message) {
|
|
91
|
+
validators_1.SlackValidators.validateMessagePayload(message);
|
|
92
|
+
if (!this.webClient) {
|
|
93
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Bot token required for scheduleMessage');
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const args = {
|
|
97
|
+
channel: message.channel || this.defaultChannel,
|
|
98
|
+
text: message.text,
|
|
99
|
+
post_at: message.post_at,
|
|
100
|
+
};
|
|
101
|
+
if (message.blocks)
|
|
102
|
+
args.blocks = message.blocks;
|
|
103
|
+
if (message.thread_ts)
|
|
104
|
+
args.thread_ts = message.thread_ts;
|
|
105
|
+
if (message.reply_broadcast !== undefined)
|
|
106
|
+
args.reply_broadcast = message.reply_broadcast;
|
|
107
|
+
if (message.unfurl_links !== undefined)
|
|
108
|
+
args.unfurl_links = message.unfurl_links;
|
|
109
|
+
if (message.unfurl_media !== undefined)
|
|
110
|
+
args.unfurl_media = message.unfurl_media;
|
|
111
|
+
if (message.attachments)
|
|
112
|
+
args.attachments = message.attachments;
|
|
113
|
+
const response = await this.webClient.chat.scheduleMessage(args);
|
|
114
|
+
return {
|
|
115
|
+
data: response,
|
|
116
|
+
error: null,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
return {
|
|
121
|
+
data: null,
|
|
122
|
+
error: this.normalizeSlackError(error, 'Schedule Message'),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async sendWebhookMessage(message) {
|
|
127
|
+
if (!this.webhookUrl) {
|
|
128
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Webhook URL required for sendWebhookMessage');
|
|
129
|
+
}
|
|
130
|
+
if (!message.text && !message.blocks) {
|
|
131
|
+
throw new core_1.ProviderError(core_1.ErrorType.VALIDATION, 'Either text or blocks must be provided');
|
|
132
|
+
}
|
|
133
|
+
return this.makeRequest({
|
|
134
|
+
url: this.webhookUrl,
|
|
135
|
+
method: 'POST',
|
|
136
|
+
body: message,
|
|
137
|
+
}, 'Send Webhook Message');
|
|
138
|
+
}
|
|
139
|
+
async createChannel(channel) {
|
|
140
|
+
validators_1.SlackValidators.validateChannelPayload(channel);
|
|
141
|
+
if (!this.webClient) {
|
|
142
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Bot token required for createChannel');
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
const response = await this.webClient.conversations.create({
|
|
146
|
+
name: channel.name,
|
|
147
|
+
is_private: channel.is_private,
|
|
148
|
+
team_id: channel.team_id,
|
|
149
|
+
});
|
|
150
|
+
if (response.ok && response.channel?.id && channel.description) {
|
|
151
|
+
await this.webClient.conversations.setPurpose({
|
|
152
|
+
channel: response.channel.id,
|
|
153
|
+
purpose: channel.description,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
data: response,
|
|
158
|
+
error: null,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
return {
|
|
163
|
+
data: null,
|
|
164
|
+
error: this.normalizeSlackError(error, 'Create Channel'),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async inviteToChannel(invite) {
|
|
169
|
+
if (!this.webClient) {
|
|
170
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Bot token required for inviteToChannel');
|
|
171
|
+
}
|
|
172
|
+
try {
|
|
173
|
+
const userIds = Array.isArray(invite.users) ? invite.users : [invite.users];
|
|
174
|
+
const response = await this.webClient.conversations.invite({
|
|
175
|
+
channel: invite.channel,
|
|
176
|
+
users: userIds.join(','),
|
|
177
|
+
});
|
|
178
|
+
return {
|
|
179
|
+
data: response,
|
|
180
|
+
error: null,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
return {
|
|
185
|
+
data: null,
|
|
186
|
+
error: this.normalizeSlackError(error, 'Invite to Channel'),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async getChannels(params) {
|
|
191
|
+
if (!this.webClient) {
|
|
192
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Bot token required for getChannels');
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
const response = await this.webClient.conversations.list({
|
|
196
|
+
limit: params?.limit,
|
|
197
|
+
cursor: params?.cursor,
|
|
198
|
+
exclude_archived: params?.exclude_archived,
|
|
199
|
+
types: params?.types || 'public_channel,private_channel',
|
|
200
|
+
});
|
|
201
|
+
return {
|
|
202
|
+
data: response,
|
|
203
|
+
error: null,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return {
|
|
208
|
+
data: null,
|
|
209
|
+
error: this.normalizeSlackError(error, 'Get Channels'),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
async getChannelMembers(channelId, params) {
|
|
214
|
+
validators_1.SlackValidators.validateChannelId(channelId);
|
|
215
|
+
if (!this.webClient) {
|
|
216
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Bot token required for getChannelMembers');
|
|
217
|
+
}
|
|
218
|
+
try {
|
|
219
|
+
const response = await this.webClient.conversations.members({
|
|
220
|
+
channel: channelId,
|
|
221
|
+
limit: params?.limit,
|
|
222
|
+
cursor: params?.cursor,
|
|
223
|
+
});
|
|
224
|
+
return {
|
|
225
|
+
data: response,
|
|
226
|
+
error: null,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
return {
|
|
231
|
+
data: null,
|
|
232
|
+
error: this.normalizeSlackError(error, 'Get Channel Members'),
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async getUsers(params) {
|
|
237
|
+
if (!this.webClient) {
|
|
238
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Bot token required for getUsers');
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
const response = await this.webClient.users.list({
|
|
242
|
+
limit: params?.limit,
|
|
243
|
+
cursor: params?.cursor,
|
|
244
|
+
});
|
|
245
|
+
return {
|
|
246
|
+
data: response,
|
|
247
|
+
error: null,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
return {
|
|
252
|
+
data: null,
|
|
253
|
+
error: this.normalizeSlackError(error, 'Get Users'),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
async getUserByEmail(email) {
|
|
258
|
+
if (!email || !email.includes('@')) {
|
|
259
|
+
throw new core_1.ProviderError(core_1.ErrorType.VALIDATION, 'Invalid email format');
|
|
260
|
+
}
|
|
261
|
+
if (!this.webClient) {
|
|
262
|
+
throw new core_1.ProviderError(core_1.ErrorType.AUTHENTICATION, 'Bot token required for getUserByEmail');
|
|
263
|
+
}
|
|
264
|
+
try {
|
|
265
|
+
const response = await this.webClient.users.lookupByEmail({
|
|
266
|
+
email,
|
|
267
|
+
});
|
|
268
|
+
if (!response.ok || !response.user) {
|
|
269
|
+
throw new core_1.ProviderError(core_1.ErrorType.NOT_FOUND, `User not found with email: ${email}`);
|
|
270
|
+
}
|
|
271
|
+
return {
|
|
272
|
+
data: response.user,
|
|
273
|
+
error: null,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
return {
|
|
278
|
+
data: null,
|
|
279
|
+
error: this.normalizeSlackError(error, 'Get User by Email'),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
normalizeSlackError(error, operation) {
|
|
284
|
+
if (error.data?.error) {
|
|
285
|
+
const slackError = error.data.error;
|
|
286
|
+
let type;
|
|
287
|
+
let message;
|
|
288
|
+
switch (slackError) {
|
|
289
|
+
case 'invalid_auth':
|
|
290
|
+
case 'account_inactive':
|
|
291
|
+
case 'token_revoked':
|
|
292
|
+
case 'not_authed':
|
|
293
|
+
type = core_1.ErrorType.AUTHENTICATION;
|
|
294
|
+
message = 'Authentication failed';
|
|
295
|
+
break;
|
|
296
|
+
case 'channel_not_found':
|
|
297
|
+
case 'user_not_found':
|
|
298
|
+
case 'not_in_channel':
|
|
299
|
+
type = core_1.ErrorType.NOT_FOUND;
|
|
300
|
+
message = `Resource not found: ${slackError}`;
|
|
301
|
+
break;
|
|
302
|
+
case 'rate_limited':
|
|
303
|
+
type = core_1.ErrorType.RATE_LIMIT;
|
|
304
|
+
message = 'Rate limit exceeded';
|
|
305
|
+
break;
|
|
306
|
+
case 'missing_scope':
|
|
307
|
+
case 'no_permission':
|
|
308
|
+
type = core_1.ErrorType.AUTHENTICATION;
|
|
309
|
+
message = 'Insufficient permissions';
|
|
310
|
+
break;
|
|
311
|
+
default:
|
|
312
|
+
type = core_1.ErrorType.UNKNOWN;
|
|
313
|
+
message = slackError;
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
type,
|
|
317
|
+
message: `${operation}: ${message}`,
|
|
318
|
+
details: error.data,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
const baseError = this.normalizeError(error, operation);
|
|
322
|
+
return {
|
|
323
|
+
type: baseError.type,
|
|
324
|
+
message: baseError.message,
|
|
325
|
+
statusCode: baseError.statusCode,
|
|
326
|
+
details: baseError.details,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
exports.SlackClient = SlackClient;
|
|
331
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidationError = exports.SlackValidators = exports.SlackClient = void 0;
|
|
4
|
+
var client_1 = require("./client");
|
|
5
|
+
Object.defineProperty(exports, "SlackClient", { enumerable: true, get: function () { return client_1.SlackClient; } });
|
|
6
|
+
var validators_1 = require("./validators");
|
|
7
|
+
Object.defineProperty(exports, "SlackValidators", { enumerable: true, get: function () { return validators_1.SlackValidators; } });
|
|
8
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return validators_1.ValidationError; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AAEpB,2CAAgE;AAAvD,6GAAA,eAAe,OAAA;AAAE,6GAAA,eAAe,OAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
export declare namespace Slack {
|
|
2
|
+
type MessagePayload = {
|
|
3
|
+
channel: string;
|
|
4
|
+
text?: string;
|
|
5
|
+
blocks?: Array<any>;
|
|
6
|
+
thread_ts?: string;
|
|
7
|
+
reply_broadcast?: boolean;
|
|
8
|
+
unfurl_links?: boolean;
|
|
9
|
+
unfurl_media?: boolean;
|
|
10
|
+
mrkdwn?: boolean;
|
|
11
|
+
attachments?: Array<{
|
|
12
|
+
color?: string;
|
|
13
|
+
pretext?: string;
|
|
14
|
+
title?: string;
|
|
15
|
+
title_link?: string;
|
|
16
|
+
text?: string;
|
|
17
|
+
fields?: Array<{
|
|
18
|
+
title: string;
|
|
19
|
+
value: string;
|
|
20
|
+
short?: boolean;
|
|
21
|
+
}>;
|
|
22
|
+
footer?: string;
|
|
23
|
+
footer_icon?: string;
|
|
24
|
+
ts?: number;
|
|
25
|
+
}>;
|
|
26
|
+
};
|
|
27
|
+
type ScheduledMessagePayload = MessagePayload & {
|
|
28
|
+
post_at: number;
|
|
29
|
+
};
|
|
30
|
+
type WebhookMessagePayload = {
|
|
31
|
+
text?: string;
|
|
32
|
+
blocks?: Array<any>;
|
|
33
|
+
username?: string;
|
|
34
|
+
icon_emoji?: string;
|
|
35
|
+
icon_url?: string;
|
|
36
|
+
channel?: string;
|
|
37
|
+
};
|
|
38
|
+
type ChannelPayload = {
|
|
39
|
+
name: string;
|
|
40
|
+
is_private?: boolean;
|
|
41
|
+
team_id?: string;
|
|
42
|
+
description?: string;
|
|
43
|
+
};
|
|
44
|
+
type InvitePayload = {
|
|
45
|
+
channel: string;
|
|
46
|
+
users: string | string[];
|
|
47
|
+
};
|
|
48
|
+
type MessageResponse = {
|
|
49
|
+
ok: boolean;
|
|
50
|
+
channel: string;
|
|
51
|
+
ts: string;
|
|
52
|
+
message: {
|
|
53
|
+
type: string;
|
|
54
|
+
text: string;
|
|
55
|
+
user: string;
|
|
56
|
+
ts: string;
|
|
57
|
+
team: string;
|
|
58
|
+
blocks?: Array<any>;
|
|
59
|
+
attachments?: Array<any>;
|
|
60
|
+
};
|
|
61
|
+
scheduled_message_id?: string;
|
|
62
|
+
};
|
|
63
|
+
type ChannelResponse = {
|
|
64
|
+
ok: boolean;
|
|
65
|
+
channel: {
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
is_channel: boolean;
|
|
69
|
+
is_group: boolean;
|
|
70
|
+
is_im: boolean;
|
|
71
|
+
is_mpim: boolean;
|
|
72
|
+
is_private: boolean;
|
|
73
|
+
created: number;
|
|
74
|
+
is_archived: boolean;
|
|
75
|
+
is_general: boolean;
|
|
76
|
+
unlinked: number;
|
|
77
|
+
name_normalized: string;
|
|
78
|
+
is_shared: boolean;
|
|
79
|
+
is_org_shared: boolean;
|
|
80
|
+
is_member: boolean;
|
|
81
|
+
is_pending_ext_shared: boolean;
|
|
82
|
+
pending_shared: Array<any>;
|
|
83
|
+
context_team_id: string;
|
|
84
|
+
updated: number;
|
|
85
|
+
creator: string;
|
|
86
|
+
topic?: {
|
|
87
|
+
value: string;
|
|
88
|
+
creator: string;
|
|
89
|
+
last_set: number;
|
|
90
|
+
};
|
|
91
|
+
purpose?: {
|
|
92
|
+
value: string;
|
|
93
|
+
creator: string;
|
|
94
|
+
last_set: number;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
type ChannelsListResponse = {
|
|
99
|
+
ok: boolean;
|
|
100
|
+
channels: Array<{
|
|
101
|
+
id: string;
|
|
102
|
+
name: string;
|
|
103
|
+
is_channel: boolean;
|
|
104
|
+
is_group: boolean;
|
|
105
|
+
is_im: boolean;
|
|
106
|
+
is_mpim: boolean;
|
|
107
|
+
is_private: boolean;
|
|
108
|
+
created: number;
|
|
109
|
+
is_archived: boolean;
|
|
110
|
+
is_general: boolean;
|
|
111
|
+
is_shared: boolean;
|
|
112
|
+
is_org_shared: boolean;
|
|
113
|
+
is_member: boolean;
|
|
114
|
+
num_members: number;
|
|
115
|
+
}>;
|
|
116
|
+
response_metadata?: {
|
|
117
|
+
next_cursor: string;
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
type UserResponse = {
|
|
121
|
+
id: string;
|
|
122
|
+
team_id: string;
|
|
123
|
+
name: string;
|
|
124
|
+
real_name: string;
|
|
125
|
+
profile: {
|
|
126
|
+
email?: string;
|
|
127
|
+
first_name?: string;
|
|
128
|
+
last_name?: string;
|
|
129
|
+
display_name?: string;
|
|
130
|
+
phone?: string;
|
|
131
|
+
title?: string;
|
|
132
|
+
avatar_hash: string;
|
|
133
|
+
image_24: string;
|
|
134
|
+
image_32: string;
|
|
135
|
+
image_48: string;
|
|
136
|
+
image_72: string;
|
|
137
|
+
image_192: string;
|
|
138
|
+
image_512: string;
|
|
139
|
+
};
|
|
140
|
+
is_admin: boolean;
|
|
141
|
+
is_owner: boolean;
|
|
142
|
+
is_primary_owner: boolean;
|
|
143
|
+
is_restricted: boolean;
|
|
144
|
+
is_ultra_restricted: boolean;
|
|
145
|
+
is_bot: boolean;
|
|
146
|
+
is_app_user: boolean;
|
|
147
|
+
updated: number;
|
|
148
|
+
has_2fa: boolean;
|
|
149
|
+
};
|
|
150
|
+
type UsersListResponse = {
|
|
151
|
+
ok: boolean;
|
|
152
|
+
members: UserResponse[];
|
|
153
|
+
cache_ts: number;
|
|
154
|
+
response_metadata?: {
|
|
155
|
+
next_cursor: string;
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
type ChannelMembersResponse = {
|
|
159
|
+
ok: boolean;
|
|
160
|
+
members: string[];
|
|
161
|
+
response_metadata?: {
|
|
162
|
+
next_cursor: string;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
type ErrorResponse = {
|
|
166
|
+
ok: false;
|
|
167
|
+
error: string;
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ValidationError } from '@marketing-sdk/core';
|
|
2
|
+
import { Slack } from './types';
|
|
3
|
+
export { ValidationError };
|
|
4
|
+
export declare class SlackValidators {
|
|
5
|
+
static validateMessagePayload(payload: Slack.MessagePayload | Slack.ScheduledMessagePayload): void;
|
|
6
|
+
static validateChannelId(channelId: string): void;
|
|
7
|
+
static validateUserId(userId: string): void;
|
|
8
|
+
static validateWebhookUrl(url: string): void;
|
|
9
|
+
static validateChannelPayload(payload: Slack.ChannelPayload): void;
|
|
10
|
+
static validateEmail(email: string): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,qBAAa,eAAe;IAC1B,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,uBAAuB,GAAG,IAAI;IAoBlG,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAUjD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU3C,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAc5C,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI;IAUlE,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAK1C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlackValidators = exports.ValidationError = void 0;
|
|
4
|
+
const core_1 = require("@marketing-sdk/core");
|
|
5
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return core_1.ValidationError; } });
|
|
6
|
+
class SlackValidators {
|
|
7
|
+
static validateMessagePayload(payload) {
|
|
8
|
+
if (!payload.text && (!payload.blocks || payload.blocks.length === 0)) {
|
|
9
|
+
throw new core_1.ValidationError('text/blocks', 'Either text or blocks must be provided');
|
|
10
|
+
}
|
|
11
|
+
if (payload.channel) {
|
|
12
|
+
SlackValidators.validateChannelId(payload.channel);
|
|
13
|
+
}
|
|
14
|
+
if ('post_at' in payload) {
|
|
15
|
+
if (!Number.isInteger(payload.post_at) || payload.post_at < Date.now() / 1000) {
|
|
16
|
+
throw new core_1.ValidationError('post_at', 'post_at must be a Unix timestamp in the future');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (payload.thread_ts && !/^\d+\.\d+$/.test(payload.thread_ts)) {
|
|
20
|
+
throw new core_1.ValidationError('thread_ts', 'Invalid thread timestamp format');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static validateChannelId(channelId) {
|
|
24
|
+
if (!channelId || channelId.trim() === '') {
|
|
25
|
+
throw new core_1.ValidationError('channel', 'Channel ID is required');
|
|
26
|
+
}
|
|
27
|
+
if (!/^[CGD][A-Z0-9]+$/.test(channelId) && !/^[#@].+$/.test(channelId)) {
|
|
28
|
+
throw new core_1.ValidationError('channel', 'Invalid channel ID format');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
static validateUserId(userId) {
|
|
32
|
+
if (!userId || userId.trim() === '') {
|
|
33
|
+
throw new core_1.ValidationError('userId', 'User ID is required');
|
|
34
|
+
}
|
|
35
|
+
if (!/^[UW][A-Z0-9]+$/.test(userId)) {
|
|
36
|
+
throw new core_1.ValidationError('userId', 'Invalid user ID format');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
static validateWebhookUrl(url) {
|
|
40
|
+
if (!url || url.trim() === '') {
|
|
41
|
+
throw new core_1.ValidationError('webhookUrl', 'Webhook URL is required');
|
|
42
|
+
}
|
|
43
|
+
if (!core_1.Validators.validateUrl(url)) {
|
|
44
|
+
throw new core_1.ValidationError('webhookUrl', 'Invalid webhook URL format');
|
|
45
|
+
}
|
|
46
|
+
if (!url.includes('hooks.slack.com')) {
|
|
47
|
+
throw new core_1.ValidationError('webhookUrl', 'URL must be a valid Slack webhook URL');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
static validateChannelPayload(payload) {
|
|
51
|
+
if (!payload.name || payload.name.trim() === '') {
|
|
52
|
+
throw new core_1.ValidationError('name', 'Channel name is required');
|
|
53
|
+
}
|
|
54
|
+
if (!/^[a-z0-9][a-z0-9_-]{0,20}$/.test(payload.name)) {
|
|
55
|
+
throw new core_1.ValidationError('name', 'Channel name must be lowercase, 21 characters or less, and can only contain letters, numbers, hyphens, and underscores');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
static validateEmail(email) {
|
|
59
|
+
if (!email || !core_1.Validators.validateEmail(email)) {
|
|
60
|
+
throw new core_1.ValidationError('email', 'Invalid email format');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.SlackValidators = SlackValidators;
|
|
65
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@marketing-sdk/slack",
|
|
3
|
+
"version": "0.1.1-experimental.0",
|
|
4
|
+
"description": "Slack provider for marketing-sdk",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@slack/web-api": "^7.0.0",
|
|
22
|
+
"@marketing-sdk/core": "0.1.1-experimental.0"
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"@marketing-sdk/core": ">=0.1.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"typescript": "^5.3.0",
|
|
29
|
+
"jest": "^29.7.0",
|
|
30
|
+
"ts-jest": "^29.1.0",
|
|
31
|
+
"@types/jest": "^29.5.0",
|
|
32
|
+
"@types/node": "^20.0.0"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc",
|
|
36
|
+
"test": "jest",
|
|
37
|
+
"test:coverage": "jest --coverage",
|
|
38
|
+
"typecheck": "tsc --noEmit"
|
|
39
|
+
}
|
|
40
|
+
}
|