@kaa5945/slack-cli 2026.4.11

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.
Files changed (320) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +620 -0
  3. package/README.zh-TW.md +620 -0
  4. package/dist/commands/bookmark.d.ts +3 -0
  5. package/dist/commands/bookmark.d.ts.map +1 -0
  6. package/dist/commands/bookmark.js +62 -0
  7. package/dist/commands/bookmark.js.map +1 -0
  8. package/dist/commands/canvas.d.ts +3 -0
  9. package/dist/commands/canvas.d.ts.map +1 -0
  10. package/dist/commands/canvas.js +92 -0
  11. package/dist/commands/canvas.js.map +1 -0
  12. package/dist/commands/channel.d.ts +3 -0
  13. package/dist/commands/channel.d.ts.map +1 -0
  14. package/dist/commands/channel.js +53 -0
  15. package/dist/commands/channel.js.map +1 -0
  16. package/dist/commands/channels.d.ts +3 -0
  17. package/dist/commands/channels.d.ts.map +1 -0
  18. package/dist/commands/channels.js +41 -0
  19. package/dist/commands/channels.js.map +1 -0
  20. package/dist/commands/config-subcommands.d.ts +17 -0
  21. package/dist/commands/config-subcommands.d.ts.map +1 -0
  22. package/dist/commands/config-subcommands.js +170 -0
  23. package/dist/commands/config-subcommands.js.map +1 -0
  24. package/dist/commands/config.d.ts +3 -0
  25. package/dist/commands/config.d.ts.map +1 -0
  26. package/dist/commands/config.js +40 -0
  27. package/dist/commands/config.js.map +1 -0
  28. package/dist/commands/delete.d.ts +3 -0
  29. package/dist/commands/delete.d.ts.map +1 -0
  30. package/dist/commands/delete.js +28 -0
  31. package/dist/commands/delete.js.map +1 -0
  32. package/dist/commands/edit.d.ts +3 -0
  33. package/dist/commands/edit.d.ts.map +1 -0
  34. package/dist/commands/edit.js +29 -0
  35. package/dist/commands/edit.js.map +1 -0
  36. package/dist/commands/history-display.d.ts +9 -0
  37. package/dist/commands/history-display.d.ts.map +1 -0
  38. package/dist/commands/history-display.js +17 -0
  39. package/dist/commands/history-display.js.map +1 -0
  40. package/dist/commands/history-validators.d.ts +5 -0
  41. package/dist/commands/history-validators.d.ts.map +1 -0
  42. package/dist/commands/history-validators.js +35 -0
  43. package/dist/commands/history-validators.js.map +1 -0
  44. package/dist/commands/history.d.ts +3 -0
  45. package/dist/commands/history.d.ts.map +1 -0
  46. package/dist/commands/history.js +141 -0
  47. package/dist/commands/history.js.map +1 -0
  48. package/dist/commands/invite.d.ts +3 -0
  49. package/dist/commands/invite.d.ts.map +1 -0
  50. package/dist/commands/invite.js +34 -0
  51. package/dist/commands/invite.js.map +1 -0
  52. package/dist/commands/join.d.ts +3 -0
  53. package/dist/commands/join.d.ts.map +1 -0
  54. package/dist/commands/join.js +25 -0
  55. package/dist/commands/join.js.map +1 -0
  56. package/dist/commands/leave.d.ts +3 -0
  57. package/dist/commands/leave.d.ts.map +1 -0
  58. package/dist/commands/leave.js +25 -0
  59. package/dist/commands/leave.js.map +1 -0
  60. package/dist/commands/members.d.ts +3 -0
  61. package/dist/commands/members.d.ts.map +1 -0
  62. package/dist/commands/members.js +53 -0
  63. package/dist/commands/members.js.map +1 -0
  64. package/dist/commands/pin.d.ts +3 -0
  65. package/dist/commands/pin.d.ts.map +1 -0
  66. package/dist/commands/pin.js +91 -0
  67. package/dist/commands/pin.js.map +1 -0
  68. package/dist/commands/reaction.d.ts +3 -0
  69. package/dist/commands/reaction.d.ts.map +1 -0
  70. package/dist/commands/reaction.js +45 -0
  71. package/dist/commands/reaction.js.map +1 -0
  72. package/dist/commands/reminder.d.ts +3 -0
  73. package/dist/commands/reminder.d.ts.map +1 -0
  74. package/dist/commands/reminder.js +78 -0
  75. package/dist/commands/reminder.js.map +1 -0
  76. package/dist/commands/scheduled.d.ts +3 -0
  77. package/dist/commands/scheduled.d.ts.map +1 -0
  78. package/dist/commands/scheduled.js +69 -0
  79. package/dist/commands/scheduled.js.map +1 -0
  80. package/dist/commands/search.d.ts +3 -0
  81. package/dist/commands/search.d.ts.map +1 -0
  82. package/dist/commands/search.js +51 -0
  83. package/dist/commands/search.js.map +1 -0
  84. package/dist/commands/send-ephemeral.d.ts +3 -0
  85. package/dist/commands/send-ephemeral.d.ts.map +1 -0
  86. package/dist/commands/send-ephemeral.js +36 -0
  87. package/dist/commands/send-ephemeral.js.map +1 -0
  88. package/dist/commands/send.d.ts +3 -0
  89. package/dist/commands/send.d.ts.map +1 -0
  90. package/dist/commands/send.js +125 -0
  91. package/dist/commands/send.js.map +1 -0
  92. package/dist/commands/unread.d.ts +3 -0
  93. package/dist/commands/unread.d.ts.map +1 -0
  94. package/dist/commands/unread.js +92 -0
  95. package/dist/commands/unread.js.map +1 -0
  96. package/dist/commands/upload.d.ts +3 -0
  97. package/dist/commands/upload.d.ts.map +1 -0
  98. package/dist/commands/upload.js +99 -0
  99. package/dist/commands/upload.js.map +1 -0
  100. package/dist/commands/users.d.ts +3 -0
  101. package/dist/commands/users.d.ts.map +1 -0
  102. package/dist/commands/users.js +138 -0
  103. package/dist/commands/users.js.map +1 -0
  104. package/dist/index.d.ts +5 -0
  105. package/dist/index.d.ts.map +1 -0
  106. package/dist/index.js +76 -0
  107. package/dist/index.js.map +1 -0
  108. package/dist/types/commands.d.ts +216 -0
  109. package/dist/types/commands.d.ts.map +1 -0
  110. package/dist/types/commands.js +3 -0
  111. package/dist/types/commands.js.map +1 -0
  112. package/dist/types/config.d.ts +18 -0
  113. package/dist/types/config.d.ts.map +1 -0
  114. package/dist/types/config.js +3 -0
  115. package/dist/types/config.js.map +1 -0
  116. package/dist/types/slack.d.ts +198 -0
  117. package/dist/types/slack.d.ts.map +1 -0
  118. package/dist/types/slack.js +3 -0
  119. package/dist/types/slack.js.map +1 -0
  120. package/dist/utils/attachment-downloader.d.ts +22 -0
  121. package/dist/utils/attachment-downloader.d.ts.map +1 -0
  122. package/dist/utils/attachment-downloader.js +138 -0
  123. package/dist/utils/attachment-downloader.js.map +1 -0
  124. package/dist/utils/channel-formatter.d.ts +13 -0
  125. package/dist/utils/channel-formatter.d.ts.map +1 -0
  126. package/dist/utils/channel-formatter.js +43 -0
  127. package/dist/utils/channel-formatter.js.map +1 -0
  128. package/dist/utils/channel-resolver.d.ts +27 -0
  129. package/dist/utils/channel-resolver.d.ts.map +1 -0
  130. package/dist/utils/channel-resolver.js +76 -0
  131. package/dist/utils/channel-resolver.js.map +1 -0
  132. package/dist/utils/client-factory.d.ts +6 -0
  133. package/dist/utils/client-factory.d.ts.map +1 -0
  134. package/dist/utils/client-factory.js +13 -0
  135. package/dist/utils/client-factory.js.map +1 -0
  136. package/dist/utils/command-support.d.ts +16 -0
  137. package/dist/utils/command-support.d.ts.map +1 -0
  138. package/dist/utils/command-support.js +29 -0
  139. package/dist/utils/command-support.js.map +1 -0
  140. package/dist/utils/command-wrapper.d.ts +6 -0
  141. package/dist/utils/command-wrapper.d.ts.map +1 -0
  142. package/dist/utils/command-wrapper.js +27 -0
  143. package/dist/utils/command-wrapper.js.map +1 -0
  144. package/dist/utils/config-helper.d.ts +8 -0
  145. package/dist/utils/config-helper.d.ts.map +1 -0
  146. package/dist/utils/config-helper.js +19 -0
  147. package/dist/utils/config-helper.js.map +1 -0
  148. package/dist/utils/constants.d.ts +64 -0
  149. package/dist/utils/constants.d.ts.map +1 -0
  150. package/dist/utils/constants.js +77 -0
  151. package/dist/utils/constants.js.map +1 -0
  152. package/dist/utils/date-utils.d.ts +4 -0
  153. package/dist/utils/date-utils.d.ts.map +1 -0
  154. package/dist/utils/date-utils.js +24 -0
  155. package/dist/utils/date-utils.js.map +1 -0
  156. package/dist/utils/error-utils.d.ts +4 -0
  157. package/dist/utils/error-utils.d.ts.map +1 -0
  158. package/dist/utils/error-utils.js +46 -0
  159. package/dist/utils/error-utils.js.map +1 -0
  160. package/dist/utils/errors.d.ts +17 -0
  161. package/dist/utils/errors.d.ts.map +1 -0
  162. package/dist/utils/errors.js +36 -0
  163. package/dist/utils/errors.js.map +1 -0
  164. package/dist/utils/format-utils.d.ts +4 -0
  165. package/dist/utils/format-utils.d.ts.map +1 -0
  166. package/dist/utils/format-utils.js +24 -0
  167. package/dist/utils/format-utils.js.map +1 -0
  168. package/dist/utils/formatters/base-formatter.d.ts +23 -0
  169. package/dist/utils/formatters/base-formatter.d.ts.map +1 -0
  170. package/dist/utils/formatters/base-formatter.js +27 -0
  171. package/dist/utils/formatters/base-formatter.js.map +1 -0
  172. package/dist/utils/formatters/bookmark-formatters.d.ts +14 -0
  173. package/dist/utils/formatters/bookmark-formatters.d.ts.map +1 -0
  174. package/dist/utils/formatters/bookmark-formatters.js +60 -0
  175. package/dist/utils/formatters/bookmark-formatters.js.map +1 -0
  176. package/dist/utils/formatters/channel-formatters.d.ts +7 -0
  177. package/dist/utils/formatters/channel-formatters.d.ts.map +1 -0
  178. package/dist/utils/formatters/channel-formatters.js +65 -0
  179. package/dist/utils/formatters/channel-formatters.js.map +1 -0
  180. package/dist/utils/formatters/channel-info-formatters.d.ts +6 -0
  181. package/dist/utils/formatters/channel-info-formatters.d.ts.map +1 -0
  182. package/dist/utils/formatters/channel-info-formatters.js +69 -0
  183. package/dist/utils/formatters/channel-info-formatters.js.map +1 -0
  184. package/dist/utils/formatters/channels-list-formatters.d.ts +6 -0
  185. package/dist/utils/formatters/channels-list-formatters.d.ts.map +1 -0
  186. package/dist/utils/formatters/channels-list-formatters.js +49 -0
  187. package/dist/utils/formatters/channels-list-formatters.js.map +1 -0
  188. package/dist/utils/formatters/history-formatters.d.ts +10 -0
  189. package/dist/utils/formatters/history-formatters.d.ts.map +1 -0
  190. package/dist/utils/formatters/history-formatters.js +87 -0
  191. package/dist/utils/formatters/history-formatters.js.map +1 -0
  192. package/dist/utils/formatters/members-formatters.d.ts +10 -0
  193. package/dist/utils/formatters/members-formatters.d.ts.map +1 -0
  194. package/dist/utils/formatters/members-formatters.js +42 -0
  195. package/dist/utils/formatters/members-formatters.js.map +1 -0
  196. package/dist/utils/formatters/message-formatters.d.ts +12 -0
  197. package/dist/utils/formatters/message-formatters.d.ts.map +1 -0
  198. package/dist/utils/formatters/message-formatters.js +95 -0
  199. package/dist/utils/formatters/message-formatters.js.map +1 -0
  200. package/dist/utils/formatters/reminder-formatters.d.ts +12 -0
  201. package/dist/utils/formatters/reminder-formatters.d.ts.map +1 -0
  202. package/dist/utils/formatters/reminder-formatters.js +64 -0
  203. package/dist/utils/formatters/reminder-formatters.js.map +1 -0
  204. package/dist/utils/formatters/search-formatters.d.ts +10 -0
  205. package/dist/utils/formatters/search-formatters.d.ts.map +1 -0
  206. package/dist/utils/formatters/search-formatters.js +87 -0
  207. package/dist/utils/formatters/search-formatters.js.map +1 -0
  208. package/dist/utils/mention-utils.d.ts +17 -0
  209. package/dist/utils/mention-utils.d.ts.map +1 -0
  210. package/dist/utils/mention-utils.js +45 -0
  211. package/dist/utils/mention-utils.js.map +1 -0
  212. package/dist/utils/option-parsers.d.ts +47 -0
  213. package/dist/utils/option-parsers.d.ts.map +1 -0
  214. package/dist/utils/option-parsers.js +75 -0
  215. package/dist/utils/option-parsers.js.map +1 -0
  216. package/dist/utils/profile-config.d.ts +19 -0
  217. package/dist/utils/profile-config.d.ts.map +1 -0
  218. package/dist/utils/profile-config.js +203 -0
  219. package/dist/utils/profile-config.js.map +1 -0
  220. package/dist/utils/schedule-utils.d.ts +3 -0
  221. package/dist/utils/schedule-utils.d.ts.map +1 -0
  222. package/dist/utils/schedule-utils.js +34 -0
  223. package/dist/utils/schedule-utils.js.map +1 -0
  224. package/dist/utils/slack-api-client.d.ts +3 -0
  225. package/dist/utils/slack-api-client.d.ts.map +1 -0
  226. package/dist/utils/slack-api-client.js +22 -0
  227. package/dist/utils/slack-api-client.js.map +1 -0
  228. package/dist/utils/slack-client-service.d.ts +66 -0
  229. package/dist/utils/slack-client-service.d.ts.map +1 -0
  230. package/dist/utils/slack-client-service.js +181 -0
  231. package/dist/utils/slack-client-service.js.map +1 -0
  232. package/dist/utils/slack-operations/base-client.d.ts +18 -0
  233. package/dist/utils/slack-operations/base-client.d.ts.map +1 -0
  234. package/dist/utils/slack-operations/base-client.js +52 -0
  235. package/dist/utils/slack-operations/base-client.js.map +1 -0
  236. package/dist/utils/slack-operations/canvas-operations.d.ts +10 -0
  237. package/dist/utils/slack-operations/canvas-operations.d.ts.map +1 -0
  238. package/dist/utils/slack-operations/canvas-operations.js +28 -0
  239. package/dist/utils/slack-operations/canvas-operations.js.map +1 -0
  240. package/dist/utils/slack-operations/channel-operations.d.ts +33 -0
  241. package/dist/utils/slack-operations/channel-operations.d.ts.map +1 -0
  242. package/dist/utils/slack-operations/channel-operations.js +276 -0
  243. package/dist/utils/slack-operations/channel-operations.js.map +1 -0
  244. package/dist/utils/slack-operations/file-operations.d.ts +19 -0
  245. package/dist/utils/slack-operations/file-operations.d.ts.map +1 -0
  246. package/dist/utils/slack-operations/file-operations.js +51 -0
  247. package/dist/utils/slack-operations/file-operations.js.map +1 -0
  248. package/dist/utils/slack-operations/index.d.ts +5 -0
  249. package/dist/utils/slack-operations/index.d.ts.map +1 -0
  250. package/dist/utils/slack-operations/index.js +12 -0
  251. package/dist/utils/slack-operations/index.js.map +1 -0
  252. package/dist/utils/slack-operations/message-history-operations.d.ts +17 -0
  253. package/dist/utils/slack-operations/message-history-operations.d.ts.map +1 -0
  254. package/dist/utils/slack-operations/message-history-operations.js +101 -0
  255. package/dist/utils/slack-operations/message-history-operations.js.map +1 -0
  256. package/dist/utils/slack-operations/message-operations.d.ts +24 -0
  257. package/dist/utils/slack-operations/message-operations.d.ts.map +1 -0
  258. package/dist/utils/slack-operations/message-operations.js +61 -0
  259. package/dist/utils/slack-operations/message-operations.js.map +1 -0
  260. package/dist/utils/slack-operations/message-permalink-operations.d.ts +10 -0
  261. package/dist/utils/slack-operations/message-permalink-operations.d.ts.map +1 -0
  262. package/dist/utils/slack-operations/message-permalink-operations.js +49 -0
  263. package/dist/utils/slack-operations/message-permalink-operations.js.map +1 -0
  264. package/dist/utils/slack-operations/message-user-resolver.d.ts +7 -0
  265. package/dist/utils/slack-operations/message-user-resolver.d.ts.map +1 -0
  266. package/dist/utils/slack-operations/message-user-resolver.js +27 -0
  267. package/dist/utils/slack-operations/message-user-resolver.js.map +1 -0
  268. package/dist/utils/slack-operations/message-write-operations.d.ts +17 -0
  269. package/dist/utils/slack-operations/message-write-operations.d.ts.map +1 -0
  270. package/dist/utils/slack-operations/message-write-operations.js +76 -0
  271. package/dist/utils/slack-operations/message-write-operations.js.map +1 -0
  272. package/dist/utils/slack-operations/pin-operations.d.ts +11 -0
  273. package/dist/utils/slack-operations/pin-operations.d.ts.map +1 -0
  274. package/dist/utils/slack-operations/pin-operations.js +34 -0
  275. package/dist/utils/slack-operations/pin-operations.js.map +1 -0
  276. package/dist/utils/slack-operations/reaction-operations.d.ts +10 -0
  277. package/dist/utils/slack-operations/reaction-operations.d.ts.map +1 -0
  278. package/dist/utils/slack-operations/reaction-operations.js +32 -0
  279. package/dist/utils/slack-operations/reaction-operations.js.map +1 -0
  280. package/dist/utils/slack-operations/reminder-operations.d.ts +10 -0
  281. package/dist/utils/slack-operations/reminder-operations.d.ts.map +1 -0
  282. package/dist/utils/slack-operations/reminder-operations.js +32 -0
  283. package/dist/utils/slack-operations/reminder-operations.js.map +1 -0
  284. package/dist/utils/slack-operations/search-operations.d.ts +11 -0
  285. package/dist/utils/slack-operations/search-operations.d.ts.map +1 -0
  286. package/dist/utils/slack-operations/search-operations.js +116 -0
  287. package/dist/utils/slack-operations/search-operations.js.map +1 -0
  288. package/dist/utils/slack-operations/star-operations.d.ts +9 -0
  289. package/dist/utils/slack-operations/star-operations.d.ts.map +1 -0
  290. package/dist/utils/slack-operations/star-operations.js +32 -0
  291. package/dist/utils/slack-operations/star-operations.js.map +1 -0
  292. package/dist/utils/slack-operations/user-operations.d.ts +12 -0
  293. package/dist/utils/slack-operations/user-operations.d.ts.map +1 -0
  294. package/dist/utils/slack-operations/user-operations.js +69 -0
  295. package/dist/utils/slack-operations/user-operations.js.map +1 -0
  296. package/dist/utils/slack-patterns.d.ts +20 -0
  297. package/dist/utils/slack-patterns.d.ts.map +1 -0
  298. package/dist/utils/slack-patterns.js +54 -0
  299. package/dist/utils/slack-patterns.js.map +1 -0
  300. package/dist/utils/terminal-sanitizer.d.ts +7 -0
  301. package/dist/utils/terminal-sanitizer.d.ts.map +1 -0
  302. package/dist/utils/terminal-sanitizer.js +51 -0
  303. package/dist/utils/terminal-sanitizer.js.map +1 -0
  304. package/dist/utils/token-crypto-service.d.ts +40 -0
  305. package/dist/utils/token-crypto-service.d.ts.map +1 -0
  306. package/dist/utils/token-crypto-service.js +273 -0
  307. package/dist/utils/token-crypto-service.js.map +1 -0
  308. package/dist/utils/token-utils.d.ts +7 -0
  309. package/dist/utils/token-utils.d.ts.map +1 -0
  310. package/dist/utils/token-utils.js +18 -0
  311. package/dist/utils/token-utils.js.map +1 -0
  312. package/dist/utils/update-notifier.d.ts +10 -0
  313. package/dist/utils/update-notifier.d.ts.map +1 -0
  314. package/dist/utils/update-notifier.js +147 -0
  315. package/dist/utils/update-notifier.js.map +1 -0
  316. package/dist/utils/validators.d.ts +147 -0
  317. package/dist/utils/validators.d.ts.map +1 -0
  318. package/dist/utils/validators.js +401 -0
  319. package/dist/utils/validators.js.map +1 -0
  320. package/package.json +58 -0
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optionValidators = exports.formatValidators = void 0;
4
+ exports.validateRequired = validateRequired;
5
+ exports.validateMutuallyExclusive = validateMutuallyExclusive;
6
+ exports.validateFormat = validateFormat;
7
+ exports.validateRange = validateRange;
8
+ exports.validateDateFormat = validateDateFormat;
9
+ exports.createValidationHook = createValidationHook;
10
+ exports.createOptionParser = createOptionParser;
11
+ const constants_1 = require("./constants");
12
+ const errors_1 = require("./errors");
13
+ const schedule_utils_1 = require("./schedule-utils");
14
+ /**
15
+ * Validates that a value exists (not undefined, null, or empty string)
16
+ */
17
+ function validateRequired(value, fieldName) {
18
+ if (value === undefined || value === null || value === '') {
19
+ return `${fieldName} is required`;
20
+ }
21
+ return null;
22
+ }
23
+ /**
24
+ * Validates mutually exclusive options
25
+ */
26
+ function validateMutuallyExclusive(options, fields, errorMessage) {
27
+ const presentFields = fields.filter((field) => options[field] !== undefined);
28
+ if (presentFields.length > 1) {
29
+ return errorMessage || `Cannot use both ${presentFields.join(' and ')}`;
30
+ }
31
+ if (presentFields.length === 0) {
32
+ return errorMessage || `Must specify one of: ${fields.join(', ')}`;
33
+ }
34
+ return null;
35
+ }
36
+ /**
37
+ * Validates string format using regex
38
+ */
39
+ function validateFormat(value, pattern, errorMessage) {
40
+ if (!pattern.test(value)) {
41
+ return errorMessage;
42
+ }
43
+ return null;
44
+ }
45
+ /**
46
+ * Validates numeric range
47
+ */
48
+ function validateRange(value, min, max, fieldName = 'Value') {
49
+ if (min !== undefined && value < min) {
50
+ return `${fieldName} must be at least ${min}`;
51
+ }
52
+ if (max !== undefined && value > max) {
53
+ return `${fieldName} must be at most ${max}`;
54
+ }
55
+ return null;
56
+ }
57
+ /**
58
+ * Validates date format
59
+ */
60
+ function validateDateFormat(dateString) {
61
+ const date = new Date(dateString);
62
+ if (isNaN(date.getTime())) {
63
+ return 'Invalid date format';
64
+ }
65
+ return null;
66
+ }
67
+ /**
68
+ * Common format validators
69
+ */
70
+ exports.formatValidators = {
71
+ /**
72
+ * Validates Slack thread timestamp format (1234567890.123456)
73
+ */
74
+ threadTimestamp: (value) => {
75
+ const pattern = /^\d{10}\.\d{6}$/;
76
+ return validateFormat(value, pattern, constants_1.ERROR_MESSAGES.INVALID_THREAD_TIMESTAMP);
77
+ },
78
+ /**
79
+ * Validates Slack channel ID format (C1234567890, D1234567890, G1234567890)
80
+ */
81
+ channelId: (value) => {
82
+ const pattern = /^[CDG][A-Z0-9]{10,}$/;
83
+ return validateFormat(value, pattern, 'Invalid channel ID format');
84
+ },
85
+ /**
86
+ * Validates output format options
87
+ */
88
+ outputFormat: (value) => {
89
+ const validFormats = ['table', 'simple', 'json', 'compact'];
90
+ if (!validFormats.includes(value)) {
91
+ return `Invalid format. Must be one of: ${validFormats.join(', ')}`;
92
+ }
93
+ return null;
94
+ },
95
+ };
96
+ /**
97
+ * Creates a preAction hook for command validation
98
+ */
99
+ function createValidationHook(validations) {
100
+ return (thisCommand) => {
101
+ const options = thisCommand.opts();
102
+ for (const validation of validations) {
103
+ const error = validation(options, thisCommand);
104
+ if (error) {
105
+ thisCommand.error(`Error: ${error}`);
106
+ break; // Stop processing after first error
107
+ }
108
+ }
109
+ };
110
+ }
111
+ /**
112
+ * Common command option validators
113
+ */
114
+ exports.optionValidators = {
115
+ /**
116
+ * Validates send target: must specify exactly one of --channel, --user, or --email
117
+ */
118
+ sendTarget: (options) => {
119
+ const hasChannel = !!options.channel;
120
+ const hasUser = !!options.user;
121
+ const hasEmail = !!options.email;
122
+ if (!hasChannel && !hasUser && !hasEmail) {
123
+ return 'You must specify one of: --channel, --user, or --email';
124
+ }
125
+ if (hasChannel && (hasUser || hasEmail)) {
126
+ return 'Cannot use --channel with --user or --email';
127
+ }
128
+ if (hasUser && hasEmail) {
129
+ return 'Cannot use --user and --email together';
130
+ }
131
+ return null;
132
+ },
133
+ /**
134
+ * Validates required channel option
135
+ */
136
+ requiredChannel: (options) => {
137
+ if (!options.channel) {
138
+ return '--channel is required';
139
+ }
140
+ return null;
141
+ },
142
+ /**
143
+ * Validates required user option
144
+ */
145
+ requiredUser: (options) => {
146
+ if (!options.user) {
147
+ return '--user is required';
148
+ }
149
+ return null;
150
+ },
151
+ /**
152
+ * Validates required message option
153
+ */
154
+ requiredMessage: (options) => {
155
+ if (!options.message) {
156
+ return '--message is required';
157
+ }
158
+ return null;
159
+ },
160
+ /**
161
+ * Validates message/file options for send command
162
+ */
163
+ messageOrFile: (options) => {
164
+ if (!options.message && !options.file) {
165
+ return constants_1.ERROR_MESSAGES.NO_MESSAGE_OR_FILE;
166
+ }
167
+ if (options.message && options.file) {
168
+ return constants_1.ERROR_MESSAGES.BOTH_MESSAGE_AND_FILE;
169
+ }
170
+ return null;
171
+ },
172
+ /**
173
+ * Validates thread timestamp if provided
174
+ */
175
+ threadTimestamp: (options) => {
176
+ if (options.thread) {
177
+ return exports.formatValidators.threadTimestamp(options.thread);
178
+ }
179
+ return null;
180
+ },
181
+ /**
182
+ * Validates file or content options for upload command
183
+ */
184
+ fileOrContent: (options) => {
185
+ if (!options.file && !options.content) {
186
+ return 'You must specify either --file or --content';
187
+ }
188
+ if (options.file && options.content) {
189
+ return 'Cannot use both --file and --content';
190
+ }
191
+ return null;
192
+ },
193
+ /**
194
+ * Validates upload thread timestamp if provided
195
+ */
196
+ uploadThreadTimestamp: (options) => {
197
+ if (options.thread) {
198
+ return exports.formatValidators.threadTimestamp(options.thread);
199
+ }
200
+ return null;
201
+ },
202
+ /**
203
+ * Validates edit message timestamp if provided
204
+ */
205
+ editTimestamp: (options) => {
206
+ if (options.ts) {
207
+ const pattern = /^\d{10}\.\d{6}$/;
208
+ if (!pattern.test(options.ts)) {
209
+ return 'Invalid message timestamp format';
210
+ }
211
+ }
212
+ return null;
213
+ },
214
+ /**
215
+ * Validates delete message timestamp if provided
216
+ */
217
+ deleteTimestamp: (options) => {
218
+ if (options.ts) {
219
+ const pattern = /^\d{10}\.\d{6}$/;
220
+ if (!pattern.test(options.ts)) {
221
+ return 'Invalid message timestamp format';
222
+ }
223
+ }
224
+ return null;
225
+ },
226
+ /**
227
+ * Validates reaction timestamp if provided
228
+ */
229
+ reactionTimestamp: (options) => {
230
+ if (options.timestamp) {
231
+ return exports.formatValidators.threadTimestamp(options.timestamp);
232
+ }
233
+ return null;
234
+ },
235
+ /**
236
+ * Validates pin timestamp if provided
237
+ */
238
+ pinTimestamp: (options) => {
239
+ if (options.timestamp) {
240
+ return exports.formatValidators.threadTimestamp(options.timestamp);
241
+ }
242
+ return null;
243
+ },
244
+ /**
245
+ * Validates schedule options for send command
246
+ */
247
+ scheduleTiming: (options) => {
248
+ const at = options.at;
249
+ const after = options.after;
250
+ if (at && after) {
251
+ return constants_1.ERROR_MESSAGES.BOTH_SCHEDULE_OPTIONS;
252
+ }
253
+ if (at) {
254
+ const postAt = (0, schedule_utils_1.parseScheduledTimestamp)(at);
255
+ if (postAt === null) {
256
+ return constants_1.ERROR_MESSAGES.INVALID_SCHEDULE_AT;
257
+ }
258
+ if (postAt <= Math.floor(Date.now() / 1000)) {
259
+ return constants_1.ERROR_MESSAGES.SCHEDULE_TIME_IN_PAST;
260
+ }
261
+ }
262
+ if (after) {
263
+ const trimmedAfter = after.trim();
264
+ if (!/^\d+$/.test(trimmedAfter)) {
265
+ return constants_1.ERROR_MESSAGES.INVALID_SCHEDULE_AFTER;
266
+ }
267
+ const minutes = Number.parseInt(trimmedAfter, 10);
268
+ if (!Number.isSafeInteger(minutes) || minutes <= 0) {
269
+ return constants_1.ERROR_MESSAGES.INVALID_SCHEDULE_AFTER;
270
+ }
271
+ }
272
+ return null;
273
+ },
274
+ /**
275
+ * Validates message count for history command
276
+ */
277
+ messageCount: (options) => {
278
+ if (options.number) {
279
+ const count = parseInt(options.number, 10);
280
+ if (isNaN(count)) {
281
+ return 'Message count must be a number';
282
+ }
283
+ return validateRange(count, 1, 1000, 'Message count');
284
+ }
285
+ return null;
286
+ },
287
+ /**
288
+ * Validates date format for history command
289
+ */
290
+ sinceDate: (options) => {
291
+ if (options.since) {
292
+ const error = validateDateFormat(options.since);
293
+ if (error) {
294
+ return 'Invalid date format. Use YYYY-MM-DD HH:MM:SS';
295
+ }
296
+ }
297
+ return null;
298
+ },
299
+ /**
300
+ * Validates reminder timing options
301
+ */
302
+ reminderTiming: (options) => {
303
+ const at = options.at;
304
+ const after = options.after;
305
+ if (!at && !after) {
306
+ return 'You must specify either --at or --after';
307
+ }
308
+ if (at && after) {
309
+ return 'Cannot use both --at and --after';
310
+ }
311
+ if (after) {
312
+ const trimmedAfter = after.trim();
313
+ if (!/^\d+$/.test(trimmedAfter)) {
314
+ return '--after must be a positive integer (minutes)';
315
+ }
316
+ const minutes = Number.parseInt(trimmedAfter, 10);
317
+ if (!Number.isSafeInteger(minutes) || minutes <= 0) {
318
+ return '--after must be a positive integer (minutes)';
319
+ }
320
+ }
321
+ return null;
322
+ },
323
+ /**
324
+ * Validates format option
325
+ */
326
+ format: (options) => {
327
+ if (options.format) {
328
+ const validFormats = ['table', 'simple', 'json'];
329
+ if (!validFormats.includes(options.format)) {
330
+ return `Invalid format '${options.format}'. Must be one of: ${validFormats.join(', ')}`;
331
+ }
332
+ }
333
+ return null;
334
+ },
335
+ /**
336
+ * Validates sort option for search command
337
+ */
338
+ searchSort: (options) => {
339
+ if (options.sort) {
340
+ const validSorts = ['score', 'timestamp'];
341
+ if (!validSorts.includes(options.sort)) {
342
+ return `Invalid sort '${options.sort}'. Must be one of: ${validSorts.join(', ')}`;
343
+ }
344
+ }
345
+ return null;
346
+ },
347
+ /**
348
+ * Validates sort direction option for search command
349
+ */
350
+ searchSortDir: (options) => {
351
+ if (options.sortDir) {
352
+ const validDirs = ['asc', 'desc'];
353
+ if (!validDirs.includes(options.sortDir)) {
354
+ return `Invalid sort direction '${options.sortDir}'. Must be one of: ${validDirs.join(', ')}`;
355
+ }
356
+ }
357
+ return null;
358
+ },
359
+ /**
360
+ * Validates page number for search command
361
+ */
362
+ searchPage: (options) => {
363
+ if (options.page) {
364
+ const page = parseInt(options.page, 10);
365
+ if (isNaN(page)) {
366
+ return 'Page must be a number';
367
+ }
368
+ return validateRange(page, 1, 100, 'Page');
369
+ }
370
+ return null;
371
+ },
372
+ /**
373
+ * Validates search count
374
+ */
375
+ searchCount: (options) => {
376
+ if (options.number) {
377
+ const count = parseInt(options.number, 10);
378
+ if (isNaN(count)) {
379
+ return 'Count must be a number';
380
+ }
381
+ return validateRange(count, 1, 100, 'Count');
382
+ }
383
+ return null;
384
+ },
385
+ };
386
+ /**
387
+ * Creates a validated option parser
388
+ */
389
+ function createOptionParser(parser, validator) {
390
+ return (value, defaultValue) => {
391
+ const parsed = parser(value, defaultValue);
392
+ if (validator) {
393
+ const error = validator(parsed);
394
+ if (error) {
395
+ throw new errors_1.ValidationError(error);
396
+ }
397
+ }
398
+ return parsed;
399
+ };
400
+ }
401
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@kaa5945/slack-cli",
3
+ "version": "2026.4.11",
4
+ "description": "A command-line tool for sending messages to Slack",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "slack-cli": "dist/index.js"
8
+ },
9
+ "files": ["dist"],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "ts-node src/index.ts",
13
+ "start": "node dist/index.js",
14
+ "test": "vitest",
15
+ "test:watch": "vitest --watch",
16
+ "test:coverage": "vitest --coverage",
17
+ "lint": "biome lint .",
18
+ "lint:fix": "biome lint --write .",
19
+ "format": "biome format --write .",
20
+ "format:check": "biome check .",
21
+ "check": "biome check .",
22
+ "check:fix": "biome check --write .",
23
+ "prepublishOnly": "npm run build"
24
+ },
25
+ "keywords": ["slack", "cli", "command-line", "messaging", "api"],
26
+ "author": "urugus",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/adamtan945/slack-cli.git"
30
+ },
31
+ "homepage": "https://github.com/adamtan945/slack-cli#readme",
32
+ "bugs": {
33
+ "url": "https://github.com/adamtan945/slack-cli/issues"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "license": "MIT",
39
+ "dependencies": {
40
+ "@slack/web-api": "7.15.0",
41
+ "chalk": "5.6.2",
42
+ "commander": "14.0.3",
43
+ "p-limit": "7.3.0",
44
+ "semver": "7.7.4"
45
+ },
46
+ "devDependencies": {
47
+ "@biomejs/biome": "2.4.10",
48
+ "@types/node": "25.5.0",
49
+ "@types/semver": "7.7.1",
50
+ "@vitest/coverage-v8": "4.1.2",
51
+ "ts-node": "10.9.2",
52
+ "typescript": "6.0.2",
53
+ "vitest": "4.1.2"
54
+ },
55
+ "engines": {
56
+ "node": ">=20.0.0"
57
+ }
58
+ }