@venturialstd/slack 0.1.22 → 0.1.24
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/dist/slack/clients/slack.client.d.ts +2 -1
- package/dist/slack/clients/slack.client.js.map +1 -1
- package/dist/slack/controllers/slack.webhook.controller.d.ts +12 -0
- package/dist/slack/controllers/slack.webhook.controller.js +60 -0
- package/dist/slack/controllers/slack.webhook.controller.js.map +1 -1
- package/dist/slack/dtos/slack-webhook-event.dto.d.ts +21 -0
- package/dist/slack/dtos/slack-webhook-event.dto.js +139 -0
- package/dist/slack/dtos/slack-webhook-event.dto.js.map +1 -0
- package/dist/slack/index.d.ts +3 -0
- package/dist/slack/index.js +5 -1
- package/dist/slack/index.js.map +1 -1
- package/dist/slack/interfaces/slack-interface.d.ts +12 -0
- package/dist/slack/interfaces/slack-interface.js +3 -0
- package/dist/slack/interfaces/slack-interface.js.map +1 -0
- package/dist/slack/services/slack-channel.service.d.ts +10 -0
- package/dist/slack/services/slack-channel.service.js +59 -0
- package/dist/slack/services/slack-channel.service.js.map +1 -1
- package/dist/slack/services/slack-message.service.d.ts +9 -0
- package/dist/slack/services/slack-message.service.js +50 -0
- package/dist/slack/services/slack-message.service.js.map +1 -1
- package/dist/slack/slack.module.d.ts +2 -1
- package/dist/slack/slack.module.js +6 -1
- package/dist/slack/slack.module.js.map +1 -1
- package/dist/slack/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/slack/constants/slack.constants.d.ts +0 -3
- package/dist/slack/constants/slack.constants.js +0 -7
- package/dist/slack/constants/slack.constants.js.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { AppLoggerConfig } from '../interfaces/slack-interface';
|
|
1
2
|
export declare class SlackClient {
|
|
2
3
|
private logger;
|
|
3
4
|
private botToken?;
|
|
4
|
-
constructor(logger:
|
|
5
|
+
constructor(logger: AppLoggerConfig, botToken?: string | undefined);
|
|
5
6
|
private initializeClient;
|
|
6
7
|
listChannels(): Promise<import("@slack/web-api").ConversationsListResponse>;
|
|
7
8
|
postMessage(channelId: string, text: string): Promise<import("@slack/web-api").ChatPostMessageResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.client.js","sourceRoot":"","sources":["../../../clients/slack.client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,4CAA2C;
|
|
1
|
+
{"version":3,"file":"slack.client.js","sourceRoot":"","sources":["../../../clients/slack.client.ts"],"names":[],"mappings":"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","sourcesContent":["import { Inject, Injectable } from '@nestjs/common';\r\nimport { WebClient } from '@slack/web-api';\r\n\r\nimport { AppLoggerConfig } from '../interfaces/slack-interface';\r\n\r\n@Injectable()\r\nexport class SlackClient {\r\n constructor(\r\n @Inject('SLACK_LOGGER') private logger: AppLoggerConfig,\r\n @Inject('SLACK_BOT_TOKEN') private botToken?: string,\r\n ) {\r\n this.logger.setContext(SlackClient.name);\r\n }\r\n\r\n private async initializeClient(): Promise<WebClient> {\r\n try {\r\n const token = this.botToken;\r\n\r\n if (!token) {\r\n throw new Error('Slack bot token not configured');\r\n }\r\n const client = new WebClient(token);\r\n\r\n const auth = await client.auth.test();\r\n this.logger.log(`Slack connected: ${auth.user} (${auth.team})`);\r\n\r\n return client;\r\n } catch (error) {\r\n this.logger.error('Error connecting slack', error as Error);\r\n throw error;\r\n }\r\n }\r\n\r\n async listChannels() {\r\n const client = await this.initializeClient();\r\n return await client.conversations.list({\r\n types: 'public_channel,private_channel',\r\n });\r\n }\r\n\r\n async postMessage(channelId: string, text: string) {\r\n const client = await this.initializeClient();\r\n return await client.chat.postMessage({\r\n channel: channelId,\r\n text: text,\r\n });\r\n }\r\n\r\n async replyToThread(channelId: string, threadTs: string, text: string) {\r\n const client = await this.initializeClient();\r\n return await client.chat.postMessage({\r\n channel: channelId,\r\n text: text,\r\n thread_ts: threadTs,\r\n });\r\n }\r\n\r\n async addReaction(channelId: string, timestamp: string, reaction: string) {\r\n const client = await this.initializeClient();\r\n return await client.reactions.add({\r\n channel: channelId,\r\n timestamp: timestamp,\r\n name: reaction,\r\n });\r\n }\r\n\r\n async getChannelHistory(channelId: string, limit: number = 10) {\r\n const client = await this.initializeClient();\r\n return await client.conversations.history({\r\n channel: channelId,\r\n limit: limit,\r\n });\r\n }\r\n\r\n async getThreadReplies(channelId: string, threadTs: string) {\r\n const client = await this.initializeClient();\r\n return await client.conversations.replies({\r\n channel: channelId,\r\n ts: threadTs,\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EventEmitter2 } from '@nestjs/event-emitter';
|
|
2
|
+
import { SlackWebhookEventDto } from '../dtos/slack-webhook-event.dto';
|
|
3
|
+
import { AppLoggerConfig } from '../interfaces/slack-interface';
|
|
4
|
+
import { SlackChallengeResponse, SlackOkResponse } from '../types/slack.event.type';
|
|
5
|
+
type SlackWebhookResponse = SlackChallengeResponse | SlackOkResponse;
|
|
6
|
+
export declare class SlackWebhookController {
|
|
7
|
+
private readonly eventEmitter;
|
|
8
|
+
private logger;
|
|
9
|
+
constructor(eventEmitter: EventEmitter2, logger: AppLoggerConfig);
|
|
10
|
+
handleWebhook(data: SlackWebhookEventDto): Promise<SlackWebhookResponse>;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -1,2 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var SlackWebhookController_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.SlackWebhookController = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
19
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
20
|
+
const slack_event_constant_1 = require("../constants/slack.event.constant");
|
|
21
|
+
const slack_webhook_event_dto_1 = require("../dtos/slack-webhook-event.dto");
|
|
22
|
+
let SlackWebhookController = SlackWebhookController_1 = class SlackWebhookController {
|
|
23
|
+
eventEmitter;
|
|
24
|
+
logger;
|
|
25
|
+
constructor(eventEmitter, logger) {
|
|
26
|
+
this.eventEmitter = eventEmitter;
|
|
27
|
+
this.logger = logger;
|
|
28
|
+
this.logger.setContext(SlackWebhookController_1.name);
|
|
29
|
+
}
|
|
30
|
+
async handleWebhook(data) {
|
|
31
|
+
this.logger.log(`Webhook ${data.type}`);
|
|
32
|
+
if (data.type === slack_event_constant_1.SLACK_EVENTS.URL_VERIFICATION) {
|
|
33
|
+
this.logger.log(`Webhook ${data.type}`);
|
|
34
|
+
return { challenge: data.challenge };
|
|
35
|
+
}
|
|
36
|
+
if (data.type === slack_event_constant_1.SLACK_EVENTS.EVENT_CALLBACK && data.event) {
|
|
37
|
+
const eventType = data.event.type;
|
|
38
|
+
this.logger.log(`Event received: ${eventType} from user ${data.event.user}`);
|
|
39
|
+
this.eventEmitter.emit(slack_event_constant_1.EVENT_EMITTER_SLACK_EVENTS.WEBHOOK_INCOMING_MESSAGE, { data: data.event }, { async: true });
|
|
40
|
+
return { ok: true };
|
|
41
|
+
}
|
|
42
|
+
this.logger.warn(`Type of event is not supported: ${data.type}`);
|
|
43
|
+
return { ok: true };
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.SlackWebhookController = SlackWebhookController;
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, common_1.Post)(),
|
|
49
|
+
(0, common_1.HttpCode)(200),
|
|
50
|
+
(0, swagger_1.ApiOperation)({ summary: 'Receive webhooks from Slack' }),
|
|
51
|
+
__param(0, (0, common_1.Body)()),
|
|
52
|
+
__metadata("design:type", Function),
|
|
53
|
+
__metadata("design:paramtypes", [slack_webhook_event_dto_1.SlackWebhookEventDto]),
|
|
54
|
+
__metadata("design:returntype", Promise)
|
|
55
|
+
], SlackWebhookController.prototype, "handleWebhook", null);
|
|
56
|
+
exports.SlackWebhookController = SlackWebhookController = SlackWebhookController_1 = __decorate([
|
|
57
|
+
(0, swagger_1.ApiTags)('general/slack/webhook'),
|
|
58
|
+
(0, common_1.Controller)('general/slack/webhook'),
|
|
59
|
+
__param(1, (0, common_1.Inject)('SLACK_LOGGER')),
|
|
60
|
+
__metadata("design:paramtypes", [event_emitter_1.EventEmitter2, Object])
|
|
61
|
+
], SlackWebhookController);
|
|
2
62
|
//# sourceMappingURL=slack.webhook.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.webhook.controller.js","sourceRoot":"","sources":["../../../controllers/slack.webhook.controller.ts"],"names":[],"mappings":"","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"slack.webhook.controller.js","sourceRoot":"","sources":["../../../controllers/slack.webhook.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA0E;AAC1E,yDAAsD;AACtD,6CAAwD;AAExD,4EAA6F;AAC7F,6EAAuE;AAOhE,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAEd;IACe;IAFlC,YACmB,YAA2B,EACZ,MAAuB;QADtC,iBAAY,GAAZ,YAAY,CAAe;QACZ,WAAM,GAAN,MAAM,CAAiB;QAEvD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAKK,AAAN,KAAK,CAAC,aAAa,CAAS,IAA0B;QACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAY,CAAC,gBAAgB,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAU,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAY,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,SAAS,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAE7E,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,iDAA0B,CAAC,wBAAwB,EACnD,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EACpB,EAAE,KAAK,EAAE,IAAI,EAAE,CAChB,CAAC;YAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AAnCY,wDAAsB;AAW3B;IAHL,IAAA,aAAI,GAAE;IACN,IAAA,iBAAQ,EAAC,GAAG,CAAC;IACb,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAO,8CAAoB;;2DAuBrD;iCAlCU,sBAAsB;IAFlC,IAAA,iBAAO,EAAC,uBAAuB,CAAC;IAChC,IAAA,mBAAU,EAAC,uBAAuB,CAAC;IAI/B,WAAA,IAAA,eAAM,EAAC,cAAc,CAAC,CAAA;qCADQ,6BAAa;GAFnC,sBAAsB,CAmClC","sourcesContent":["import { Body, Controller, HttpCode, Inject, Post } from '@nestjs/common';\r\nimport { EventEmitter2 } from '@nestjs/event-emitter';\r\nimport { ApiOperation, ApiTags } from '@nestjs/swagger';\r\n\r\nimport { EVENT_EMITTER_SLACK_EVENTS, SLACK_EVENTS } from '../constants/slack.event.constant';\r\nimport { SlackWebhookEventDto } from '../dtos/slack-webhook-event.dto';\r\nimport { AppLoggerConfig } from '../interfaces/slack-interface';\r\nimport { SlackChallengeResponse, SlackOkResponse } from '../types/slack.event.type';\r\n\r\ntype SlackWebhookResponse = SlackChallengeResponse | SlackOkResponse;\r\n@ApiTags('general/slack/webhook')\r\n@Controller('general/slack/webhook')\r\nexport class SlackWebhookController {\r\n constructor(\r\n private readonly eventEmitter: EventEmitter2,\r\n @Inject('SLACK_LOGGER') private logger: AppLoggerConfig,\r\n ) {\r\n this.logger.setContext(SlackWebhookController.name);\r\n }\r\n\r\n @Post()\r\n @HttpCode(200)\r\n @ApiOperation({ summary: 'Receive webhooks from Slack' })\r\n async handleWebhook(@Body() data: SlackWebhookEventDto): Promise<SlackWebhookResponse> {\r\n this.logger.log(`Webhook ${data.type}`);\r\n\r\n if (data.type === SLACK_EVENTS.URL_VERIFICATION) {\r\n this.logger.log(`Webhook ${data.type}`);\r\n return { challenge: data.challenge! };\r\n }\r\n\r\n if (data.type === SLACK_EVENTS.EVENT_CALLBACK && data.event) {\r\n const eventType = data.event.type;\r\n this.logger.log(`Event received: ${eventType} from user ${data.event.user}`);\r\n\r\n this.eventEmitter.emit(\r\n EVENT_EMITTER_SLACK_EVENTS.WEBHOOK_INCOMING_MESSAGE,\r\n { data: data.event },\r\n { async: true },\r\n );\r\n\r\n return { ok: true };\r\n }\r\n\r\n this.logger.warn(`Type of event is not supported: ${data.type}`);\r\n return { ok: true };\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare class SlackEventDto {
|
|
2
|
+
type: string;
|
|
3
|
+
user?: string;
|
|
4
|
+
text?: string;
|
|
5
|
+
channel: string;
|
|
6
|
+
ts: string;
|
|
7
|
+
thread_ts?: string;
|
|
8
|
+
bot_id?: string;
|
|
9
|
+
client_msg_id?: string;
|
|
10
|
+
team?: string;
|
|
11
|
+
event_ts?: string;
|
|
12
|
+
channel_type?: string;
|
|
13
|
+
blocks?: unknown[];
|
|
14
|
+
}
|
|
15
|
+
export declare class SlackWebhookEventDto {
|
|
16
|
+
type: string;
|
|
17
|
+
challenge?: string;
|
|
18
|
+
token?: string;
|
|
19
|
+
team_id?: string;
|
|
20
|
+
event?: SlackEventDto;
|
|
21
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SlackWebhookEventDto = exports.SlackEventDto = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const class_validator_1 = require("class-validator");
|
|
16
|
+
class SlackEventDto {
|
|
17
|
+
type;
|
|
18
|
+
user;
|
|
19
|
+
text;
|
|
20
|
+
channel;
|
|
21
|
+
ts;
|
|
22
|
+
thread_ts;
|
|
23
|
+
bot_id;
|
|
24
|
+
client_msg_id;
|
|
25
|
+
team;
|
|
26
|
+
event_ts;
|
|
27
|
+
channel_type;
|
|
28
|
+
blocks;
|
|
29
|
+
}
|
|
30
|
+
exports.SlackEventDto = SlackEventDto;
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, swagger_1.ApiProperty)(),
|
|
33
|
+
(0, class_validator_1.IsString)(),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], SlackEventDto.prototype, "type", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
38
|
+
(0, class_validator_1.IsOptional)(),
|
|
39
|
+
(0, class_validator_1.IsString)(),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], SlackEventDto.prototype, "user", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
44
|
+
(0, class_validator_1.IsOptional)(),
|
|
45
|
+
(0, class_validator_1.IsString)(),
|
|
46
|
+
__metadata("design:type", String)
|
|
47
|
+
], SlackEventDto.prototype, "text", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, swagger_1.ApiProperty)(),
|
|
50
|
+
(0, class_validator_1.IsString)(),
|
|
51
|
+
__metadata("design:type", String)
|
|
52
|
+
], SlackEventDto.prototype, "channel", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, swagger_1.ApiProperty)(),
|
|
55
|
+
(0, class_validator_1.IsString)(),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], SlackEventDto.prototype, "ts", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
60
|
+
(0, class_validator_1.IsOptional)(),
|
|
61
|
+
(0, class_validator_1.IsString)(),
|
|
62
|
+
__metadata("design:type", String)
|
|
63
|
+
], SlackEventDto.prototype, "thread_ts", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
66
|
+
(0, class_validator_1.IsOptional)(),
|
|
67
|
+
(0, class_validator_1.IsString)(),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], SlackEventDto.prototype, "bot_id", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
72
|
+
(0, class_validator_1.IsOptional)(),
|
|
73
|
+
(0, class_validator_1.IsString)(),
|
|
74
|
+
__metadata("design:type", String)
|
|
75
|
+
], SlackEventDto.prototype, "client_msg_id", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
78
|
+
(0, class_validator_1.IsOptional)(),
|
|
79
|
+
(0, class_validator_1.IsString)(),
|
|
80
|
+
__metadata("design:type", String)
|
|
81
|
+
], SlackEventDto.prototype, "team", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
84
|
+
(0, class_validator_1.IsOptional)(),
|
|
85
|
+
(0, class_validator_1.IsString)(),
|
|
86
|
+
__metadata("design:type", String)
|
|
87
|
+
], SlackEventDto.prototype, "event_ts", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
90
|
+
(0, class_validator_1.IsOptional)(),
|
|
91
|
+
(0, class_validator_1.IsString)(),
|
|
92
|
+
__metadata("design:type", String)
|
|
93
|
+
], SlackEventDto.prototype, "channel_type", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
96
|
+
(0, class_validator_1.IsOptional)(),
|
|
97
|
+
(0, class_validator_1.IsArray)(),
|
|
98
|
+
__metadata("design:type", Array)
|
|
99
|
+
], SlackEventDto.prototype, "blocks", void 0);
|
|
100
|
+
class SlackWebhookEventDto {
|
|
101
|
+
type;
|
|
102
|
+
challenge;
|
|
103
|
+
token;
|
|
104
|
+
team_id;
|
|
105
|
+
event;
|
|
106
|
+
}
|
|
107
|
+
exports.SlackWebhookEventDto = SlackWebhookEventDto;
|
|
108
|
+
__decorate([
|
|
109
|
+
(0, swagger_1.ApiProperty)(),
|
|
110
|
+
(0, class_validator_1.IsString)(),
|
|
111
|
+
__metadata("design:type", String)
|
|
112
|
+
], SlackWebhookEventDto.prototype, "type", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
115
|
+
(0, class_validator_1.IsOptional)(),
|
|
116
|
+
(0, class_validator_1.IsString)(),
|
|
117
|
+
__metadata("design:type", String)
|
|
118
|
+
], SlackWebhookEventDto.prototype, "challenge", void 0);
|
|
119
|
+
__decorate([
|
|
120
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
121
|
+
(0, class_validator_1.IsOptional)(),
|
|
122
|
+
(0, class_validator_1.IsString)(),
|
|
123
|
+
__metadata("design:type", String)
|
|
124
|
+
], SlackWebhookEventDto.prototype, "token", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
127
|
+
(0, class_validator_1.IsOptional)(),
|
|
128
|
+
(0, class_validator_1.IsString)(),
|
|
129
|
+
__metadata("design:type", String)
|
|
130
|
+
], SlackWebhookEventDto.prototype, "team_id", void 0);
|
|
131
|
+
__decorate([
|
|
132
|
+
(0, swagger_1.ApiPropertyOptional)(),
|
|
133
|
+
(0, class_validator_1.IsOptional)(),
|
|
134
|
+
(0, class_validator_1.IsObject)(),
|
|
135
|
+
(0, class_validator_1.ValidateNested)(),
|
|
136
|
+
(0, class_transformer_1.Type)(() => SlackEventDto),
|
|
137
|
+
__metadata("design:type", SlackEventDto)
|
|
138
|
+
], SlackWebhookEventDto.prototype, "event", void 0);
|
|
139
|
+
//# sourceMappingURL=slack-webhook-event.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-webhook-event.dto.js","sourceRoot":"","sources":["../../../dtos/slack-webhook-event.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,yDAAyC;AACzC,qDAA0F;AAE1F,MAAa,aAAa;IAGxB,IAAI,CAAS;IAKb,IAAI,CAAU;IAKd,IAAI,CAAU;IAId,OAAO,CAAS;IAIhB,EAAE,CAAS;IAKX,SAAS,CAAU;IAKnB,MAAM,CAAU;IAKhB,aAAa,CAAU;IAKvB,IAAI,CAAU;IAKd,QAAQ,CAAU;IAKlB,YAAY,CAAU;IAKtB,MAAM,CAAa;CACpB;AAzDD,sCAyDC;AAtDC;IAFC,IAAA,qBAAW,GAAE;IACb,IAAA,0BAAQ,GAAE;;2CACE;AAKb;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;2CACG;AAKd;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;2CACG;AAId;IAFC,IAAA,qBAAW,GAAE;IACb,IAAA,0BAAQ,GAAE;;8CACK;AAIhB;IAFC,IAAA,qBAAW,GAAE;IACb,IAAA,0BAAQ,GAAE;;yCACA;AAKX;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;gDACQ;AAKnB;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;6CACK;AAKhB;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;oDACY;AAKvB;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;2CACG;AAKd;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;+CACO;AAKlB;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACW;AAKtB;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;;6CACS;AAGrB,MAAa,oBAAoB;IAG/B,IAAI,CAAS;IAKb,SAAS,CAAU;IAKnB,KAAK,CAAU;IAKf,OAAO,CAAU;IAOjB,KAAK,CAAiB;CACvB;AA1BD,oDA0BC;AAvBC;IAFC,IAAA,qBAAW,GAAE;IACb,IAAA,0BAAQ,GAAE;;kDACE;AAKb;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;uDACQ;AAKnB;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACI;AAKf;IAHC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;qDACM;AAOjB;IALC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,aAAa,CAAC;8BAClB,aAAa;mDAAC","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';\r\nimport { Type } from 'class-transformer';\r\nimport { IsArray, IsObject, IsOptional, IsString, ValidateNested } from 'class-validator';\r\n\r\nexport class SlackEventDto {\r\n @ApiProperty()\r\n @IsString()\r\n type: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n user?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n text?: string;\r\n\r\n @ApiProperty()\r\n @IsString()\r\n channel: string;\r\n\r\n @ApiProperty()\r\n @IsString()\r\n ts: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n thread_ts?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n bot_id?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n client_msg_id?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n team?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n event_ts?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n channel_type?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsArray()\r\n blocks?: unknown[];\r\n}\r\n\r\nexport class SlackWebhookEventDto {\r\n @ApiProperty()\r\n @IsString()\r\n type: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n challenge?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n token?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsString()\r\n team_id?: string;\r\n\r\n @ApiPropertyOptional()\r\n @IsOptional()\r\n @IsObject()\r\n @ValidateNested()\r\n @Type(() => SlackEventDto)\r\n event?: SlackEventDto;\r\n}\r\n"]}
|
package/dist/slack/index.d.ts
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
export { SlackClient } from './clients/slack.client';
|
|
2
|
+
export { SlackConfig } from './interfaces/slack-interface';
|
|
3
|
+
export { SlackChannelService } from './services/slack-channel.service';
|
|
4
|
+
export { SlackMessageService } from './services/slack-message.service';
|
|
2
5
|
export { SlackModule } from './slack.module';
|
package/dist/slack/index.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SlackModule = exports.SlackClient = void 0;
|
|
3
|
+
exports.SlackModule = exports.SlackMessageService = exports.SlackChannelService = exports.SlackClient = void 0;
|
|
4
4
|
var slack_client_1 = require("./clients/slack.client");
|
|
5
5
|
Object.defineProperty(exports, "SlackClient", { enumerable: true, get: function () { return slack_client_1.SlackClient; } });
|
|
6
|
+
var slack_channel_service_1 = require("./services/slack-channel.service");
|
|
7
|
+
Object.defineProperty(exports, "SlackChannelService", { enumerable: true, get: function () { return slack_channel_service_1.SlackChannelService; } });
|
|
8
|
+
var slack_message_service_1 = require("./services/slack-message.service");
|
|
9
|
+
Object.defineProperty(exports, "SlackMessageService", { enumerable: true, get: function () { return slack_message_service_1.SlackMessageService; } });
|
|
6
10
|
var slack_module_1 = require("./slack.module");
|
|
7
11
|
Object.defineProperty(exports, "SlackModule", { enumerable: true, get: function () { return slack_module_1.SlackModule; } });
|
|
8
12
|
//# sourceMappingURL=index.js.map
|
package/dist/slack/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAEpB,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,+CAA6C;AAApC,2GAAA,WAAW,OAAA","sourcesContent":["export { SlackClient } from './clients/slack.client';\r\nexport { SlackConfig } from './interfaces/slack-interface';\r\nexport { SlackChannelService } from './services/slack-channel.service';\r\nexport { SlackMessageService } from './services/slack-message.service';\r\nexport { SlackModule } from './slack.module';\r\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Logger } from 'winston';
|
|
2
|
+
export interface SlackConfig {
|
|
3
|
+
botToken: string;
|
|
4
|
+
}
|
|
5
|
+
export interface AppLoggerConfig {
|
|
6
|
+
setContext(context: string): void;
|
|
7
|
+
error(message: string, meta?: Record<string, any>): Logger;
|
|
8
|
+
warn(message: string, meta?: Record<string, any>): Logger;
|
|
9
|
+
debug(message: string, meta?: Record<string, any>): Logger;
|
|
10
|
+
verbose(message: string, meta?: Record<string, any>): Logger;
|
|
11
|
+
log(message: string, meta?: Record<string, any>): Logger;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-interface.js","sourceRoot":"","sources":["../../../interfaces/slack-interface.ts"],"names":[],"mappings":"","sourcesContent":["import { Logger } from 'winston';\nexport interface SlackConfig {\n botToken: string;\n}\nexport interface AppLoggerConfig {\n setContext(context: string): void;\n error(message: string, meta?: Record<string, any>): Logger;\n warn(message: string, meta?: Record<string, any>): Logger;\n debug(message: string, meta?: Record<string, any>): Logger;\n verbose(message: string, meta?: Record<string, any>): Logger;\n log(message: string, meta?: Record<string, any>): Logger;\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SlackClient } from '../clients/slack.client';
|
|
2
|
+
import { AppLoggerConfig } from '../interfaces/slack-interface';
|
|
3
|
+
export declare class SlackChannelService {
|
|
4
|
+
private readonly slackClient;
|
|
5
|
+
private logger;
|
|
6
|
+
constructor(slackClient: SlackClient, logger: AppLoggerConfig);
|
|
7
|
+
listChannels(): Promise<import("@slack/web-api").ConversationsListResponse>;
|
|
8
|
+
getChannelHistory(channelId: string, limit?: number): Promise<import("@slack/web-api").ConversationsHistoryResponse>;
|
|
9
|
+
getThreadReplies(channelId: string, threadTs: string): Promise<import("@slack/web-api").ConversationsRepliesResponse>;
|
|
10
|
+
}
|
|
@@ -1,2 +1,61 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var SlackChannelService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.SlackChannelService = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const slack_client_1 = require("../clients/slack.client");
|
|
19
|
+
let SlackChannelService = SlackChannelService_1 = class SlackChannelService {
|
|
20
|
+
slackClient;
|
|
21
|
+
logger;
|
|
22
|
+
constructor(slackClient, logger) {
|
|
23
|
+
this.slackClient = slackClient;
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this.logger.setContext(SlackChannelService_1.name);
|
|
26
|
+
}
|
|
27
|
+
async listChannels() {
|
|
28
|
+
try {
|
|
29
|
+
return await this.slackClient.listChannels();
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
this.logger.error('Error listing Slack channels', error);
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async getChannelHistory(channelId, limit = 10) {
|
|
37
|
+
try {
|
|
38
|
+
return await this.slackClient.getChannelHistory(channelId, limit);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
this.logger.error('Error getting Slack channel history', error);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async getThreadReplies(channelId, threadTs) {
|
|
46
|
+
try {
|
|
47
|
+
return await this.slackClient.getThreadReplies(channelId, threadTs);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.logger.error('Error getting Slack thread replies', error);
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
exports.SlackChannelService = SlackChannelService;
|
|
56
|
+
exports.SlackChannelService = SlackChannelService = SlackChannelService_1 = __decorate([
|
|
57
|
+
(0, common_1.Injectable)(),
|
|
58
|
+
__param(1, (0, common_1.Inject)('SLACK_LOGGER')),
|
|
59
|
+
__metadata("design:paramtypes", [slack_client_1.SlackClient, Object])
|
|
60
|
+
], SlackChannelService);
|
|
2
61
|
//# sourceMappingURL=slack-channel.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-channel.service.js","sourceRoot":"","sources":["../../../services/slack-channel.service.ts"],"names":[],"mappings":"","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"slack-channel.service.js","sourceRoot":"","sources":["../../../services/slack-channel.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,0DAAsD;AAI/C,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAEX;IACe;IAFlC,YACmB,WAAwB,EACT,MAAuB;QADtC,gBAAW,GAAX,WAAW,CAAa;QACT,WAAM,GAAN,MAAM,CAAiB;QAEvD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAc,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,QAAgB,EAAE;QAC3D,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAc,CAAC,CAAC;YACzE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,SAAiB,EAAE,QAAgB;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAc,CAAC,CAAC;YACxE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AAjCY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,eAAM,EAAC,cAAc,CAAC,CAAA;qCADO,0BAAW;GAFhC,mBAAmB,CAiC/B","sourcesContent":["import { Inject, Injectable } from '@nestjs/common';\r\n\r\nimport { SlackClient } from '../clients/slack.client';\r\nimport { AppLoggerConfig } from '../interfaces/slack-interface';\r\n\r\n@Injectable()\r\nexport class SlackChannelService {\r\n constructor(\r\n private readonly slackClient: SlackClient,\r\n @Inject('SLACK_LOGGER') private logger: AppLoggerConfig,\r\n ) {\r\n this.logger.setContext(SlackChannelService.name);\r\n }\r\n\r\n async listChannels() {\r\n try {\r\n return await this.slackClient.listChannels();\r\n } catch (error) {\r\n this.logger.error('Error listing Slack channels', error as Error);\r\n throw error;\r\n }\r\n }\r\n async getChannelHistory(channelId: string, limit: number = 10) {\r\n try {\r\n return await this.slackClient.getChannelHistory(channelId, limit);\r\n } catch (error) {\r\n this.logger.error('Error getting Slack channel history', error as Error);\r\n throw error;\r\n }\r\n }\r\n\r\n async getThreadReplies(channelId: string, threadTs: string) {\r\n try {\r\n return await this.slackClient.getThreadReplies(channelId, threadTs);\r\n } catch (error) {\r\n this.logger.error('Error getting Slack thread replies', error as Error);\r\n throw error;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SlackClient } from '../clients/slack.client';
|
|
2
|
+
import { AppLoggerConfig } from '../interfaces/slack-interface';
|
|
3
|
+
export declare class SlackMessageService {
|
|
4
|
+
private readonly slackClient;
|
|
5
|
+
private logger;
|
|
6
|
+
constructor(slackClient: SlackClient, logger: AppLoggerConfig);
|
|
7
|
+
sendMessage(channelId: string, text: string): Promise<import("@slack/web-api").ChatPostMessageResponse>;
|
|
8
|
+
replyToThread(channelId: string, threadTs: string, text: string): Promise<import("@slack/web-api").ChatPostMessageResponse>;
|
|
9
|
+
}
|
|
@@ -1,2 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var SlackMessageService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.SlackMessageService = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const slack_client_1 = require("../clients/slack.client");
|
|
19
|
+
let SlackMessageService = SlackMessageService_1 = class SlackMessageService {
|
|
20
|
+
slackClient;
|
|
21
|
+
logger;
|
|
22
|
+
constructor(slackClient, logger) {
|
|
23
|
+
this.slackClient = slackClient;
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this.logger.setContext(SlackMessageService_1.name);
|
|
26
|
+
}
|
|
27
|
+
async sendMessage(channelId, text) {
|
|
28
|
+
try {
|
|
29
|
+
return await this.slackClient.postMessage(channelId, text);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
this.logger.error('Error sending Slack message', error);
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async replyToThread(channelId, threadTs, text) {
|
|
37
|
+
try {
|
|
38
|
+
return await this.slackClient.replyToThread(channelId, threadTs, text);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
this.logger.error('Error replying to Slack thread', error);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.SlackMessageService = SlackMessageService;
|
|
47
|
+
exports.SlackMessageService = SlackMessageService = SlackMessageService_1 = __decorate([
|
|
48
|
+
(0, common_1.Injectable)(),
|
|
49
|
+
__param(1, (0, common_1.Inject)('SLACK_LOGGER')),
|
|
50
|
+
__metadata("design:paramtypes", [slack_client_1.SlackClient, Object])
|
|
51
|
+
], SlackMessageService);
|
|
2
52
|
//# sourceMappingURL=slack-message.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-message.service.js","sourceRoot":"","sources":["../../../services/slack-message.service.ts"],"names":[],"mappings":"","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"slack-message.service.js","sourceRoot":"","sources":["../../../services/slack-message.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,0DAAsD;AAI/C,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAEX;IACe;IAFlC,YACmB,WAAwB,EACT,MAAuB;QADtC,gBAAW,GAAX,WAAW,CAAa;QACT,WAAM,GAAN,MAAM,CAAiB;QAEvD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,IAAY;QAC/C,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAc,CAAC,CAAC;YACjE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,QAAgB,EAAE,IAAY;QACnE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAc,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AAzBY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,eAAM,EAAC,cAAc,CAAC,CAAA;qCADO,0BAAW;GAFhC,mBAAmB,CAyB/B","sourcesContent":["import { Inject, Injectable } from '@nestjs/common';\r\n\r\nimport { SlackClient } from '../clients/slack.client';\r\nimport { AppLoggerConfig } from '../interfaces/slack-interface';\r\n\r\n@Injectable()\r\nexport class SlackMessageService {\r\n constructor(\r\n private readonly slackClient: SlackClient,\r\n @Inject('SLACK_LOGGER') private logger: AppLoggerConfig,\r\n ) {\r\n this.logger.setContext(SlackMessageService.name);\r\n }\r\n\r\n async sendMessage(channelId: string, text: string) {\r\n try {\r\n return await this.slackClient.postMessage(channelId, text);\r\n } catch (error) {\r\n this.logger.error('Error sending Slack message', error as Error);\r\n throw error;\r\n }\r\n }\r\n\r\n async replyToThread(channelId: string, threadTs: string, text: string) {\r\n try {\r\n return await this.slackClient.replyToThread(channelId, threadTs, text);\r\n } catch (error) {\r\n this.logger.error('Error replying to Slack thread', error as Error);\r\n throw error;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DynamicModule, Type } from '@nestjs/common';
|
|
2
|
+
import { AppLoggerConfig, SlackConfig } from './interfaces/slack-interface';
|
|
2
3
|
export declare class SlackModule {
|
|
3
|
-
static
|
|
4
|
+
static register(loggerClass: Type<AppLoggerConfig>, botToken?: SlackConfig): DynamicModule;
|
|
4
5
|
}
|
|
@@ -10,8 +10,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.SlackModule = void 0;
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
12
|
const slack_client_1 = require("./clients/slack.client");
|
|
13
|
+
const slack_channel_service_1 = require("./services/slack-channel.service");
|
|
14
|
+
const slack_message_service_1 = require("./services/slack-message.service");
|
|
13
15
|
let SlackModule = SlackModule_1 = class SlackModule {
|
|
14
|
-
static
|
|
16
|
+
static register(loggerClass, botToken) {
|
|
15
17
|
return {
|
|
16
18
|
module: SlackModule_1,
|
|
17
19
|
providers: [
|
|
@@ -24,6 +26,9 @@ let SlackModule = SlackModule_1 = class SlackModule {
|
|
|
24
26
|
provide: 'SLACK_BOT_TOKEN',
|
|
25
27
|
useValue: botToken,
|
|
26
28
|
},
|
|
29
|
+
slack_client_1.SlackClient,
|
|
30
|
+
slack_channel_service_1.SlackChannelService,
|
|
31
|
+
slack_message_service_1.SlackMessageService,
|
|
27
32
|
],
|
|
28
33
|
exports: [slack_client_1.SlackClient],
|
|
29
34
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.module.js","sourceRoot":"","sources":["../../slack.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA6D;AAE7D,yDAAqD;
|
|
1
|
+
{"version":3,"file":"slack.module.js","sourceRoot":"","sources":["../../slack.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA6D;AAE7D,yDAAqD;AAErD,4EAAuE;AACvE,4EAAuE;AAGhE,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,WAAkC,EAAE,QAAsB;QACxE,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,SAAS,EAAE;gBACT,0BAAW;gBACX;oBACE,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,WAAW;iBACtB;gBACD;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,QAAQ,EAAE,QAAQ;iBACnB;gBACD,0BAAW;gBACX,2CAAmB;gBACnB,2CAAmB;aACpB;YACD,OAAO,EAAE,CAAC,0BAAW,CAAC;SACvB,CAAC;IACJ,CAAC;CACF,CAAA;AArBY,kCAAW;sBAAX,WAAW;IADvB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,WAAW,CAqBvB","sourcesContent":["import { DynamicModule, Module, Type } from '@nestjs/common';\r\n\r\nimport { SlackClient } from './clients/slack.client';\r\nimport { AppLoggerConfig, SlackConfig } from './interfaces/slack-interface';\r\nimport { SlackChannelService } from './services/slack-channel.service';\r\nimport { SlackMessageService } from './services/slack-message.service';\r\n\r\n@Module({})\r\nexport class SlackModule {\r\n static register(loggerClass: Type<AppLoggerConfig>, botToken?: SlackConfig): DynamicModule {\r\n return {\r\n module: SlackModule,\r\n providers: [\r\n SlackClient,\r\n {\r\n provide: 'SLACK_LOGGER',\r\n useClass: loggerClass,\r\n },\r\n {\r\n provide: 'SLACK_BOT_TOKEN',\r\n useValue: botToken,\r\n },\r\n SlackClient,\r\n SlackChannelService,\r\n SlackMessageService,\r\n ],\r\n exports: [SlackClient],\r\n };\r\n }\r\n}\r\n"]}
|