@urugus/slack-cli 0.2.6 → 0.2.8
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/commands/history-display.d.ts +1 -1
- package/dist/commands/history-display.d.ts.map +1 -1
- package/dist/commands/history-display.js +8 -28
- package/dist/commands/history-display.js.map +1 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +15 -8
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +5 -18
- package/dist/commands/send.js.map +1 -1
- package/dist/types/commands.d.ts +1 -0
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/utils/formatters/history-formatters.d.ts +8 -0
- package/dist/utils/formatters/history-formatters.d.ts.map +1 -0
- package/dist/utils/formatters/history-formatters.js +105 -0
- package/dist/utils/formatters/history-formatters.js.map +1 -0
- package/dist/utils/profile-config.d.ts.map +1 -1
- package/dist/utils/profile-config.js +2 -6
- package/dist/utils/profile-config.js.map +1 -1
- package/dist/utils/slack-operations/channel-operations.d.ts +9 -0
- package/dist/utils/slack-operations/channel-operations.d.ts.map +1 -1
- package/dist/utils/slack-operations/channel-operations.js +77 -50
- package/dist/utils/slack-operations/channel-operations.js.map +1 -1
- package/dist/utils/token-utils.d.ts +7 -0
- package/dist/utils/token-utils.d.ts.map +1 -0
- package/dist/utils/token-utils.js +18 -0
- package/dist/utils/token-utils.js.map +1 -0
- package/dist/utils/validators.d.ts +83 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +187 -0
- package/dist/utils/validators.js.map +1 -0
- package/package.json +1 -1
- package/src/commands/history-display.ts +9 -28
- package/src/commands/history.ts +25 -13
- package/src/commands/send.ts +8 -19
- package/src/types/commands.ts +1 -0
- package/src/utils/formatters/history-formatters.ts +123 -0
- package/src/utils/profile-config.ts +3 -15
- package/src/utils/slack-operations/channel-operations.ts +91 -54
- package/src/utils/token-utils.ts +17 -0
- package/src/utils/validators.ts +225 -0
- package/tests/commands/history.test.ts +115 -0
- package/tests/utils/option-parsers.test.ts +173 -0
- package/tests/utils/profile-config.test.ts +282 -0
- package/tests/utils/slack-operations/channel-operations-refactored.test.ts +179 -0
- package/tests/utils/token-utils.test.ts +33 -0
- package/tests/utils/validators.test.ts +307 -0
- package/src/utils/profile-config-refactored.ts +0 -161
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Message } from '../utils/slack-api-client';
|
|
2
|
-
export declare function displayHistoryResults(messages: Message[], users: Map<string, string>, channelName: string): void;
|
|
2
|
+
export declare function displayHistoryResults(messages: Message[], users: Map<string, string>, channelName: string, format?: string): void;
|
|
3
3
|
//# sourceMappingURL=history-display.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-display.d.ts","sourceRoot":"","sources":["../../src/commands/history-display.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"history-display.d.ts","sourceRoot":"","sources":["../../src/commands/history-display.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGpD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,SAAU,GACf,IAAI,CAUN"}
|
|
@@ -1,35 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.displayHistoryResults = displayHistoryResults;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const format_utils_1 = require("../utils/format-utils");
|
|
10
|
-
function displayHistoryResults(messages, users, channelName) {
|
|
11
|
-
if (messages.length === 0) {
|
|
12
|
-
console.log(chalk_1.default.yellow('No messages found in the specified channel.'));
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
console.log(chalk_1.default.bold(`\nMessage History for #${channelName}:\n`));
|
|
4
|
+
const history_formatters_1 = require("../utils/formatters/history-formatters");
|
|
5
|
+
function displayHistoryResults(messages, users, channelName, format = 'table') {
|
|
16
6
|
// Display messages in reverse order (oldest first)
|
|
17
|
-
messages.reverse()
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
else if (message.bot_id) {
|
|
24
|
-
author = 'Bot';
|
|
25
|
-
}
|
|
26
|
-
console.log(chalk_1.default.gray(`[${timestamp}]`) + ' ' + chalk_1.default.cyan(author));
|
|
27
|
-
if (message.text) {
|
|
28
|
-
const formattedText = (0, format_utils_1.formatMessageWithMentions)(message.text, users);
|
|
29
|
-
console.log(formattedText);
|
|
30
|
-
}
|
|
31
|
-
console.log(''); // Empty line between messages
|
|
7
|
+
const orderedMessages = [...messages].reverse();
|
|
8
|
+
const formatter = (0, history_formatters_1.createHistoryFormatter)(format);
|
|
9
|
+
formatter.format({
|
|
10
|
+
channelName,
|
|
11
|
+
messages: orderedMessages,
|
|
12
|
+
users,
|
|
32
13
|
});
|
|
33
|
-
console.log(chalk_1.default.green(`✓ Displayed ${messages.length} message(s)`));
|
|
34
14
|
}
|
|
35
15
|
//# sourceMappingURL=history-display.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-display.js","sourceRoot":"","sources":["../../src/commands/history-display.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"history-display.js","sourceRoot":"","sources":["../../src/commands/history-display.ts"],"names":[],"mappings":";;AAGA,sDAeC;AAjBD,+EAAgF;AAEhF,SAAgB,qBAAqB,CACnC,QAAmB,EACnB,KAA0B,EAC1B,WAAmB,EACnB,MAAM,GAAG,OAAO;IAEhB,mDAAmD;IACnD,MAAM,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAA,2CAAsB,EAAC,MAAM,CAAC,CAAC;IACjD,SAAS,CAAC,MAAM,CAAC;QACf,WAAW;QACX,QAAQ,EAAE,eAAe;QACzB,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,mBAAmB,IAAI,OAAO,CAgD7C"}
|
package/dist/commands/history.js
CHANGED
|
@@ -5,6 +5,9 @@ const commander_1 = require("commander");
|
|
|
5
5
|
const command_wrapper_1 = require("../utils/command-wrapper");
|
|
6
6
|
const client_factory_1 = require("../utils/client-factory");
|
|
7
7
|
const constants_1 = require("../utils/constants");
|
|
8
|
+
const option_parsers_1 = require("../utils/option-parsers");
|
|
9
|
+
const validators_1 = require("../utils/validators");
|
|
10
|
+
const option_parsers_2 = require("../utils/option-parsers");
|
|
8
11
|
const history_validators_1 = require("./history-validators");
|
|
9
12
|
const history_display_1 = require("./history-display");
|
|
10
13
|
function setupHistoryCommand() {
|
|
@@ -13,23 +16,27 @@ function setupHistoryCommand() {
|
|
|
13
16
|
.requiredOption('-c, --channel <channel>', 'Target channel name or ID')
|
|
14
17
|
.option('-n, --number <number>', 'Number of messages to retrieve', constants_1.API_LIMITS.DEFAULT_MESSAGE_COUNT.toString())
|
|
15
18
|
.option('--since <date>', 'Get messages since specific date (YYYY-MM-DD HH:MM:SS)')
|
|
19
|
+
.option('--format <format>', 'Output format: table, simple, json', 'table')
|
|
16
20
|
.option('--profile <profile>', 'Use specific workspace profile')
|
|
17
|
-
.hook('preAction', (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
.hook('preAction', (0, validators_1.createValidationHook)([
|
|
22
|
+
validators_1.optionValidators.messageCount,
|
|
23
|
+
validators_1.optionValidators.sinceDate,
|
|
24
|
+
validators_1.optionValidators.format,
|
|
25
|
+
]))
|
|
22
26
|
.action((0, command_wrapper_1.wrapCommand)(async (options) => {
|
|
23
|
-
const
|
|
27
|
+
const profile = (0, option_parsers_1.parseProfile)(options.profile);
|
|
28
|
+
const client = await (0, client_factory_1.createSlackClient)(profile);
|
|
29
|
+
const limit = (0, option_parsers_1.parseCount)(options.number, constants_1.API_LIMITS.DEFAULT_MESSAGE_COUNT, constants_1.API_LIMITS.MIN_MESSAGE_COUNT, constants_1.API_LIMITS.MAX_MESSAGE_COUNT);
|
|
24
30
|
const historyOptions = {
|
|
25
|
-
limit
|
|
31
|
+
limit,
|
|
26
32
|
};
|
|
27
33
|
const oldest = (0, history_validators_1.prepareSinceTimestamp)(options.since);
|
|
28
34
|
if (oldest) {
|
|
29
35
|
historyOptions.oldest = oldest;
|
|
30
36
|
}
|
|
31
37
|
const { messages, users } = await client.getHistory(options.channel, historyOptions);
|
|
32
|
-
(0,
|
|
38
|
+
const format = (0, option_parsers_2.parseFormat)(options.format);
|
|
39
|
+
(0, history_display_1.displayHistoryResults)(messages, users, options.channel, format);
|
|
33
40
|
}));
|
|
34
41
|
return historyCommand;
|
|
35
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":";;AAYA,kDAgDC;AA5DD,yCAAoC;AAEpC,8DAAuD;AACvD,4DAA4D;AAE5D,kDAAgD;AAChD,4DAAmE;AACnE,oDAA6E;AAC7E,4DAAsD;AACtD,6DAA6D;AAC7D,uDAA0D;AAE1D,SAAgB,mBAAmB;IACjC,MAAM,cAAc,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;SAC1C,WAAW,CAAC,0CAA0C,CAAC;SACvD,cAAc,CAAC,yBAAyB,EAAE,2BAA2B,CAAC;SACtE,MAAM,CACL,uBAAuB,EACvB,gCAAgC,EAChC,sBAAU,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAC5C;SACA,MAAM,CAAC,gBAAgB,EAAE,wDAAwD,CAAC;SAClF,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,OAAO,CAAC;SAC1E,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC;SAC/D,IAAI,CACH,WAAW,EACX,IAAA,iCAAoB,EAAC;QACnB,6BAAgB,CAAC,YAAY;QAC7B,6BAAgB,CAAC,SAAS;QAC1B,6BAAgB,CAAC,MAAM;KACxB,CAAC,CACH;SACA,MAAM,CACL,IAAA,6BAAW,EAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,IAAA,6BAAY,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAA,kCAAiB,EAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,KAAK,GAAG,IAAA,2BAAU,EACtB,OAAO,CAAC,MAAM,EACd,sBAAU,CAAC,qBAAqB,EAChC,sBAAU,CAAC,iBAAiB,EAC5B,sBAAU,CAAC,iBAAiB,CAC7B,CAAC;QAEF,MAAM,cAAc,GAAsB;YACxC,KAAK;SACN,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,0CAAqB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC;QACjC,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,IAAA,4BAAW,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAA,uCAAqB,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC,CAAC,CACH,CAAC;IAEJ,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,gBAAgB,IAAI,OAAO,CAsC1C"}
|
package/dist/commands/send.js
CHANGED
|
@@ -44,12 +44,9 @@ const constants_1 = require("../utils/constants");
|
|
|
44
44
|
const client_factory_1 = require("../utils/client-factory");
|
|
45
45
|
const errors_1 = require("../utils/errors");
|
|
46
46
|
const error_utils_1 = require("../utils/error-utils");
|
|
47
|
+
const option_parsers_1 = require("../utils/option-parsers");
|
|
48
|
+
const validators_1 = require("../utils/validators");
|
|
47
49
|
const fs = __importStar(require("fs/promises"));
|
|
48
|
-
function isValidThreadTimestamp(timestamp) {
|
|
49
|
-
// Slack timestamp format: 1234567890.123456
|
|
50
|
-
const timestampRegex = /^\d{10}\.\d{6}$/;
|
|
51
|
-
return timestampRegex.test(timestamp);
|
|
52
|
-
}
|
|
53
50
|
function setupSendCommand() {
|
|
54
51
|
const sendCommand = new commander_1.Command('send')
|
|
55
52
|
.description('Send a message to a Slack channel')
|
|
@@ -58,18 +55,7 @@ function setupSendCommand() {
|
|
|
58
55
|
.option('-f, --file <file>', 'File containing message content')
|
|
59
56
|
.option('-t, --thread <thread>', 'Thread timestamp to reply to')
|
|
60
57
|
.option('--profile <profile>', 'Use specific workspace profile')
|
|
61
|
-
.hook('preAction', (
|
|
62
|
-
const options = thisCommand.opts();
|
|
63
|
-
if (!options.message && !options.file) {
|
|
64
|
-
thisCommand.error(`Error: ${constants_1.ERROR_MESSAGES.NO_MESSAGE_OR_FILE}`);
|
|
65
|
-
}
|
|
66
|
-
if (options.message && options.file) {
|
|
67
|
-
thisCommand.error(`Error: ${constants_1.ERROR_MESSAGES.BOTH_MESSAGE_AND_FILE}`);
|
|
68
|
-
}
|
|
69
|
-
if (options.thread && !isValidThreadTimestamp(options.thread)) {
|
|
70
|
-
thisCommand.error(`Error: ${constants_1.ERROR_MESSAGES.INVALID_THREAD_TIMESTAMP}`);
|
|
71
|
-
}
|
|
72
|
-
})
|
|
58
|
+
.hook('preAction', (0, validators_1.createValidationHook)([validators_1.optionValidators.messageOrFile, validators_1.optionValidators.threadTimestamp]))
|
|
73
59
|
.action((0, command_wrapper_1.wrapCommand)(async (options) => {
|
|
74
60
|
// Get message content
|
|
75
61
|
let messageContent;
|
|
@@ -85,7 +71,8 @@ function setupSendCommand() {
|
|
|
85
71
|
messageContent = options.message; // This is safe because of preAction validation
|
|
86
72
|
}
|
|
87
73
|
// Send message
|
|
88
|
-
const
|
|
74
|
+
const profile = (0, option_parsers_1.parseProfile)(options.profile);
|
|
75
|
+
const client = await (0, client_factory_1.createSlackClient)(profile);
|
|
89
76
|
await client.sendMessage(options.channel, messageContent, options.thread);
|
|
90
77
|
console.log(chalk_1.default.green(`✓ ${constants_1.SUCCESS_MESSAGES.MESSAGE_SENT(options.channel)}`));
|
|
91
78
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,4CAsCC;AAlDD,yCAAoC;AACpC,kDAA0B;AAC1B,8DAAuD;AACvD,kDAAsE;AACtE,4DAA4D;AAC5D,4CAA4C;AAE5C,sDAA2D;AAC3D,4DAAuD;AACvD,oDAA6E;AAC7E,gDAAkC;AAElC,SAAgB,gBAAgB;IAC9B,MAAM,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;SACpC,WAAW,CAAC,mCAAmC,CAAC;SAChD,cAAc,CAAC,yBAAyB,EAAE,2BAA2B,CAAC;SACtE,MAAM,CAAC,yBAAyB,EAAE,iBAAiB,CAAC;SACpD,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;SAC/D,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC;SAC/D,IAAI,CACH,WAAW,EACX,IAAA,iCAAoB,EAAC,CAAC,6BAAgB,CAAC,aAAa,EAAE,6BAAgB,CAAC,eAAe,CAAC,CAAC,CACzF;SACA,MAAM,CACL,IAAA,6BAAW,EAAC,KAAK,EAAE,OAAoB,EAAE,EAAE;QACzC,sBAAsB;QACtB,IAAI,cAAsB,CAAC;QAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,kBAAS,CACjB,0BAAc,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAA,iCAAmB,EAAC,KAAK,CAAC,CAAC,CACzE,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,OAAO,CAAC,OAAQ,CAAC,CAAC,+CAA+C;QACpF,CAAC;QAED,eAAe;QACf,MAAM,OAAO,GAAG,IAAA,6BAAY,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAA,kCAAiB,EAAC,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAE1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,4BAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CACH,CAAC;IAEJ,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/dist/types/commands.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/types/commands.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;IACnD,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/types/commands.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;IACnD,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Message as SlackMessage } from '../slack-api-client';
|
|
2
|
+
export interface HistoryFormatterOptions {
|
|
3
|
+
channelName: string;
|
|
4
|
+
messages: SlackMessage[];
|
|
5
|
+
users: Map<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export declare function createHistoryFormatter(format: string): import("./base-formatter").BaseFormatter<HistoryFormatterOptions>;
|
|
8
|
+
//# sourceMappingURL=history-formatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-formatters.d.ts","sourceRoot":"","sources":["../../../src/utils/formatters/history-formatters.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAkGD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,qEAEpD"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createHistoryFormatter = createHistoryFormatter;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const base_formatter_1 = require("./base-formatter");
|
|
9
|
+
function formatTimestampFixed(slackTimestamp) {
|
|
10
|
+
const timestamp = parseFloat(slackTimestamp);
|
|
11
|
+
const date = new Date(timestamp * 1000);
|
|
12
|
+
const year = date.getUTCFullYear();
|
|
13
|
+
const month = String(date.getUTCMonth() + 1).padStart(2, '0');
|
|
14
|
+
const day = String(date.getUTCDate()).padStart(2, '0');
|
|
15
|
+
const hours = String(date.getUTCHours()).padStart(2, '0');
|
|
16
|
+
const minutes = String(date.getUTCMinutes()).padStart(2, '0');
|
|
17
|
+
const seconds = String(date.getUTCSeconds()).padStart(2, '0');
|
|
18
|
+
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
|
19
|
+
}
|
|
20
|
+
const format_utils_1 = require("../format-utils");
|
|
21
|
+
class TableHistoryFormatter extends base_formatter_1.AbstractFormatter {
|
|
22
|
+
format(options) {
|
|
23
|
+
const { channelName, messages, users } = options;
|
|
24
|
+
console.log(chalk_1.default.bold(`\nMessage History for #${channelName}:`));
|
|
25
|
+
if (messages.length === 0) {
|
|
26
|
+
console.log(chalk_1.default.yellow('No messages found'));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
console.log('');
|
|
30
|
+
messages.forEach((message) => {
|
|
31
|
+
const timestamp = formatTimestampFixed(message.ts);
|
|
32
|
+
const username = this.getUsername(message, users);
|
|
33
|
+
console.log(`${chalk_1.default.gray(`[${timestamp}]`)} ${chalk_1.default.cyan(username)}`);
|
|
34
|
+
const text = message.text ? (0, format_utils_1.formatMessageWithMentions)(message.text, users) : '(no text)';
|
|
35
|
+
console.log(text);
|
|
36
|
+
console.log('');
|
|
37
|
+
});
|
|
38
|
+
console.log(chalk_1.default.green(`✓ Displayed ${messages.length} message(s)`));
|
|
39
|
+
}
|
|
40
|
+
getUsername(message, users) {
|
|
41
|
+
if (message.user) {
|
|
42
|
+
return users.get(message.user) || 'Unknown User';
|
|
43
|
+
}
|
|
44
|
+
if (message.bot_id) {
|
|
45
|
+
return 'Bot';
|
|
46
|
+
}
|
|
47
|
+
return 'Unknown';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
class SimpleHistoryFormatter extends base_formatter_1.AbstractFormatter {
|
|
51
|
+
format(options) {
|
|
52
|
+
const { messages, users } = options;
|
|
53
|
+
if (messages.length === 0) {
|
|
54
|
+
console.log('No messages found');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
messages.forEach((message) => {
|
|
58
|
+
const timestamp = formatTimestampFixed(message.ts);
|
|
59
|
+
const username = this.getUsername(message, users);
|
|
60
|
+
const text = message.text ? (0, format_utils_1.formatMessageWithMentions)(message.text, users) : '(no text)';
|
|
61
|
+
console.log(`[${timestamp}] ${username}: ${text}`);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
getUsername(message, users) {
|
|
65
|
+
if (message.user) {
|
|
66
|
+
return users.get(message.user) || 'Unknown User';
|
|
67
|
+
}
|
|
68
|
+
if (message.bot_id) {
|
|
69
|
+
return 'Bot';
|
|
70
|
+
}
|
|
71
|
+
return 'Unknown';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
class JsonHistoryFormatter extends base_formatter_1.JsonFormatter {
|
|
75
|
+
transform(options) {
|
|
76
|
+
const { channelName, messages, users } = options;
|
|
77
|
+
return {
|
|
78
|
+
channel: channelName,
|
|
79
|
+
messages: messages.map((message) => ({
|
|
80
|
+
timestamp: formatTimestampFixed(message.ts),
|
|
81
|
+
user: this.getUsername(message, users),
|
|
82
|
+
text: message.text || '(no text)',
|
|
83
|
+
})),
|
|
84
|
+
total: messages.length,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
getUsername(message, users) {
|
|
88
|
+
if (message.user) {
|
|
89
|
+
return users.get(message.user) || 'Unknown User';
|
|
90
|
+
}
|
|
91
|
+
if (message.bot_id) {
|
|
92
|
+
return 'Bot';
|
|
93
|
+
}
|
|
94
|
+
return 'Unknown';
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const historyFormatterFactory = (0, base_formatter_1.createFormatterFactory)({
|
|
98
|
+
table: new TableHistoryFormatter(),
|
|
99
|
+
simple: new SimpleHistoryFormatter(),
|
|
100
|
+
json: new JsonHistoryFormatter(),
|
|
101
|
+
});
|
|
102
|
+
function createHistoryFormatter(format) {
|
|
103
|
+
return historyFormatterFactory.create(format);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=history-formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-formatters.js","sourceRoot":"","sources":["../../../src/utils/formatters/history-formatters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-config.d.ts","sourceRoot":"","sources":["../../src/utils/profile-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAe,OAAO,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"profile-config.d.ts","sourceRoot":"","sources":["../../src/utils/profile-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAe,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAInF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,GAAE,aAAkB;IAKjC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOnD,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAWlC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BlD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;YAIlB,cAAc;IAsB5B,OAAO,CAAC,cAAc;YAKR,gBAAgB;YAiBhB,eAAe;CAO9B;AAED,eAAO,MAAM,aAAa;6BACD,MAAM;0BAGP,MAAM,KAAG,MAAM,GAAG,SAAS;CAKlD,CAAC"}
|
|
@@ -38,6 +38,7 @@ const fs = __importStar(require("fs/promises"));
|
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const os = __importStar(require("os"));
|
|
40
40
|
const constants_1 = require("./constants");
|
|
41
|
+
const token_utils_1 = require("./token-utils");
|
|
41
42
|
class ProfileConfigManager {
|
|
42
43
|
constructor(options = {}) {
|
|
43
44
|
const configDir = options.configDir || path.join(os.homedir(), '.slack-cli');
|
|
@@ -109,12 +110,7 @@ class ProfileConfigManager {
|
|
|
109
110
|
await this.saveConfigStore(store);
|
|
110
111
|
}
|
|
111
112
|
maskToken(token) {
|
|
112
|
-
|
|
113
|
-
return '****';
|
|
114
|
-
}
|
|
115
|
-
const prefix = token.substring(0, constants_1.TOKEN_MASK_LENGTH);
|
|
116
|
-
const suffix = token.substring(token.length - constants_1.TOKEN_MASK_LENGTH);
|
|
117
|
-
return `${prefix}-****-****-${suffix}`;
|
|
113
|
+
return (0, token_utils_1.maskToken)(token);
|
|
118
114
|
}
|
|
119
115
|
async getConfigStore() {
|
|
120
116
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-config.js","sourceRoot":"","sources":["../../src/utils/profile-config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,2CAA6B;AAC7B,uCAAyB;AAEzB,
|
|
1
|
+
{"version":3,"file":"profile-config.js","sourceRoot":"","sources":["../../src/utils/profile-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { BaseSlackClient } from './base-client';
|
|
2
2
|
import { Channel, ListChannelsOptions } from '../slack-api-client';
|
|
3
|
+
import { WebClient } from '@slack/web-api';
|
|
3
4
|
interface ChannelWithUnreadInfo extends Channel {
|
|
4
5
|
unread_count: number;
|
|
5
6
|
unread_count_display: number;
|
|
6
7
|
last_read?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare class ChannelOperations extends BaseSlackClient {
|
|
10
|
+
constructor(tokenOrClient: string | WebClient);
|
|
9
11
|
listChannels(options: ListChannelsOptions): Promise<Channel[]>;
|
|
10
12
|
listUnreadChannels(): Promise<Channel[]>;
|
|
13
|
+
private fetchAllChannels;
|
|
14
|
+
private getChannelUnreadInfo;
|
|
15
|
+
private fetchChannelInfo;
|
|
16
|
+
private calculateUnreadCount;
|
|
17
|
+
private fetchLatestMessage;
|
|
18
|
+
private fetchUnreadMessageCount;
|
|
19
|
+
private fetchAllMessageCount;
|
|
11
20
|
getChannelInfo(channelNameOrId: string): Promise<ChannelWithUnreadInfo>;
|
|
12
21
|
}
|
|
13
22
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-operations.d.ts","sourceRoot":"","sources":["../../../src/utils/slack-operations/channel-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"channel-operations.d.ts","sourceRoot":"","sources":["../../../src/utils/slack-operations/channel-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,UAAU,qBAAsB,SAAQ,OAAO;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAkB,SAAQ,eAAe;gBACxC,aAAa,EAAE,MAAM,GAAG,SAAS;IASvC,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAuB9D,kBAAkB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAuBhC,gBAAgB;YAUhB,oBAAoB;YAgBpB,gBAAgB;YAQhB,oBAAoB;YAkBpB,kBAAkB;YAQlB,uBAAuB;YASvB,oBAAoB;IAQ5B,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAe9E"}
|
|
@@ -5,6 +5,15 @@ const base_client_1 = require("./base-client");
|
|
|
5
5
|
const channel_resolver_1 = require("../channel-resolver");
|
|
6
6
|
const constants_1 = require("../constants");
|
|
7
7
|
class ChannelOperations extends base_client_1.BaseSlackClient {
|
|
8
|
+
constructor(tokenOrClient) {
|
|
9
|
+
if (typeof tokenOrClient === 'string') {
|
|
10
|
+
super(tokenOrClient);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
super('dummy-token'); // Call parent constructor
|
|
14
|
+
this.client = tokenOrClient; // Override the client for testing
|
|
15
|
+
}
|
|
16
|
+
}
|
|
8
17
|
async listChannels(options) {
|
|
9
18
|
const channels = [];
|
|
10
19
|
let cursor;
|
|
@@ -24,60 +33,14 @@ class ChannelOperations extends base_client_1.BaseSlackClient {
|
|
|
24
33
|
return channels;
|
|
25
34
|
}
|
|
26
35
|
async listUnreadChannels() {
|
|
27
|
-
|
|
28
|
-
const response = await this.client.conversations.list({
|
|
29
|
-
types: 'public_channel,private_channel,im,mpim',
|
|
30
|
-
exclude_archived: true,
|
|
31
|
-
limit: 1000,
|
|
32
|
-
});
|
|
33
|
-
const channels = response.channels;
|
|
36
|
+
const channels = await this.fetchAllChannels();
|
|
34
37
|
const channelsWithUnread = [];
|
|
35
38
|
// Process channels one by one with delay to avoid rate limits
|
|
36
39
|
for (const channel of channels) {
|
|
37
40
|
try {
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
});
|
|
42
|
-
const channelInfo = info.channel;
|
|
43
|
-
// Get the latest message in the channel
|
|
44
|
-
const history = await this.client.conversations.history({
|
|
45
|
-
channel: channel.id,
|
|
46
|
-
limit: 1,
|
|
47
|
-
});
|
|
48
|
-
// Always check for messages after last_read timestamp
|
|
49
|
-
if (channelInfo.last_read) {
|
|
50
|
-
// Fetch messages after last_read
|
|
51
|
-
const unreadHistory = await this.client.conversations.history({
|
|
52
|
-
channel: channel.id,
|
|
53
|
-
oldest: channelInfo.last_read,
|
|
54
|
-
limit: 100, // Get up to 100 unread messages
|
|
55
|
-
});
|
|
56
|
-
const unreadCount = unreadHistory.messages?.length || 0;
|
|
57
|
-
if (unreadCount > 0) {
|
|
58
|
-
channelsWithUnread.push({
|
|
59
|
-
...channel,
|
|
60
|
-
unread_count: unreadCount,
|
|
61
|
-
unread_count_display: unreadCount,
|
|
62
|
-
last_read: channelInfo.last_read,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else if (history.messages && history.messages.length > 0) {
|
|
67
|
-
// If no last_read, all messages are unread
|
|
68
|
-
const allHistory = await this.client.conversations.history({
|
|
69
|
-
channel: channel.id,
|
|
70
|
-
limit: 100,
|
|
71
|
-
});
|
|
72
|
-
const unreadCount = allHistory.messages?.length || 0;
|
|
73
|
-
if (unreadCount > 0) {
|
|
74
|
-
channelsWithUnread.push({
|
|
75
|
-
...channel,
|
|
76
|
-
unread_count: unreadCount,
|
|
77
|
-
unread_count_display: unreadCount,
|
|
78
|
-
last_read: channelInfo.last_read,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
41
|
+
const unreadInfo = await this.getChannelUnreadInfo(channel);
|
|
42
|
+
if (unreadInfo) {
|
|
43
|
+
channelsWithUnread.push(unreadInfo);
|
|
81
44
|
}
|
|
82
45
|
// Add delay between API calls to avoid rate limiting
|
|
83
46
|
await this.delay(100);
|
|
@@ -89,6 +52,70 @@ class ChannelOperations extends base_client_1.BaseSlackClient {
|
|
|
89
52
|
}
|
|
90
53
|
return channelsWithUnread;
|
|
91
54
|
}
|
|
55
|
+
async fetchAllChannels() {
|
|
56
|
+
const response = await this.client.conversations.list({
|
|
57
|
+
types: 'public_channel,private_channel,im,mpim',
|
|
58
|
+
exclude_archived: true,
|
|
59
|
+
limit: 1000,
|
|
60
|
+
});
|
|
61
|
+
return response.channels;
|
|
62
|
+
}
|
|
63
|
+
async getChannelUnreadInfo(channel) {
|
|
64
|
+
const channelInfo = await this.fetchChannelInfo(channel.id);
|
|
65
|
+
const unreadCount = await this.calculateUnreadCount(channel.id, channelInfo);
|
|
66
|
+
if (unreadCount > 0) {
|
|
67
|
+
return {
|
|
68
|
+
...channel,
|
|
69
|
+
unread_count: unreadCount,
|
|
70
|
+
unread_count_display: unreadCount,
|
|
71
|
+
last_read: channelInfo.last_read,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
async fetchChannelInfo(channelId) {
|
|
77
|
+
const info = await this.client.conversations.info({
|
|
78
|
+
channel: channelId,
|
|
79
|
+
include_num_members: false,
|
|
80
|
+
});
|
|
81
|
+
return info.channel;
|
|
82
|
+
}
|
|
83
|
+
async calculateUnreadCount(channelId, channelInfo) {
|
|
84
|
+
// Get the latest message to check if channel has any messages
|
|
85
|
+
const latestMessage = await this.fetchLatestMessage(channelId);
|
|
86
|
+
if (!latestMessage) {
|
|
87
|
+
return 0;
|
|
88
|
+
}
|
|
89
|
+
if (channelInfo.last_read) {
|
|
90
|
+
return await this.fetchUnreadMessageCount(channelId, channelInfo.last_read);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// If no last_read, all messages are unread
|
|
94
|
+
return await this.fetchAllMessageCount(channelId);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async fetchLatestMessage(channelId) {
|
|
98
|
+
const history = await this.client.conversations.history({
|
|
99
|
+
channel: channelId,
|
|
100
|
+
limit: 1,
|
|
101
|
+
});
|
|
102
|
+
return history.messages && history.messages.length > 0 ? history.messages[0] : null;
|
|
103
|
+
}
|
|
104
|
+
async fetchUnreadMessageCount(channelId, lastRead) {
|
|
105
|
+
const unreadHistory = await this.client.conversations.history({
|
|
106
|
+
channel: channelId,
|
|
107
|
+
oldest: lastRead,
|
|
108
|
+
limit: 100, // Get up to 100 unread messages
|
|
109
|
+
});
|
|
110
|
+
return unreadHistory.messages?.length || 0;
|
|
111
|
+
}
|
|
112
|
+
async fetchAllMessageCount(channelId) {
|
|
113
|
+
const allHistory = await this.client.conversations.history({
|
|
114
|
+
channel: channelId,
|
|
115
|
+
limit: 100,
|
|
116
|
+
});
|
|
117
|
+
return allHistory.messages?.length || 0;
|
|
118
|
+
}
|
|
92
119
|
async getChannelInfo(channelNameOrId) {
|
|
93
120
|
const channelId = await channel_resolver_1.channelResolver.resolveChannelId(channelNameOrId, () => this.listChannels({
|
|
94
121
|
types: 'public_channel,private_channel,im,mpim',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-operations.js","sourceRoot":"","sources":["../../../src/utils/slack-operations/channel-operations.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAChD,0DAAsD;AACtD,4CAAwC;
|
|
1
|
+
{"version":3,"file":"channel-operations.js","sourceRoot":"","sources":["../../../src/utils/slack-operations/channel-operations.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAChD,0DAAsD;AACtD,4CAAwC;AAUxC,MAAa,iBAAkB,SAAQ,6BAAe;IACpD,YAAY,aAAiC;QAC3C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,KAAK,CAAC,aAAa,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,0BAA0B;YAChD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC,kCAAkC;QACjE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,IAAI,MAA0B,CAAC;QAE/B,gCAAgC;QAChC,GAAG,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBACpD,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,GAAI,QAAQ,CAAC,QAAsB,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,GAAG,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC;QACnD,CAAC,QAAQ,MAAM,EAAE;QAEjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,kBAAkB,GAAc,EAAE,CAAC;QAEzC,8DAA8D;QAC9D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBAC5D,IAAI,UAAU,EAAE,CAAC;oBACf,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACtC,CAAC;gBAED,qDAAqD;gBACrD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,0BAA0B;gBAC1B,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;YACpD,KAAK,EAAE,wCAAwC;YAC/C,gBAAgB,EAAE,IAAI;YACtB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,QAAqB,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,OAAgB;QACjD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAE7E,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO;gBACL,GAAG,OAAO;gBACV,YAAY,EAAE,WAAW;gBACzB,oBAAoB,EAAE,WAAW;gBACjC,SAAS,EAAE,WAAW,CAAC,SAAS;aACjC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;YAChD,OAAO,EAAE,SAAS;YAClB,mBAAmB,EAAE,KAAK;SAC3B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAgC,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,SAAiB,EACjB,WAAkC;QAElC,8DAA8D;QAC9D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;YACtD,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,SAAiB,EAAE,QAAgB;QACvE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;YAC5D,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,GAAG,EAAE,gCAAgC;SAC7C,CAAC,CAAC;QACH,OAAO,aAAa,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAClD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;YACzD,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,eAAuB;QAC1C,MAAM,SAAS,GAAG,MAAM,kCAAe,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,EAAE,CAC7E,IAAI,CAAC,YAAY,CAAC;YAChB,KAAK,EAAE,wCAAwC;YAC/C,gBAAgB,EAAE,IAAI;YACtB,KAAK,EAAE,oBAAQ,CAAC,cAAc;SAC/B,CAAC,CACH,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;YAChD,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAgC,CAAC;IAC/C,CAAC;CACF;AApJD,8CAoJC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Masks a token for display purposes, showing only first and last few characters
|
|
3
|
+
* @param token The token to mask
|
|
4
|
+
* @returns Masked token in format "xoxb-****-****-abcd"
|
|
5
|
+
*/
|
|
6
|
+
export declare function maskToken(token: string): string;
|
|
7
|
+
//# sourceMappingURL=token-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-utils.d.ts","sourceRoot":"","sources":["../../src/utils/token-utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS/C"}
|