@urugus/slack-cli 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +7 -1
- package/.github/workflows/pr-validation.yml +0 -10
- package/README.md +86 -19
- package/dist/commands/unread.d.ts.map +1 -1
- package/dist/commands/unread.js +12 -0
- package/dist/commands/unread.js.map +1 -1
- package/dist/types/commands.d.ts +1 -0
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/utils/slack-api-client.d.ts +1 -0
- package/dist/utils/slack-api-client.d.ts.map +1 -1
- package/dist/utils/slack-api-client.js +3 -0
- package/dist/utils/slack-api-client.js.map +1 -1
- package/dist/utils/slack-operations/message-operations.d.ts +1 -0
- package/dist/utils/slack-operations/message-operations.d.ts.map +1 -1
- package/dist/utils/slack-operations/message-operations.js +6 -0
- package/dist/utils/slack-operations/message-operations.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/unread.ts +14 -0
- package/src/types/commands.ts +1 -0
- package/src/utils/slack-api-client.ts +4 -0
- package/src/utils/slack-operations/message-operations.ts +7 -0
- package/tests/commands/unread.test.ts +60 -0
- package/tests/index.test.ts +4 -4
|
@@ -57,7 +57,13 @@
|
|
|
57
57
|
"Bash(npx tsx:*)",
|
|
58
58
|
"Bash(gh workflow view:*)",
|
|
59
59
|
"Bash(git tag:*)",
|
|
60
|
-
"Bash(./bin/dev:*)"
|
|
60
|
+
"Bash(./bin/dev:*)",
|
|
61
|
+
"Bash(git checkout:*)",
|
|
62
|
+
"Bash(gh pr create:*)",
|
|
63
|
+
"Bash(gh pr checks:*)",
|
|
64
|
+
"Bash(gh pr view:*)",
|
|
65
|
+
"Bash(gh pr merge:*)",
|
|
66
|
+
"Bash(git pull:*)"
|
|
61
67
|
],
|
|
62
68
|
"deny": []
|
|
63
69
|
}
|
|
@@ -28,16 +28,6 @@ jobs:
|
|
|
28
28
|
|
|
29
29
|
- name: Run tests with coverage
|
|
30
30
|
run: npm run test:coverage
|
|
31
|
-
|
|
32
|
-
- name: Comment PR with coverage
|
|
33
|
-
uses: ArtiomTr/jest-coverage-report-action@v2
|
|
34
|
-
if: github.event_name == 'pull_request'
|
|
35
|
-
with:
|
|
36
|
-
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
37
|
-
test-script: npm run test:coverage
|
|
38
|
-
skip-step: all
|
|
39
|
-
coverage-file: ./coverage/coverage-final.json
|
|
40
|
-
base-coverage-file: ./coverage/coverage-final.json
|
|
41
31
|
|
|
42
32
|
- name: Check build
|
|
43
33
|
run: npm run build
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ npm install -g @urugus/slack-cli
|
|
|
13
13
|
You need to configure your Slack API token on first use:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
slack-cli config --token YOUR_SLACK_API_TOKEN
|
|
16
|
+
slack-cli config set --token YOUR_SLACK_API_TOKEN
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Usage
|
|
@@ -70,16 +70,29 @@ slack-cli channels
|
|
|
70
70
|
slack-cli channels --profile work
|
|
71
71
|
|
|
72
72
|
# List public channels only
|
|
73
|
-
slack-cli channels --public
|
|
73
|
+
slack-cli channels --type public
|
|
74
74
|
|
|
75
75
|
# List private channels only
|
|
76
|
-
slack-cli channels --private
|
|
76
|
+
slack-cli channels --type private
|
|
77
|
+
|
|
78
|
+
# List all channel types including IMs and MPIMs
|
|
79
|
+
slack-cli channels --type all
|
|
80
|
+
|
|
81
|
+
# Include archived channels
|
|
82
|
+
slack-cli channels --include-archived
|
|
83
|
+
|
|
84
|
+
# Limit number of channels displayed
|
|
85
|
+
slack-cli channels --limit 20
|
|
86
|
+
|
|
87
|
+
# Output in different formats
|
|
88
|
+
slack-cli channels --format json
|
|
89
|
+
slack-cli channels --format simple
|
|
77
90
|
```
|
|
78
91
|
|
|
79
92
|
### View Message History
|
|
80
93
|
|
|
81
94
|
```bash
|
|
82
|
-
# Get latest 10 messages
|
|
95
|
+
# Get latest 10 messages (default)
|
|
83
96
|
slack-cli history -c general
|
|
84
97
|
|
|
85
98
|
# Specify number of messages
|
|
@@ -87,6 +100,9 @@ slack-cli history -c general -n 20
|
|
|
87
100
|
|
|
88
101
|
# Get messages since specific date
|
|
89
102
|
slack-cli history -c general --since "2024-01-01 00:00:00"
|
|
103
|
+
|
|
104
|
+
# Use specific profile
|
|
105
|
+
slack-cli history -c general --profile work
|
|
90
106
|
```
|
|
91
107
|
|
|
92
108
|
### Get Unread Messages
|
|
@@ -98,14 +114,21 @@ slack-cli unread
|
|
|
98
114
|
# Get unread messages from specific channel
|
|
99
115
|
slack-cli unread -c general
|
|
100
116
|
|
|
101
|
-
#
|
|
102
|
-
slack-cli unread --
|
|
117
|
+
# Show only unread counts (no message content)
|
|
118
|
+
slack-cli unread --count-only
|
|
103
119
|
|
|
104
120
|
# Mark messages as read after fetching
|
|
105
121
|
slack-cli unread --mark-read
|
|
106
122
|
|
|
107
|
-
#
|
|
108
|
-
slack-cli unread -c general
|
|
123
|
+
# Mark messages as read for specific channel
|
|
124
|
+
slack-cli unread -c general --mark-read
|
|
125
|
+
|
|
126
|
+
# Limit number of channels displayed
|
|
127
|
+
slack-cli unread --limit 10
|
|
128
|
+
|
|
129
|
+
# Output in different formats
|
|
130
|
+
slack-cli unread --format json
|
|
131
|
+
slack-cli unread --format simple
|
|
109
132
|
```
|
|
110
133
|
|
|
111
134
|
### Other Commands
|
|
@@ -126,23 +149,42 @@ slack-cli config set --token NEW_TOKEN
|
|
|
126
149
|
|
|
127
150
|
## Options
|
|
128
151
|
|
|
152
|
+
### Global Options
|
|
153
|
+
| Option | Short | Description |
|
|
154
|
+
|--------|-------|-------------|
|
|
155
|
+
| --profile | -p | Use specific workspace profile |
|
|
156
|
+
|
|
157
|
+
### send command
|
|
129
158
|
| Option | Short | Description |
|
|
130
159
|
|--------|-------|-------------|
|
|
131
|
-
| --channel | -c | Target channel name or ID |
|
|
160
|
+
| --channel | -c | Target channel name or ID (required) |
|
|
132
161
|
| --message | -m | Message to send |
|
|
133
162
|
| --file | -f | File containing message content |
|
|
134
|
-
| --token | -t | Slack API token (temporary override) |
|
|
135
|
-
| --profile | -p | Use specific workspace profile |
|
|
136
|
-
| --format | | Message format (text/markdown) |
|
|
137
|
-
| --verbose | -v | Show verbose output |
|
|
138
|
-
| --show-channel | | Display channel name with unread messages |
|
|
139
|
-
| --mark-read | | Mark messages as read after fetching |
|
|
140
163
|
|
|
141
|
-
|
|
164
|
+
### channels command
|
|
165
|
+
| Option | Short | Description |
|
|
166
|
+
|--------|-------|-------------|
|
|
167
|
+
| --type | | Channel type: public, private, im, mpim, all (default: public) |
|
|
168
|
+
| --include-archived | | Include archived channels |
|
|
169
|
+
| --format | | Output format: table, simple, json (default: table) |
|
|
170
|
+
| --limit | | Maximum number of channels to list (default: 100) |
|
|
171
|
+
|
|
172
|
+
### history command
|
|
173
|
+
| Option | Short | Description |
|
|
174
|
+
|--------|-------|-------------|
|
|
175
|
+
| --channel | -c | Target channel name or ID (required) |
|
|
176
|
+
| --number | -n | Number of messages to retrieve (default: 10) |
|
|
177
|
+
| --since | | Get messages since specific date (YYYY-MM-DD HH:MM:SS) |
|
|
178
|
+
|
|
179
|
+
### unread command
|
|
180
|
+
| Option | Short | Description |
|
|
181
|
+
|--------|-------|-------------|
|
|
182
|
+
| --channel | -c | Get unread for specific channel |
|
|
183
|
+
| --format | | Output format: table, simple, json (default: table) |
|
|
184
|
+
| --count-only | | Show only unread counts |
|
|
185
|
+
| --limit | | Maximum number of channels to display (default: 50) |
|
|
186
|
+
| --mark-read | | Mark messages as read after fetching |
|
|
142
187
|
|
|
143
|
-
- `SLACK_API_TOKEN`: Default API token (used when no profile is configured)
|
|
144
|
-
- `SLACK_DEFAULT_CHANNEL`: Default target channel
|
|
145
|
-
- `SLACK_DEFAULT_PROFILE`: Default profile to use
|
|
146
188
|
|
|
147
189
|
## Required Permissions
|
|
148
190
|
|
|
@@ -156,6 +198,31 @@ Your Slack API token needs the following scopes:
|
|
|
156
198
|
- `im:history` - Read direct message history
|
|
157
199
|
- `users:read` - Access user information for unread counts
|
|
158
200
|
|
|
201
|
+
## Advanced Features
|
|
202
|
+
|
|
203
|
+
### Rate Limiting
|
|
204
|
+
The CLI includes built-in rate limiting to handle Slack API limits:
|
|
205
|
+
- Concurrent requests: 3
|
|
206
|
+
- Automatic retry with exponential backoff (max 3 retries)
|
|
207
|
+
- Graceful error handling for rate limit errors
|
|
208
|
+
|
|
209
|
+
### Output Formats
|
|
210
|
+
Most commands support multiple output formats:
|
|
211
|
+
- `table` (default) - Human-readable table format
|
|
212
|
+
- `simple` - Simplified text output
|
|
213
|
+
- `json` - Machine-readable JSON format
|
|
214
|
+
|
|
215
|
+
### Markdown Support
|
|
216
|
+
Messages sent via the `send` command automatically support Slack's mrkdwn formatting:
|
|
217
|
+
- `*bold*` for bold text
|
|
218
|
+
- `_italic_` for italic text
|
|
219
|
+
- `~strikethrough~` for strikethrough
|
|
220
|
+
- `` `code` `` for inline code
|
|
221
|
+
- ` ```code blocks``` ` for multiline code
|
|
222
|
+
- Links are automatically hyperlinked
|
|
223
|
+
- User mentions: `<@USER_ID>`
|
|
224
|
+
- Channel mentions: `<#CHANNEL_ID>`
|
|
225
|
+
|
|
159
226
|
## License
|
|
160
227
|
|
|
161
228
|
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unread.d.ts","sourceRoot":"","sources":["../../src/commands/unread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"unread.d.ts","sourceRoot":"","sources":["../../src/commands/unread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiEpC,wBAAgB,kBAAkB,IAAI,OAAO,CA0B5C"}
|
package/dist/commands/unread.js
CHANGED
|
@@ -24,6 +24,10 @@ async function handleSpecificChannelUnread(client, options) {
|
|
|
24
24
|
countOnly: countOnly,
|
|
25
25
|
format: format,
|
|
26
26
|
});
|
|
27
|
+
if ((0, option_parsers_1.parseBoolean)(options.markRead)) {
|
|
28
|
+
await client.markAsRead(result.channel.id);
|
|
29
|
+
console.log(chalk_1.default.green(`✓ Marked messages in #${result.channel.name} as read`));
|
|
30
|
+
}
|
|
27
31
|
}
|
|
28
32
|
async function handleAllChannelsUnread(client, options) {
|
|
29
33
|
const channels = await client.listUnreadChannels();
|
|
@@ -38,6 +42,13 @@ async function handleAllChannelsUnread(client, options) {
|
|
|
38
42
|
const countOnly = (0, option_parsers_1.parseBoolean)(options.countOnly);
|
|
39
43
|
const formatter = (0, channel_formatters_1.createChannelFormatter)(format, countOnly);
|
|
40
44
|
formatter.format({ channels: displayChannels, countOnly: countOnly });
|
|
45
|
+
if ((0, option_parsers_1.parseBoolean)(options.markRead)) {
|
|
46
|
+
// Mark all unread channels as read
|
|
47
|
+
for (const channel of channels) {
|
|
48
|
+
await client.markAsRead(channel.id);
|
|
49
|
+
}
|
|
50
|
+
console.log(chalk_1.default.green('✓ Marked all messages as read'));
|
|
51
|
+
}
|
|
41
52
|
}
|
|
42
53
|
function setupUnreadCommand() {
|
|
43
54
|
const unreadCommand = new commander_1.Command('unread')
|
|
@@ -46,6 +57,7 @@ function setupUnreadCommand() {
|
|
|
46
57
|
.option('--format <format>', 'Output format: table, simple, json', 'table')
|
|
47
58
|
.option('--count-only', 'Show only unread counts', false)
|
|
48
59
|
.option('--limit <number>', 'Maximum number of channels to display', constants_1.DEFAULTS.UNREAD_DISPLAY_LIMIT.toString())
|
|
60
|
+
.option('--mark-read', 'Mark messages as read after fetching', false)
|
|
49
61
|
.option('--profile <profile>', 'Use specific workspace profile')
|
|
50
62
|
.action((0, command_wrapper_1.wrapCommand)(async (options) => {
|
|
51
63
|
const client = await (0, client_factory_1.createSlackClient)(options.profile);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unread.js","sourceRoot":"","sources":["../../src/commands/unread.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"unread.js","sourceRoot":"","sources":["../../src/commands/unread.ts"],"names":[],"mappings":"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"}
|
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,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,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,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"}
|
|
@@ -68,6 +68,7 @@ export declare class SlackApiClient {
|
|
|
68
68
|
getHistory(channel: string, options: HistoryOptions): Promise<HistoryResult>;
|
|
69
69
|
listUnreadChannels(): Promise<Channel[]>;
|
|
70
70
|
getChannelUnread(channelNameOrId: string): Promise<ChannelUnreadResult>;
|
|
71
|
+
markAsRead(channelId: string): Promise<void>;
|
|
71
72
|
}
|
|
72
73
|
export declare const slackApiClient: {
|
|
73
74
|
listChannels: (token: string, options: ListChannelsOptions) => Promise<Channel[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-api-client.d.ts","sourceRoot":"","sources":["../../src/utils/slack-api-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"slack-api-client.d.ts","sourceRoot":"","sources":["../../src/utils/slack-api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,9 @@ class SlackApiClient {
|
|
|
23
23
|
async getChannelUnread(channelNameOrId) {
|
|
24
24
|
return this.messageOps.getChannelUnread(channelNameOrId);
|
|
25
25
|
}
|
|
26
|
+
async markAsRead(channelId) {
|
|
27
|
+
return this.messageOps.markAsRead(channelId);
|
|
28
|
+
}
|
|
26
29
|
}
|
|
27
30
|
exports.SlackApiClient = SlackApiClient;
|
|
28
31
|
exports.slackApiClient = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-api-client.js","sourceRoot":"","sources":["../../src/utils/slack-api-client.ts"],"names":[],"mappings":";;;AACA,8EAA0E;AAC1E,8EAA0E;AAoE1E,MAAa,cAAc;IAIzB,YAAY,KAAa;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,sCAAiB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,sCAAiB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAAY;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,OAAuB;QACvD,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,eAAuB;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"slack-api-client.js","sourceRoot":"","sources":["../../src/utils/slack-api-client.ts"],"names":[],"mappings":";;;AACA,8EAA0E;AAC1E,8EAA0E;AAoE1E,MAAa,cAAc;IAIzB,YAAY,KAAa;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,sCAAiB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,sCAAiB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAAY;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,OAAuB;QACvD,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,eAAuB;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF;AAhCD,wCAgCC;AAEY,QAAA,cAAc,GAAG;IAC5B,YAAY,EAAE,KAAK,EAAE,KAAa,EAAE,OAA4B,EAAsB,EAAE;QACtF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;CACF,CAAC"}
|
|
@@ -8,5 +8,6 @@ export declare class MessageOperations extends BaseSlackClient {
|
|
|
8
8
|
getHistory(channel: string, options: HistoryOptions): Promise<HistoryResult>;
|
|
9
9
|
getChannelUnread(channelNameOrId: string): Promise<ChannelUnreadResult>;
|
|
10
10
|
private fetchUserInfo;
|
|
11
|
+
markAsRead(channelId: string): Promise<void>;
|
|
11
12
|
}
|
|
12
13
|
//# sourceMappingURL=message-operations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-operations.d.ts","sourceRoot":"","sources":["../../../src/utils/slack-operations/message-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAW,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAIlG,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,UAAU,CAAoB;gBAE1B,KAAK,EAAE,MAAM;IAKnB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAO5E,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB5E,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAsC/D,aAAa;
|
|
1
|
+
{"version":3,"file":"message-operations.d.ts","sourceRoot":"","sources":["../../../src/utils/slack-operations/message-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAW,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAIlG,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,UAAU,CAAoB;gBAE1B,KAAK,EAAE,MAAM;IAKnB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAO5E,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB5E,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAsC/D,aAAa;IAoBrB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMnD"}
|
|
@@ -88,6 +88,12 @@ class MessageOperations extends base_client_1.BaseSlackClient {
|
|
|
88
88
|
}
|
|
89
89
|
return users;
|
|
90
90
|
}
|
|
91
|
+
async markAsRead(channelId) {
|
|
92
|
+
await this.client.conversations.mark({
|
|
93
|
+
channel: channelId,
|
|
94
|
+
ts: Date.now() / 1000 + '',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
91
97
|
}
|
|
92
98
|
exports.MessageOperations = MessageOperations;
|
|
93
99
|
//# sourceMappingURL=message-operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-operations.js","sourceRoot":"","sources":["../../../src/utils/slack-operations/message-operations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"message-operations.js","sourceRoot":"","sources":["../../../src/utils/slack-operations/message-operations.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands/unread.ts
CHANGED
|
@@ -26,6 +26,11 @@ async function handleSpecificChannelUnread(
|
|
|
26
26
|
countOnly: countOnly,
|
|
27
27
|
format: format,
|
|
28
28
|
});
|
|
29
|
+
|
|
30
|
+
if (parseBoolean(options.markRead)) {
|
|
31
|
+
await client.markAsRead(result.channel.id);
|
|
32
|
+
console.log(chalk.green(`✓ Marked messages in #${result.channel.name} as read`));
|
|
33
|
+
}
|
|
29
34
|
}
|
|
30
35
|
|
|
31
36
|
async function handleAllChannelsUnread(
|
|
@@ -48,6 +53,14 @@ async function handleAllChannelsUnread(
|
|
|
48
53
|
|
|
49
54
|
const formatter = createChannelFormatter(format, countOnly);
|
|
50
55
|
formatter.format({ channels: displayChannels, countOnly: countOnly });
|
|
56
|
+
|
|
57
|
+
if (parseBoolean(options.markRead)) {
|
|
58
|
+
// Mark all unread channels as read
|
|
59
|
+
for (const channel of channels) {
|
|
60
|
+
await client.markAsRead(channel.id);
|
|
61
|
+
}
|
|
62
|
+
console.log(chalk.green('✓ Marked all messages as read'));
|
|
63
|
+
}
|
|
51
64
|
}
|
|
52
65
|
|
|
53
66
|
export function setupUnreadCommand(): Command {
|
|
@@ -61,6 +74,7 @@ export function setupUnreadCommand(): Command {
|
|
|
61
74
|
'Maximum number of channels to display',
|
|
62
75
|
DEFAULTS.UNREAD_DISPLAY_LIMIT.toString()
|
|
63
76
|
)
|
|
77
|
+
.option('--mark-read', 'Mark messages as read after fetching', false)
|
|
64
78
|
.option('--profile <profile>', 'Use specific workspace profile')
|
|
65
79
|
.action(
|
|
66
80
|
wrapCommand(async (options: UnreadOptions) => {
|
package/src/types/commands.ts
CHANGED
|
@@ -96,6 +96,10 @@ export class SlackApiClient {
|
|
|
96
96
|
async getChannelUnread(channelNameOrId: string): Promise<ChannelUnreadResult> {
|
|
97
97
|
return this.messageOps.getChannelUnread(channelNameOrId);
|
|
98
98
|
}
|
|
99
|
+
|
|
100
|
+
async markAsRead(channelId: string): Promise<void> {
|
|
101
|
+
return this.messageOps.markAsRead(channelId);
|
|
102
|
+
}
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
export const slackApiClient = {
|
|
@@ -103,4 +103,11 @@ export class MessageOperations extends BaseSlackClient {
|
|
|
103
103
|
|
|
104
104
|
return users;
|
|
105
105
|
}
|
|
106
|
+
|
|
107
|
+
async markAsRead(channelId: string): Promise<void> {
|
|
108
|
+
await this.client.conversations.mark({
|
|
109
|
+
channel: channelId,
|
|
110
|
+
ts: Date.now() / 1000 + '',
|
|
111
|
+
});
|
|
112
|
+
}
|
|
106
113
|
}
|
|
@@ -429,4 +429,64 @@ describe('unread command', () => {
|
|
|
429
429
|
expect(mockConsole.logSpy).toHaveBeenCalledWith(expect.stringContaining('transitioned ES-4359'));
|
|
430
430
|
});
|
|
431
431
|
});
|
|
432
|
+
|
|
433
|
+
describe('mark-read functionality', () => {
|
|
434
|
+
it('should mark messages as read when --mark-read is specified', async () => {
|
|
435
|
+
vi.mocked(mockConfigManager.getConfig).mockResolvedValue({
|
|
436
|
+
token: 'test-token',
|
|
437
|
+
updatedAt: new Date().toISOString()
|
|
438
|
+
});
|
|
439
|
+
vi.mocked(mockSlackClient.listUnreadChannels).mockResolvedValue(
|
|
440
|
+
mockChannelsWithUnread.filter(ch => (ch.unread_count_display || 0) > 0)
|
|
441
|
+
);
|
|
442
|
+
vi.mocked(mockSlackClient.markAsRead).mockResolvedValue(undefined);
|
|
443
|
+
|
|
444
|
+
await program.parseAsync(['node', 'slack-cli', 'unread', '--mark-read']);
|
|
445
|
+
|
|
446
|
+
expect(mockSlackClient.listUnreadChannels).toHaveBeenCalled();
|
|
447
|
+
expect(mockSlackClient.markAsRead).toHaveBeenCalledWith('C123');
|
|
448
|
+
expect(mockSlackClient.markAsRead).toHaveBeenCalledWith('C456');
|
|
449
|
+
expect(mockConsole.logSpy).toHaveBeenCalledWith(chalk.green('✓ Marked all messages as read'));
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
it('should mark messages as read for specific channel when --channel and --mark-read are specified', async () => {
|
|
453
|
+
vi.mocked(mockConfigManager.getConfig).mockResolvedValue({
|
|
454
|
+
token: 'test-token',
|
|
455
|
+
updatedAt: new Date().toISOString()
|
|
456
|
+
});
|
|
457
|
+
vi.mocked(mockSlackClient.getChannelUnread).mockResolvedValue({
|
|
458
|
+
channel: mockChannelsWithUnread[0],
|
|
459
|
+
messages: mockUnreadMessages,
|
|
460
|
+
users: new Map([
|
|
461
|
+
['U123', 'john.doe'],
|
|
462
|
+
['U456', 'jane.smith']
|
|
463
|
+
])
|
|
464
|
+
});
|
|
465
|
+
vi.mocked(mockSlackClient.markAsRead).mockResolvedValue(undefined);
|
|
466
|
+
|
|
467
|
+
await program.parseAsync(['node', 'slack-cli', 'unread', '--channel', 'general', '--mark-read']);
|
|
468
|
+
|
|
469
|
+
expect(mockSlackClient.getChannelUnread).toHaveBeenCalledWith('general');
|
|
470
|
+
expect(mockSlackClient.markAsRead).toHaveBeenCalledWith('C123');
|
|
471
|
+
expect(mockConsole.logSpy).toHaveBeenCalledWith(chalk.green('✓ Marked messages in #general as read'));
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
it('should handle mark as read errors gracefully', async () => {
|
|
475
|
+
vi.mocked(mockConfigManager.getConfig).mockResolvedValue({
|
|
476
|
+
token: 'test-token',
|
|
477
|
+
updatedAt: new Date().toISOString()
|
|
478
|
+
});
|
|
479
|
+
vi.mocked(mockSlackClient.listUnreadChannels).mockResolvedValue(
|
|
480
|
+
mockChannelsWithUnread.filter(ch => (ch.unread_count_display || 0) > 0)
|
|
481
|
+
);
|
|
482
|
+
vi.mocked(mockSlackClient.markAsRead).mockRejectedValue(
|
|
483
|
+
new Error('channel_not_found')
|
|
484
|
+
);
|
|
485
|
+
|
|
486
|
+
await program.parseAsync(['node', 'slack-cli', 'unread', '--mark-read']);
|
|
487
|
+
|
|
488
|
+
expect(mockConsole.errorSpy).toHaveBeenCalledWith(expect.stringContaining('Error:'), expect.any(String));
|
|
489
|
+
expect(mockConsole.exitSpy).toHaveBeenCalledWith(1);
|
|
490
|
+
});
|
|
491
|
+
});
|
|
432
492
|
});
|
package/tests/index.test.ts
CHANGED
|
@@ -11,8 +11,8 @@ describe('slack-cli version', () => {
|
|
|
11
11
|
);
|
|
12
12
|
const expectedVersion = packageJson.version;
|
|
13
13
|
|
|
14
|
-
// Execute the CLI command to get version
|
|
15
|
-
const output = execSync('node
|
|
14
|
+
// Execute the CLI command to get version using ts-node
|
|
15
|
+
const output = execSync('npx ts-node src/index.ts --version', {
|
|
16
16
|
encoding: 'utf-8',
|
|
17
17
|
cwd: join(__dirname, '..')
|
|
18
18
|
}).trim();
|
|
@@ -28,8 +28,8 @@ describe('slack-cli version', () => {
|
|
|
28
28
|
);
|
|
29
29
|
const expectedVersion = packageJson.version;
|
|
30
30
|
|
|
31
|
-
// Execute the CLI command with -V flag
|
|
32
|
-
const output = execSync('node
|
|
31
|
+
// Execute the CLI command with -V flag using ts-node
|
|
32
|
+
const output = execSync('npx ts-node src/index.ts -V', {
|
|
33
33
|
encoding: 'utf-8',
|
|
34
34
|
cwd: join(__dirname, '..')
|
|
35
35
|
}).trim();
|