@urugus/slack-cli 0.2.6 → 0.2.7

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 (34) hide show
  1. package/dist/commands/history.d.ts.map +1 -1
  2. package/dist/commands/history.js +7 -7
  3. package/dist/commands/history.js.map +1 -1
  4. package/dist/commands/send.d.ts.map +1 -1
  5. package/dist/commands/send.js +5 -18
  6. package/dist/commands/send.js.map +1 -1
  7. package/dist/utils/profile-config.d.ts.map +1 -1
  8. package/dist/utils/profile-config.js +2 -6
  9. package/dist/utils/profile-config.js.map +1 -1
  10. package/dist/utils/slack-operations/channel-operations.d.ts +9 -0
  11. package/dist/utils/slack-operations/channel-operations.d.ts.map +1 -1
  12. package/dist/utils/slack-operations/channel-operations.js +77 -50
  13. package/dist/utils/slack-operations/channel-operations.js.map +1 -1
  14. package/dist/utils/token-utils.d.ts +7 -0
  15. package/dist/utils/token-utils.d.ts.map +1 -0
  16. package/dist/utils/token-utils.js +18 -0
  17. package/dist/utils/token-utils.js.map +1 -0
  18. package/dist/utils/validators.d.ts +79 -0
  19. package/dist/utils/validators.d.ts.map +1 -0
  20. package/dist/utils/validators.js +175 -0
  21. package/dist/utils/validators.js.map +1 -0
  22. package/package.json +1 -1
  23. package/src/commands/history.ts +17 -12
  24. package/src/commands/send.ts +8 -19
  25. package/src/utils/profile-config.ts +3 -15
  26. package/src/utils/slack-operations/channel-operations.ts +91 -54
  27. package/src/utils/token-utils.ts +17 -0
  28. package/src/utils/validators.ts +212 -0
  29. package/tests/utils/option-parsers.test.ts +173 -0
  30. package/tests/utils/profile-config.test.ts +282 -0
  31. package/tests/utils/slack-operations/channel-operations-refactored.test.ts +179 -0
  32. package/tests/utils/token-utils.test.ts +33 -0
  33. package/tests/utils/validators.test.ts +307 -0
  34. package/src/utils/profile-config-refactored.ts +0 -161
@@ -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;AAapC,wBAAgB,mBAAmB,IAAI,OAAO,CAmC7C"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,mBAAmB,IAAI,OAAO,CA0C7C"}
@@ -5,6 +5,8 @@ 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");
8
10
  const history_validators_1 = require("./history-validators");
9
11
  const history_display_1 = require("./history-display");
10
12
  function setupHistoryCommand() {
@@ -14,15 +16,13 @@ function setupHistoryCommand() {
14
16
  .option('-n, --number <number>', 'Number of messages to retrieve', constants_1.API_LIMITS.DEFAULT_MESSAGE_COUNT.toString())
15
17
  .option('--since <date>', 'Get messages since specific date (YYYY-MM-DD HH:MM:SS)')
16
18
  .option('--profile <profile>', 'Use specific workspace profile')
17
- .hook('preAction', (thisCommand) => {
18
- const options = thisCommand.opts();
19
- (0, history_validators_1.validateMessageCount)(options.number, thisCommand);
20
- (0, history_validators_1.validateDateFormat)(options.since, thisCommand);
21
- })
19
+ .hook('preAction', (0, validators_1.createValidationHook)([validators_1.optionValidators.messageCount, validators_1.optionValidators.sinceDate]))
22
20
  .action((0, command_wrapper_1.wrapCommand)(async (options) => {
23
- const client = await (0, client_factory_1.createSlackClient)(options.profile);
21
+ const profile = (0, option_parsers_1.parseProfile)(options.profile);
22
+ const client = await (0, client_factory_1.createSlackClient)(profile);
23
+ 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
24
  const historyOptions = {
25
- limit: parseInt(options.number || constants_1.API_LIMITS.DEFAULT_MESSAGE_COUNT.toString(), 10),
25
+ limit,
26
26
  };
27
27
  const oldest = (0, history_validators_1.prepareSinceTimestamp)(options.since);
28
28
  if (oldest) {
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":";;AAaA,kDAmCC;AAhDD,yCAAoC;AAEpC,8DAAuD;AACvD,4DAA4D;AAE5D,kDAAgD;AAChD,6DAI8B;AAC9B,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,qBAAqB,EAAE,gCAAgC,CAAC;SAC/D,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACnC,IAAA,yCAAoB,EAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAClD,IAAA,uCAAkB,EAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC;SACD,MAAM,CACL,IAAA,6BAAW,EAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAA,kCAAiB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExD,MAAM,cAAc,GAAsB;YACxC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,sBAAU,CAAC,qBAAqB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;SACnF,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,IAAA,uCAAqB,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC,CAAC,CACH,CAAC;IAEJ,OAAO,cAAc,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":";;AAWA,kDA0CC;AArDD,yCAAoC;AAEpC,8DAAuD;AACvD,4DAA4D;AAE5D,kDAAgD;AAChD,4DAAmE;AACnE,oDAA6E;AAC7E,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,qBAAqB,EAAE,gCAAgC,CAAC;SAC/D,IAAI,CACH,WAAW,EACX,IAAA,iCAAoB,EAAC,CAAC,6BAAgB,CAAC,YAAY,EAAE,6BAAgB,CAAC,SAAS,CAAC,CAAC,CAClF;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,IAAA,uCAAqB,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,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;AAgBpC,wBAAgB,gBAAgB,IAAI,OAAO,CA6C1C"}
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"}
@@ -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', (thisCommand) => {
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 client = await (0, client_factory_1.createSlackClient)(options.profile);
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,4CA6CC;AA7DD,yCAAoC;AACpC,kDAA0B;AAC1B,8DAAuD;AACvD,kDAAsE;AACtE,4DAA4D;AAC5D,4CAA4C;AAE5C,sDAA2D;AAC3D,gDAAkC;AAElC,SAAS,sBAAsB,CAAC,SAAiB;IAC/C,4CAA4C;IAC5C,MAAM,cAAc,GAAG,iBAAiB,CAAC;IACzC,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED,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,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACtC,WAAW,CAAC,KAAK,CAAC,UAAU,0BAAc,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,WAAW,CAAC,KAAK,CAAC,UAAU,0BAAc,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,WAAW,CAAC,KAAK,CAAC,UAAU,0BAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC;SACD,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,MAAM,GAAG,MAAM,IAAA,kCAAiB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,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"}
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"}
@@ -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;AASnF,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;YAWlB,cAAc;IAsB5B,OAAO,CAAC,cAAc;YAKR,gBAAgB;YAiBhB,eAAe;CAO9B;AAED,eAAO,MAAM,aAAa;6BACD,MAAM;0BAGP,MAAM,KAAG,MAAM,GAAG,SAAS;CAKlD,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
- if (token.length <= constants_1.TOKEN_MIN_LENGTH) {
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":"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"}
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;AAEnE,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;IAC9C,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAuB9D,kBAAkB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAyExC,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAe9E"}
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
- // Get all conversations the user is a member of
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 info = await this.client.conversations.info({
39
- channel: channel.id,
40
- include_num_members: false,
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":"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"}
1
+ {"version":3,"file":"channel-operations.js","sourceRoot":"","sources":["../../../src/utils/slack-operations/channel-operations.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maskToken = maskToken;
4
+ const constants_1 = require("./constants");
5
+ /**
6
+ * Masks a token for display purposes, showing only first and last few characters
7
+ * @param token The token to mask
8
+ * @returns Masked token in format "xoxb-****-****-abcd"
9
+ */
10
+ function maskToken(token) {
11
+ if (token.length <= constants_1.TOKEN_MIN_LENGTH) {
12
+ return '****';
13
+ }
14
+ const prefix = token.substring(0, constants_1.TOKEN_MASK_LENGTH);
15
+ const suffix = token.substring(token.length - constants_1.TOKEN_MASK_LENGTH);
16
+ return `${prefix}-****-****-${suffix}`;
17
+ }
18
+ //# sourceMappingURL=token-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../../src/utils/token-utils.ts"],"names":[],"mappings":";;AAOA,8BASC;AAhBD,2CAAkE;AAElE;;;;GAIG;AACH,SAAgB,SAAS,CAAC,KAAa;IACrC,IAAI,KAAK,CAAC,MAAM,IAAI,4BAAgB,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,6BAAiB,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,6BAAiB,CAAC,CAAC;IAEjE,OAAO,GAAG,MAAM,cAAc,MAAM,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Common validation functions for CLI commands
4
+ */
5
+ export interface ValidationRule<T = unknown> {
6
+ validate: (value: T) => boolean | string;
7
+ errorMessage?: string;
8
+ }
9
+ export interface ValidationOptions {
10
+ required?: boolean;
11
+ rules?: ValidationRule[];
12
+ }
13
+ /**
14
+ * Validates that a value exists (not undefined, null, or empty string)
15
+ */
16
+ export declare function validateRequired(value: unknown, fieldName: string): string | null;
17
+ /**
18
+ * Validates mutually exclusive options
19
+ */
20
+ export declare function validateMutuallyExclusive(options: Record<string, unknown>, fields: string[], errorMessage?: string): string | null;
21
+ /**
22
+ * Validates string format using regex
23
+ */
24
+ export declare function validateFormat(value: string, pattern: RegExp, errorMessage: string): string | null;
25
+ /**
26
+ * Validates numeric range
27
+ */
28
+ export declare function validateRange(value: number, min?: number, max?: number, fieldName?: string): string | null;
29
+ /**
30
+ * Validates date format
31
+ */
32
+ export declare function validateDateFormat(dateString: string): string | null;
33
+ /**
34
+ * Common format validators
35
+ */
36
+ export declare const formatValidators: {
37
+ /**
38
+ * Validates Slack thread timestamp format (1234567890.123456)
39
+ */
40
+ threadTimestamp: (value: string) => string | null;
41
+ /**
42
+ * Validates Slack channel ID format (C1234567890, D1234567890, G1234567890)
43
+ */
44
+ channelId: (value: string) => string | null;
45
+ /**
46
+ * Validates output format options
47
+ */
48
+ outputFormat: (value: string) => string | null;
49
+ };
50
+ /**
51
+ * Creates a preAction hook for command validation
52
+ */
53
+ export declare function createValidationHook(validations: Array<(options: Record<string, unknown>, command: Command) => string | null>): (thisCommand: Command) => void;
54
+ /**
55
+ * Common command option validators
56
+ */
57
+ export declare const optionValidators: {
58
+ /**
59
+ * Validates message/file options for send command
60
+ */
61
+ messageOrFile: (options: Record<string, unknown>) => string | null;
62
+ /**
63
+ * Validates thread timestamp if provided
64
+ */
65
+ threadTimestamp: (options: Record<string, unknown>) => string | null;
66
+ /**
67
+ * Validates message count for history command
68
+ */
69
+ messageCount: (options: Record<string, unknown>) => string | null;
70
+ /**
71
+ * Validates date format for history command
72
+ */
73
+ sinceDate: (options: Record<string, unknown>) => string | null;
74
+ };
75
+ /**
76
+ * Creates a validated option parser
77
+ */
78
+ export declare function createOptionParser<T>(parser: (value: string | undefined, defaultValue: T) => T, validator?: (value: T) => string | null): (value: string | undefined, defaultValue: T) => T;
79
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;GAEG;AAEH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,MAAM,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKjF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,MAAM,EAAE,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CASf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAKf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,SAAS,SAAU,GAClB,MAAM,GAAG,IAAI,CAQf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMpE;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;OAEG;6BACsB,MAAM,KAAG,MAAM,GAAG,IAAI;IAK/C;;OAEG;uBACgB,MAAM,KAAG,MAAM,GAAG,IAAI;IAKzC;;OAEG;0BACmB,MAAM,KAAG,MAAM,GAAG,IAAI;CAO7C,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAC,GACxF,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAYhC;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;OAEG;6BACsB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,GAAG,IAAI;IAUhE;;OAEG;+BACwB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,GAAG,IAAI;IAOlE;;OAEG;4BACqB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,GAAG,IAAI;IAW/D;;OAEG;yBACkB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,GAAG,IAAI;CAS7D,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,EACzD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,GACtC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,CAWnD"}