slack-term 1.33.0 → 1.34.0
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/README.md +6 -0
- package/dist/cli.js +83 -82
- package/package.json +1 -1
- package/ts/cli.ts +20 -0
package/dist/cli.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
import{createRequire as _u}from"node:module";var bu=Object.create;var{getPrototypeOf:wu,defineProperty:lo,getOwnPropertyNames:Fu}=Object;var fo=Object.prototype.hasOwnProperty;function Cu(e){return this[e]}var Eu,xu,ho=(e,t,n)=>{var r=e!=null&&typeof e==="object";if(r){var s=t?Eu??=new WeakMap:xu??=new WeakMap,o=s.get(e);if(o)return o}n=e!=null?bu(wu(e)):{};let i=t||!e||!e.__esModule||!fo.call(e,"default")?lo(n,"default",{value:e,enumerable:!0}):n;if(e&&typeof e==="object"||typeof e==="function"){for(let a of Fu(e))if(!fo.call(i,a))lo(i,a,{get:Cu.bind(e,a),enumerable:!0})}if(r)s.set(e,i);return i};var po=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Bs=_u(import.meta.url);var To=po(function(xh,Io){Io.exports=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});var ri=po(function(dp,si){si.exports=function(t){if(t===void 0)t=2;if(t>=Error.stackTraceLimit)throw TypeError("getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `"+t+"` and Error.stackTraceLimit was: `"+Error.stackTraceLimit+"`");var n=Error.prepareStackTrace;Error.prepareStackTrace=function(s,o){return o};var r=Error().stack;if(Error.prepareStackTrace=n,r!==null&&typeof r==="object")return r[t]?r[t].getFileName():void 0}});import{createHash as nd}from"crypto";import{existsSync as lu,readFileSync as sd,mkdirSync as rd,writeFileSync as fu}from"fs";import{homedir as tu}from"os";import{join as ht}from"path";import{notStrictEqual as ll,strictEqual as fl}from"assert";var ku={right:$u,center:Ou};class mo{constructor(e){var t;this.width=e.width,this.wrap=(t=e.wrap)!==null&&t!==void 0?t:!0,this.rows=[]}span(...e){let t=this.div(...e);t.span=!0}resetOutput(){this.rows=[]}div(...e){if(e.length===0)this.div("");if(this.wrap&&this.shouldApplyLayoutDSL(...e)&&typeof e[0]==="string")return this.applyLayoutDSL(e[0]);let t=e.map((n)=>{if(typeof n==="string")return this.colFromString(n);return n});return this.rows.push(t),t}shouldApplyLayoutDSL(...e){return e.length===1&&typeof e[0]==="string"&&/[\t\n]/.test(e[0])}applyLayoutDSL(e){let t=e.split(`
|
|
3
|
+
import{createRequire as _u}from"node:module";var bu=Object.create;var{getPrototypeOf:wu,defineProperty:fo,getOwnPropertyNames:Fu}=Object;var ho=Object.prototype.hasOwnProperty;function Cu(e){return this[e]}var Eu,xu,po=(e,t,n)=>{var r=e!=null&&typeof e==="object";if(r){var s=t?Eu??=new WeakMap:xu??=new WeakMap,o=s.get(e);if(o)return o}n=e!=null?bu(wu(e)):{};let i=t||!e||!e.__esModule||!ho.call(e,"default")?fo(n,"default",{value:e,enumerable:!0}):n;if(e&&typeof e==="object"||typeof e==="function"){for(let a of Fu(e))if(!ho.call(i,a))fo(i,a,{get:Cu.bind(e,a),enumerable:!0})}if(r)s.set(e,i);return i};var go=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Bs=_u(import.meta.url);var Po=go(function(xh,To){To.exports=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});var oi=go(function(dp,ri){ri.exports=function(t){if(t===void 0)t=2;if(t>=Error.stackTraceLimit)throw TypeError("getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `"+t+"` and Error.stackTraceLimit was: `"+Error.stackTraceLimit+"`");var n=Error.prepareStackTrace;Error.prepareStackTrace=function(s,o){return o};var r=Error().stack;if(Error.prepareStackTrace=n,r!==null&&typeof r==="object")return r[t]?r[t].getFileName():void 0}});import{createHash as nd}from"crypto";import{existsSync as lu,readFileSync as sd,mkdirSync as rd,writeFileSync as fu}from"fs";import{homedir as tu}from"os";import{join as ht}from"path";import{notStrictEqual as ll,strictEqual as fl}from"assert";var ku={right:$u,center:Ou};class Do{constructor(e){var t;this.width=e.width,this.wrap=(t=e.wrap)!==null&&t!==void 0?t:!0,this.rows=[]}span(...e){let t=this.div(...e);t.span=!0}resetOutput(){this.rows=[]}div(...e){if(e.length===0)this.div("");if(this.wrap&&this.shouldApplyLayoutDSL(...e)&&typeof e[0]==="string")return this.applyLayoutDSL(e[0]);let t=e.map((n)=>{if(typeof n==="string")return this.colFromString(n);return n});return this.rows.push(t),t}shouldApplyLayoutDSL(...e){return e.length===1&&typeof e[0]==="string"&&/[\t\n]/.test(e[0])}applyLayoutDSL(e){let t=e.split(`
|
|
4
4
|
`).map((r)=>r.split("\t")),n=0;return t.forEach((r)=>{if(r.length>1&&Se.stringWidth(r[0])>n)n=Math.min(Math.floor(this.width*0.5),Se.stringWidth(r[0]))}),t.forEach((r)=>{this.div(...r.map((s,o)=>({text:s.trim(),padding:this.measurePadding(s),width:o===0&&r.length>1?n:void 0})))}),this.rows[this.rows.length-1]}colFromString(e){return{text:e,padding:this.measurePadding(e)}}measurePadding(e){let t=Se.stripAnsi(e);return[0,t.match(/\s*$/)[0].length,0,t.match(/^\s*/)[0].length]}toString(){let e=[];return this.rows.forEach((t)=>{this.rowToString(t,e)}),e.filter((t)=>!t.hidden).map((t)=>t.text).join(`
|
|
5
|
-
`)}rowToString(e,t){return this.rasterize(e).forEach((n,r)=>{let s="";n.forEach((o,i)=>{let{width:a}=e[i],c=this.negatePadding(e[i]),u=o;if(c>Se.stringWidth(o))u+=" ".repeat(c-Se.stringWidth(o));if(e[i].align&&e[i].align!=="left"&&this.wrap){let l=ku[e[i].align];if(u=l(u,c),Se.stringWidth(u)<c)u+=" ".repeat((a||0)-Se.stringWidth(u)-1)}let f=e[i].padding||[0,0,0,0];if(f[3])s+=" ".repeat(f[3]);if(s+=
|
|
5
|
+
`)}rowToString(e,t){return this.rasterize(e).forEach((n,r)=>{let s="";n.forEach((o,i)=>{let{width:a}=e[i],c=this.negatePadding(e[i]),u=o;if(c>Se.stringWidth(o))u+=" ".repeat(c-Se.stringWidth(o));if(e[i].align&&e[i].align!=="left"&&this.wrap){let l=ku[e[i].align];if(u=l(u,c),Se.stringWidth(u)<c)u+=" ".repeat((a||0)-Se.stringWidth(u)-1)}let f=e[i].padding||[0,0,0,0];if(f[3])s+=" ".repeat(f[3]);if(s+=mo(e[i],u,"| "),s+=u,s+=mo(e[i],u," |"),f[1])s+=" ".repeat(f[1]);if(r===0&&t.length>0)s=this.renderInline(s,t[t.length-1])}),t.push({text:s.replace(/ +$/,""),span:e.span})}),t}renderInline(e,t){let n=e.match(/^ */),r=n?n[0].length:0,s=t.text,o=Se.stringWidth(s.trimRight());if(!t.span)return e;if(!this.wrap)return t.hidden=!0,s+e;if(r<o)return e;return t.hidden=!0,s.trimRight()+" ".repeat(r-o)+e.trimLeft()}rasterize(e){let t=[],n=this.columnWidths(e),r;return e.forEach((s,o)=>{if(s.width=n[o],this.wrap)r=Se.wrap(s.text,this.negatePadding(s),{hard:!0}).split(`
|
|
6
6
|
`);else r=s.text.split(`
|
|
7
|
-
`);if(s.border)r.unshift("."+"-".repeat(this.negatePadding(s)+2)+"."),r.push("'"+"-".repeat(this.negatePadding(s)+2)+"'");if(s.padding)r.unshift(...Array(s.padding[0]||0).fill("")),r.push(...Array(s.padding[2]||0).fill(""));r.forEach((i,a)=>{if(!t[a])t.push([]);let c=t[a];for(let u=0;u<o;u++)if(c[u]===void 0)c.push("");c.push(i)})}),t}negatePadding(e){let t=e.width||0;if(e.padding)t-=(e.padding[3]||0)+(e.padding[1]||0);if(e.border)t-=4;return t}columnWidths(e){if(!this.wrap)return e.map((o)=>o.width||Se.stringWidth(o.text));let t=e.length,n=this.width,r=e.map((o)=>{if(o.width)return t--,n-=o.width,o.width;return}),s=t?Math.floor(n/t):0;return r.map((o,i)=>{if(o===void 0)return Math.max(s,Su(e[i]));return o})}}function go(e,t,n){if(e.border){if(/[.']-+[.']/.test(t))return"";if(t.trim().length!==0)return n;return" "}return""}function Su(e){let t=e.padding||[],n=1+(t[3]||0)+(t[1]||0);if(e.border)return n+4;return n}function Au(){if(typeof process==="object"&&process.stdout&&process.stdout.columns)return process.stdout.columns;return 80}function $u(e,t){e=e.trim();let n=Se.stringWidth(e);if(n<t)return" ".repeat(t-n)+e;return e}function Ou(e,t){e=e.trim();let n=Se.stringWidth(e);if(n>=t)return e;return" ".repeat(t-n>>1)+e}var Se;function Do(e,t){return Se=t,new mo({width:(e===null||e===void 0?void 0:e.width)||Au(),wrap:e===null||e===void 0?void 0:e.wrap})}function Ns({onlyFirst:e=!1}={}){return new RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",e?void 0:"g")}var Iu=Ns();function pt(e){if(typeof e!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);if(!e.includes("\x1B")&&!e.includes(""))return e;return e.replace(Iu,"")}var yo=161,bo=1114109,wo=[161,161,164,164,167,168,170,170,173,174,176,180,182,186,188,191,198,198,208,208,215,216,222,225,230,230,232,234,236,237,240,240,242,243,247,250,252,252,254,254,257,257,273,273,275,275,283,283,294,295,299,299,305,307,312,312,319,322,324,324,328,331,333,333,338,339,358,359,363,363,462,462,464,464,466,466,468,468,470,470,472,472,474,474,476,476,593,593,609,609,708,708,711,711,713,715,717,717,720,720,728,731,733,733,735,735,768,879,913,929,931,937,945,961,963,969,1025,1025,1040,1103,1105,1105,8208,8208,8211,8214,8216,8217,8220,8221,8224,8226,8228,8231,8240,8240,8242,8243,8245,8245,8251,8251,8254,8254,8308,8308,8319,8319,8321,8324,8364,8364,8451,8451,8453,8453,8457,8457,8467,8467,8470,8470,8481,8482,8486,8486,8491,8491,8531,8532,8539,8542,8544,8555,8560,8569,8585,8585,8592,8601,8632,8633,8658,8658,8660,8660,8679,8679,8704,8704,8706,8707,8711,8712,8715,8715,8719,8719,8721,8721,8725,8725,8730,8730,8733,8736,8739,8739,8741,8741,8743,8748,8750,8750,8756,8759,8764,8765,8776,8776,8780,8780,8786,8786,8800,8801,8804,8807,8810,8811,8814,8815,8834,8835,8838,8839,8853,8853,8857,8857,8869,8869,8895,8895,8978,8978,9312,9449,9451,9547,9552,9587,9600,9615,9618,9621,9632,9633,9635,9641,9650,9651,9654,9655,9660,9661,9664,9665,9670,9672,9675,9675,9678,9681,9698,9701,9711,9711,9733,9734,9737,9737,9742,9743,9756,9756,9758,9758,9792,9792,9794,9794,9824,9825,9827,9829,9831,9834,9836,9837,9839,9839,9886,9887,9919,9919,9926,9933,9935,9939,9941,9953,9955,9955,9960,9961,9963,9969,9972,9972,9974,9977,9979,9980,9982,9983,10045,10045,10102,10111,11094,11097,12872,12879,57344,63743,65024,65039,65533,65533,127232,127242,127248,127277,127280,127337,127344,127373,127375,127376,127387,127404,917760,917999,983040,1048573,1048576,1114109],Fo=12288,Co=65510,Eo=[12288,12288,65281,65376,65504,65510];var xo=4352,_o=262141,vs=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141];var $n=(e,t)=>{let n=0,r=Math.floor(e.length/2)-1;while(n<=r){let s=Math.floor((n+r)/2),o=s*2;if(t<e[o])r=s-1;else if(t>e[o+1])n=s+1;else return!0}return!1};var ko=19968,[Tu,Pu]=Ru(vs);function Ru(e){let t=e[0],n=e[1];for(let r=0;r<e.length;r+=2){let s=e[r],o=e[r+1];if(ko>=s&&ko<=o)return[s,o];if(o-s>n-t)t=s,n=o}return[t,n]}var So=(e)=>{if(e<yo||e>bo)return!1;return $n(wo,e)},Ao=(e)=>{if(e<Fo||e>Co)return!1;return $n(Eo,e)};var $o=(e)=>{if(e>=Tu&&e<=Pu)return!0;if(e<xo||e>_o)return!1;return $n(vs,e)};function Mu(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function Oo(e,{ambiguousAsWide:t=!1}={}){if(Mu(e),Ao(e)||$o(e)||t&&So(e))return 2;return 1}var Po=ho(To(),1),Bu=new Intl.Segmenter,Nu=/^\p{Default_Ignorable_Code_Point}$/u;function We(e,t={}){if(typeof e!=="string"||e.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:r=!1}=t;if(!r)e=pt(e);if(e.length===0)return 0;let s=0,o={ambiguousAsWide:!n};for(let{segment:i}of Bu.segment(e)){let a=i.codePointAt(0);if(a<=31||a>=127&&a<=159)continue;if(a>=8203&&a<=8207||a===65279)continue;if(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)continue;if(a>=55296&&a<=57343)continue;if(a>=65024&&a<=65039)continue;if(Nu.test(i))continue;if(Po.default().test(i)){s+=2;continue}s+=Oo(a,o)}return s}var Ro=(e=0)=>(t)=>`\x1B[${t+e}m`,Mo=(e=0)=>(t)=>`\x1B[${38+e};5;${t}m`,Bo=(e=0)=>(t,n,r)=>`\x1B[${38+e};2;${t};${n};${r}m`,oe={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Ah=Object.keys(oe.modifier),vu=Object.keys(oe.color),ju=Object.keys(oe.bgColor),$h=[...vu,...ju];function Lu(){let e=new Map;for(let[t,n]of Object.entries(oe)){for(let[r,s]of Object.entries(n))oe[r]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},n[r]=oe[r],e.set(s[0],s[1]);Object.defineProperty(oe,t,{value:n,enumerable:!1})}return Object.defineProperty(oe,"codes",{value:e,enumerable:!1}),oe.color.close="\x1B[39m",oe.bgColor.close="\x1B[49m",oe.color.ansi=Ro(),oe.color.ansi256=Mo(),oe.color.ansi16m=Bo(),oe.bgColor.ansi=Ro(10),oe.bgColor.ansi256=Mo(10),oe.bgColor.ansi16m=Bo(10),Object.defineProperties(oe,{rgbToAnsi256:{value(t,n,r){if(t===n&&n===r){if(t<8)return 16;if(t>248)return 231;return Math.round((t-8)/247*24)+232}return 16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(t){let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!n)return[0,0,0];let[r]=n;if(r.length===3)r=[...r].map((o)=>o+o).join("");let s=Number.parseInt(r,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:(t)=>oe.rgbToAnsi256(...oe.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let n,r,s;if(t>=232)n=((t-232)*10+8)/255,r=n,s=n;else{t-=16;let a=t%36;n=Math.floor(t/36)/5,r=Math.floor(a/6)/5,s=a%6/5}let o=Math.max(n,r,s)*2;if(o===0)return 30;let i=30+(Math.round(s)<<2|Math.round(r)<<1|Math.round(n));if(o===2)i+=60;return i},enumerable:!1},rgbToAnsi:{value:(t,n,r)=>oe.ansi256ToAnsi(oe.rgbToAnsi256(t,n,r)),enumerable:!1},hexToAnsi:{value:(t)=>oe.ansi256ToAnsi(oe.hexToAnsi256(t)),enumerable:!1}}),oe}var Wu=Lu(),No=Wu;var In=new Set(["\x1B",""]),Uu=39,Ls="\x07",Lo="[",Ku="]",Wo="m",On=`${Ku}8;;`,vo=(e)=>`${In.values().next().value}${Lo}${e}${Wo}`,jo=(e)=>`${In.values().next().value}${On}${e}${Ls}`,Ju=(e)=>e.split(" ").map((t)=>We(t)),js=(e,t,n)=>{let r=[...t],s=!1,o=!1,i=We(pt(e.at(-1)));for(let[a,c]of r.entries()){let u=We(c);if(i+u<=n)e[e.length-1]+=c;else e.push(c),i=0;if(In.has(c))s=!0,o=r.slice(a+1,a+1+On.length).join("")===On;if(s){if(o){if(c===Ls)s=!1,o=!1}else if(c===Wo)s=!1;continue}if(i+=u,i===n&&a<r.length-1)e.push(""),i=0}if(!i&&e.at(-1).length>0&&e.length>1)e[e.length-2]+=e.pop()},zu=(e)=>{let t=e.split(" "),n=t.length;while(n>0){if(We(t[n-1])>0)break;n--}if(n===t.length)return e;return t.slice(0,n).join(" ")+t.slice(n).join("")},Hu=(e,t,n={})=>{if(n.trim!==!1&&e.trim()==="")return"";let r="",s,o,i=Ju(e),a=[""];for(let[l,d]of e.split(" ").entries()){if(n.trim!==!1)a[a.length-1]=a.at(-1).trimStart();let p=We(a.at(-1));if(l!==0){if(p>=t&&(n.wordWrap===!1||n.trim===!1))a.push(""),p=0;if(p>0||n.trim===!1)a[a.length-1]+=" ",p++}if(n.hard&&i[l]>t){let m=t-p,h=1+Math.floor((i[l]-m-1)/t);if(Math.floor((i[l]-1)/t)<h)a.push("");js(a,d,t);continue}if(p+i[l]>t&&p>0&&i[l]>0){if(n.wordWrap===!1&&p<t){js(a,d,t);continue}a.push("")}if(p+i[l]>t&&n.wordWrap===!1){js(a,d,t);continue}a[a.length-1]+=d}if(n.trim!==!1)a=a.map((l)=>zu(l));let c=a.join(`
|
|
8
|
-
`),u=[...c],f=0;for(let[l,d]of u.entries()){if(r+=d,
|
|
9
|
-
`){if(o)r+=
|
|
10
|
-
`){if(s&&p)r+=
|
|
7
|
+
`);if(s.border)r.unshift("."+"-".repeat(this.negatePadding(s)+2)+"."),r.push("'"+"-".repeat(this.negatePadding(s)+2)+"'");if(s.padding)r.unshift(...Array(s.padding[0]||0).fill("")),r.push(...Array(s.padding[2]||0).fill(""));r.forEach((i,a)=>{if(!t[a])t.push([]);let c=t[a];for(let u=0;u<o;u++)if(c[u]===void 0)c.push("");c.push(i)})}),t}negatePadding(e){let t=e.width||0;if(e.padding)t-=(e.padding[3]||0)+(e.padding[1]||0);if(e.border)t-=4;return t}columnWidths(e){if(!this.wrap)return e.map((o)=>o.width||Se.stringWidth(o.text));let t=e.length,n=this.width,r=e.map((o)=>{if(o.width)return t--,n-=o.width,o.width;return}),s=t?Math.floor(n/t):0;return r.map((o,i)=>{if(o===void 0)return Math.max(s,Su(e[i]));return o})}}function mo(e,t,n){if(e.border){if(/[.']-+[.']/.test(t))return"";if(t.trim().length!==0)return n;return" "}return""}function Su(e){let t=e.padding||[],n=1+(t[3]||0)+(t[1]||0);if(e.border)return n+4;return n}function Au(){if(typeof process==="object"&&process.stdout&&process.stdout.columns)return process.stdout.columns;return 80}function $u(e,t){e=e.trim();let n=Se.stringWidth(e);if(n<t)return" ".repeat(t-n)+e;return e}function Ou(e,t){e=e.trim();let n=Se.stringWidth(e);if(n>=t)return e;return" ".repeat(t-n>>1)+e}var Se;function yo(e,t){return Se=t,new Do({width:(e===null||e===void 0?void 0:e.width)||Au(),wrap:e===null||e===void 0?void 0:e.wrap})}function Ns({onlyFirst:e=!1}={}){return new RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",e?void 0:"g")}var Iu=Ns();function pt(e){if(typeof e!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);if(!e.includes("\x1B")&&!e.includes(""))return e;return e.replace(Iu,"")}var bo=161,wo=1114109,Fo=[161,161,164,164,167,168,170,170,173,174,176,180,182,186,188,191,198,198,208,208,215,216,222,225,230,230,232,234,236,237,240,240,242,243,247,250,252,252,254,254,257,257,273,273,275,275,283,283,294,295,299,299,305,307,312,312,319,322,324,324,328,331,333,333,338,339,358,359,363,363,462,462,464,464,466,466,468,468,470,470,472,472,474,474,476,476,593,593,609,609,708,708,711,711,713,715,717,717,720,720,728,731,733,733,735,735,768,879,913,929,931,937,945,961,963,969,1025,1025,1040,1103,1105,1105,8208,8208,8211,8214,8216,8217,8220,8221,8224,8226,8228,8231,8240,8240,8242,8243,8245,8245,8251,8251,8254,8254,8308,8308,8319,8319,8321,8324,8364,8364,8451,8451,8453,8453,8457,8457,8467,8467,8470,8470,8481,8482,8486,8486,8491,8491,8531,8532,8539,8542,8544,8555,8560,8569,8585,8585,8592,8601,8632,8633,8658,8658,8660,8660,8679,8679,8704,8704,8706,8707,8711,8712,8715,8715,8719,8719,8721,8721,8725,8725,8730,8730,8733,8736,8739,8739,8741,8741,8743,8748,8750,8750,8756,8759,8764,8765,8776,8776,8780,8780,8786,8786,8800,8801,8804,8807,8810,8811,8814,8815,8834,8835,8838,8839,8853,8853,8857,8857,8869,8869,8895,8895,8978,8978,9312,9449,9451,9547,9552,9587,9600,9615,9618,9621,9632,9633,9635,9641,9650,9651,9654,9655,9660,9661,9664,9665,9670,9672,9675,9675,9678,9681,9698,9701,9711,9711,9733,9734,9737,9737,9742,9743,9756,9756,9758,9758,9792,9792,9794,9794,9824,9825,9827,9829,9831,9834,9836,9837,9839,9839,9886,9887,9919,9919,9926,9933,9935,9939,9941,9953,9955,9955,9960,9961,9963,9969,9972,9972,9974,9977,9979,9980,9982,9983,10045,10045,10102,10111,11094,11097,12872,12879,57344,63743,65024,65039,65533,65533,127232,127242,127248,127277,127280,127337,127344,127373,127375,127376,127387,127404,917760,917999,983040,1048573,1048576,1114109],Co=12288,Eo=65510,xo=[12288,12288,65281,65376,65504,65510];var _o=4352,ko=262141,vs=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141];var On=(e,t)=>{let n=0,r=Math.floor(e.length/2)-1;while(n<=r){let s=Math.floor((n+r)/2),o=s*2;if(t<e[o])r=s-1;else if(t>e[o+1])n=s+1;else return!0}return!1};var So=19968,[Tu,Pu]=Ru(vs);function Ru(e){let t=e[0],n=e[1];for(let r=0;r<e.length;r+=2){let s=e[r],o=e[r+1];if(So>=s&&So<=o)return[s,o];if(o-s>n-t)t=s,n=o}return[t,n]}var Ao=(e)=>{if(e<bo||e>wo)return!1;return On(Fo,e)},$o=(e)=>{if(e<Co||e>Eo)return!1;return On(xo,e)};var Oo=(e)=>{if(e>=Tu&&e<=Pu)return!0;if(e<_o||e>ko)return!1;return On(vs,e)};function Mu(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function Io(e,{ambiguousAsWide:t=!1}={}){if(Mu(e),$o(e)||Oo(e)||t&&Ao(e))return 2;return 1}var Ro=po(Po(),1),Bu=new Intl.Segmenter,Nu=/^\p{Default_Ignorable_Code_Point}$/u;function We(e,t={}){if(typeof e!=="string"||e.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:r=!1}=t;if(!r)e=pt(e);if(e.length===0)return 0;let s=0,o={ambiguousAsWide:!n};for(let{segment:i}of Bu.segment(e)){let a=i.codePointAt(0);if(a<=31||a>=127&&a<=159)continue;if(a>=8203&&a<=8207||a===65279)continue;if(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)continue;if(a>=55296&&a<=57343)continue;if(a>=65024&&a<=65039)continue;if(Nu.test(i))continue;if(Ro.default().test(i)){s+=2;continue}s+=Io(a,o)}return s}var Mo=(e=0)=>(t)=>`\x1B[${t+e}m`,Bo=(e=0)=>(t)=>`\x1B[${38+e};5;${t}m`,No=(e=0)=>(t,n,r)=>`\x1B[${38+e};2;${t};${n};${r}m`,oe={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Ah=Object.keys(oe.modifier),vu=Object.keys(oe.color),ju=Object.keys(oe.bgColor),$h=[...vu,...ju];function Lu(){let e=new Map;for(let[t,n]of Object.entries(oe)){for(let[r,s]of Object.entries(n))oe[r]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},n[r]=oe[r],e.set(s[0],s[1]);Object.defineProperty(oe,t,{value:n,enumerable:!1})}return Object.defineProperty(oe,"codes",{value:e,enumerable:!1}),oe.color.close="\x1B[39m",oe.bgColor.close="\x1B[49m",oe.color.ansi=Mo(),oe.color.ansi256=Bo(),oe.color.ansi16m=No(),oe.bgColor.ansi=Mo(10),oe.bgColor.ansi256=Bo(10),oe.bgColor.ansi16m=No(10),Object.defineProperties(oe,{rgbToAnsi256:{value(t,n,r){if(t===n&&n===r){if(t<8)return 16;if(t>248)return 231;return Math.round((t-8)/247*24)+232}return 16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(t){let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!n)return[0,0,0];let[r]=n;if(r.length===3)r=[...r].map((o)=>o+o).join("");let s=Number.parseInt(r,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:(t)=>oe.rgbToAnsi256(...oe.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let n,r,s;if(t>=232)n=((t-232)*10+8)/255,r=n,s=n;else{t-=16;let a=t%36;n=Math.floor(t/36)/5,r=Math.floor(a/6)/5,s=a%6/5}let o=Math.max(n,r,s)*2;if(o===0)return 30;let i=30+(Math.round(s)<<2|Math.round(r)<<1|Math.round(n));if(o===2)i+=60;return i},enumerable:!1},rgbToAnsi:{value:(t,n,r)=>oe.ansi256ToAnsi(oe.rgbToAnsi256(t,n,r)),enumerable:!1},hexToAnsi:{value:(t)=>oe.ansi256ToAnsi(oe.hexToAnsi256(t)),enumerable:!1}}),oe}var Wu=Lu(),vo=Wu;var Tn=new Set(["\x1B",""]),Uu=39,Ls="\x07",Wo="[",Ku="]",Uo="m",In=`${Ku}8;;`,jo=(e)=>`${Tn.values().next().value}${Wo}${e}${Uo}`,Lo=(e)=>`${Tn.values().next().value}${In}${e}${Ls}`,Ju=(e)=>e.split(" ").map((t)=>We(t)),js=(e,t,n)=>{let r=[...t],s=!1,o=!1,i=We(pt(e.at(-1)));for(let[a,c]of r.entries()){let u=We(c);if(i+u<=n)e[e.length-1]+=c;else e.push(c),i=0;if(Tn.has(c))s=!0,o=r.slice(a+1,a+1+In.length).join("")===In;if(s){if(o){if(c===Ls)s=!1,o=!1}else if(c===Uo)s=!1;continue}if(i+=u,i===n&&a<r.length-1)e.push(""),i=0}if(!i&&e.at(-1).length>0&&e.length>1)e[e.length-2]+=e.pop()},zu=(e)=>{let t=e.split(" "),n=t.length;while(n>0){if(We(t[n-1])>0)break;n--}if(n===t.length)return e;return t.slice(0,n).join(" ")+t.slice(n).join("")},Hu=(e,t,n={})=>{if(n.trim!==!1&&e.trim()==="")return"";let r="",s,o,i=Ju(e),a=[""];for(let[l,d]of e.split(" ").entries()){if(n.trim!==!1)a[a.length-1]=a.at(-1).trimStart();let p=We(a.at(-1));if(l!==0){if(p>=t&&(n.wordWrap===!1||n.trim===!1))a.push(""),p=0;if(p>0||n.trim===!1)a[a.length-1]+=" ",p++}if(n.hard&&i[l]>t){let m=t-p,h=1+Math.floor((i[l]-m-1)/t);if(Math.floor((i[l]-1)/t)<h)a.push("");js(a,d,t);continue}if(p+i[l]>t&&p>0&&i[l]>0){if(n.wordWrap===!1&&p<t){js(a,d,t);continue}a.push("")}if(p+i[l]>t&&n.wordWrap===!1){js(a,d,t);continue}a[a.length-1]+=d}if(n.trim!==!1)a=a.map((l)=>zu(l));let c=a.join(`
|
|
8
|
+
`),u=[...c],f=0;for(let[l,d]of u.entries()){if(r+=d,Tn.has(d)){let{groups:m}=new RegExp(`(?:\\${Wo}(?<code>\\d+)m|\\${In}(?<uri>.*)${Ls})`).exec(c.slice(f))||{groups:{}};if(m.code!==void 0){let h=Number.parseFloat(m.code);s=h===Uu?void 0:h}else if(m.uri!==void 0)o=m.uri.length===0?void 0:m.uri}let p=vo.codes.get(Number(s));if(u[l+1]===`
|
|
9
|
+
`){if(o)r+=Lo("");if(s&&p)r+=jo(p)}else if(d===`
|
|
10
|
+
`){if(s&&p)r+=jo(s);if(o)r+=Lo(o)}f+=d.length}return r};function Ws(e,t,n){return String(e).normalize().replaceAll(`\r
|
|
11
11
|
`,`
|
|
12
12
|
`).split(`
|
|
13
13
|
`).map((r)=>Hu(r,t,n)).join(`
|
|
14
|
-
`)}function Us(e){return Do(e,{stringWidth:We,stripAnsi:pt,wrap:Ws})}import{dirname as Uo,resolve as Ko}from"path";import{readdirSync as qu,statSync as Yu}from"fs";function Ks(e,t){let n=Ko(".",e),r;if(!Yu(n).isDirectory())n=Uo(n);while(!0){if(r=t(n,qu(n)),r)return Ko(n,r);if(n=Uo(r=n),r===n)break}}import{inspect as dl}from"util";import{fileURLToPath as ii}from"url";import{format as Vu}from"util";import{normalize as Zu,resolve as Qu}from"path";function gt(e){if(!(e!==e.toLowerCase()&&e!==e.toUpperCase()))e=e.toLowerCase();if(e.indexOf("-")===-1&&e.indexOf("_")===-1)return e;else{let n="",r=!1,s=e.match(/^-+/);for(let o=s?s[0].length:0;o<e.length;o++){let i=e.charAt(o);if(r)r=!1,i=i.toUpperCase();if(o!==0&&(i==="-"||i==="_"))r=!0;else if(i!=="-"&&i!=="_")n+=i}return n}}function Tn(e,t){let n=e.toLowerCase();t=t||"-";let r="";for(let s=0;s<e.length;s++){let o=n.charAt(s),i=e.charAt(s);if(o!==i&&s>0)r+=`${t}${n.charAt(s)}`;else r+=i}return r}function Pn(e){if(e===null||e===void 0)return!1;if(typeof e==="number")return!0;if(/^0x[0-9a-f]+$/i.test(e))return!0;if(/^0[^.]/.test(e))return!1;return/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}function Jo(e){if(Array.isArray(e))return e.map((i)=>typeof i!=="string"?i+"":i);e=e.trim();let t=0,n=null,r=null,s=null,o=[];for(let i=0;i<e.length;i++){if(n=r,r=e.charAt(i),r===" "&&!s){if(n!==" ")t++;continue}if(r===s)s=null;else if((r==="'"||r==='"')&&!s)s=r;if(!o[t])o[t]="";o[t]+=r}return o}var Te;(function(e){e.BOOLEAN="boolean",e.STRING="string",e.NUMBER="number",e.ARRAY="array"})(Te||(Te={}));var Ze;class zs{constructor(e){Ze=e}parse(e,t){let n=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},t),r=Jo(e),s=typeof e==="string",o=Xu(Object.assign(Object.create(null),n.alias)),i=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":"no-","parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},n.configuration),a=Object.assign(Object.create(null),n.default),c=n.configObjects||[],u=n.envPrefix,f=i["populate--"],l=f?"--":"_",d=Object.create(null),p=Object.create(null),m=n.__||Ze.format,h={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},y=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,E=new RegExp("^--"+i["negation-prefix"]+"(.+)");if([].concat(n.array||[]).filter(Boolean).forEach(function(D){let w=typeof D==="object"?D.key:D,T=Object.keys(D).map(function(x){return{boolean:"bools",string:"strings",number:"numbers"}[x]}).filter(Boolean).pop();if(T)h[T][w]=!0;h.arrays[w]=!0,h.keys.push(w)}),[].concat(n.boolean||[]).filter(Boolean).forEach(function(D){h.bools[D]=!0,h.keys.push(D)}),[].concat(n.string||[]).filter(Boolean).forEach(function(D){h.strings[D]=!0,h.keys.push(D)}),[].concat(n.number||[]).filter(Boolean).forEach(function(D){h.numbers[D]=!0,h.keys.push(D)}),[].concat(n.count||[]).filter(Boolean).forEach(function(D){h.counts[D]=!0,h.keys.push(D)}),[].concat(n.normalize||[]).filter(Boolean).forEach(function(D){h.normalize[D]=!0,h.keys.push(D)}),typeof n.narg==="object")Object.entries(n.narg).forEach(([D,w])=>{if(typeof w==="number")h.nargs[D]=w,h.keys.push(D)});if(typeof n.coerce==="object")Object.entries(n.coerce).forEach(([D,w])=>{if(typeof w==="function")h.coercions[D]=w,h.keys.push(D)});if(typeof n.config<"u"){if(Array.isArray(n.config)||typeof n.config==="string")[].concat(n.config).filter(Boolean).forEach(function(D){h.configs[D]=!0});else if(typeof n.config==="object")Object.entries(n.config).forEach(([D,w])=>{if(typeof w==="boolean"||typeof w==="function")h.configs[D]=w})}ee(n.key,o,n.default,h.arrays),Object.keys(a).forEach(function(D){(h.aliases[D]||[]).forEach(function(w){a[w]=a[D]})});let F=null;Ms();let A=[],k=Object.assign(Object.create(null),{_:[]}),B={};for(let D=0;D<r.length;D++){let w=r[D],T=w.replace(/^-{3,}/,"---"),x,b,U,M,J,ge;if(w!=="--"&&/^-/.test(w)&&se(w))I(w);else if(T.match(/^---+(=|$)/)){I(w);continue}else if(w.match(/^--.+=/)||!i["short-option-groups"]&&w.match(/^-.+=/)){if(M=w.match(/^--?([^=]+)=([\s\S]*)$/),M!==null&&Array.isArray(M)&&M.length>=3)if(N(M[1],h.arrays))D=V(D,M[1],r,M[2]);else if(N(M[1],h.nargs)!==!1)D=R(D,M[1],r,M[2]);else L(M[1],M[2],!0)}else if(w.match(E)&&i["boolean-negation"]){if(M=w.match(E),M!==null&&Array.isArray(M)&&M.length>=2)b=M[1],L(b,N(b,h.arrays)?[!1]:!1)}else if(w.match(/^--.+/)||!i["short-option-groups"]&&w.match(/^-[^-]+/)){if(M=w.match(/^--?(.+)/),M!==null&&Array.isArray(M)&&M.length>=2)if(b=M[1],N(b,h.arrays))D=V(D,b,r);else if(N(b,h.nargs)!==!1)D=R(D,b,r);else if(J=r[D+1],J!==void 0&&(!J.match(/^-/)||J.match(y))&&!N(b,h.bools)&&!N(b,h.counts))L(b,J),D++;else if(/^(true|false)$/.test(J))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-.\..+=/)){if(M=w.match(/^-([^=]+)=([\s\S]*)$/),M!==null&&Array.isArray(M)&&M.length>=3)L(M[1],M[2])}else if(w.match(/^-.\..+/)&&!w.match(y)){if(J=r[D+1],M=w.match(/^-(.\..+)/),M!==null&&Array.isArray(M)&&M.length>=2)if(b=M[1],J!==void 0&&!J.match(/^-/)&&!N(b,h.bools)&&!N(b,h.counts))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-[^-]+/)&&!w.match(y)){U=w.slice(1,-1).split(""),x=!1;for(let Fe=0;Fe<U.length;Fe++){if(J=w.slice(Fe+2),U[Fe+1]&&U[Fe+1]==="="){if(ge=w.slice(Fe+3),b=U[Fe],N(b,h.arrays))D=V(D,b,r,ge);else if(N(b,h.nargs)!==!1)D=R(D,b,r,ge);else L(b,ge);x=!0;break}if(J==="-"){L(U[Fe],J);continue}if(/[A-Za-z]/.test(U[Fe])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(J)&&N(J,h.bools)===!1){L(U[Fe],J),x=!0;break}if(U[Fe+1]&&U[Fe+1].match(/\W/)){L(U[Fe],J),x=!0;break}else L(U[Fe],Z(U[Fe]))}if(b=w.slice(-1)[0],!x&&b!=="-")if(N(b,h.arrays))D=V(D,b,r);else if(N(b,h.nargs)!==!1)D=R(D,b,r);else if(J=r[D+1],J!==void 0&&(!/^(-|--)[^-]/.test(J)||J.match(y))&&!N(b,h.bools)&&!N(b,h.counts))L(b,J),D++;else if(/^(true|false)$/.test(J))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-[0-9]$/)&&w.match(y)&&N(w.slice(1),h.bools))b=w.slice(1),L(b,Z(b));else if(w==="--"){A=r.slice(D+1);break}else if(i["halt-at-non-option"]){A=r.slice(D);break}else I(w)}if(G(k,!0),G(k,!1),S(k),W(),Ie(k,h.aliases,a,!0),q(k),i["set-placeholder-key"])ae(k);if(Object.keys(h.counts).forEach(function(D){if(!te(k,D.split(".")))L(D,0)}),f&&A.length)k[l]=[];if(A.forEach(function(D){k[l].push(D)}),i["camel-case-expansion"]&&i["strip-dashed"])Object.keys(k).filter((D)=>D!=="--"&&D.includes("-")).forEach((D)=>{delete k[D]});if(i["strip-aliased"])[].concat(...Object.keys(o).map((D)=>o[D])).forEach((D)=>{if(i["camel-case-expansion"]&&D.includes("-"))delete k[D.split(".").map((w)=>gt(w)).join(".")];delete k[D]});function I(D){let w=C("_",D);if(typeof w==="string"||typeof w==="number")k._.push(w)}function R(D,w,T,x){let b,U=N(w,h.nargs);if(U=typeof U!=="number"||isNaN(U)?1:U,U===0){if(!he(x))F=Error(m("Argument unexpected for: %s",w));return L(w,Z(w)),D}let M=he(x)?0:1;if(i["nargs-eats-options"]){if(T.length-(D+1)+M<U)F=Error(m("Not enough arguments following: %s",w));M=U}else{for(b=D+1;b<T.length;b++)if(!T[b].match(/^-[^0-9]/)||T[b].match(y)||se(T[b]))M++;else break;if(M<U)F=Error(m("Not enough arguments following: %s",w))}let J=Math.min(M,U);if(!he(x)&&J>0)L(w,x),J--;for(b=D+1;b<J+D+1;b++)L(w,T[b]);return D+J}function V(D,w,T,x){let b=[],U=x||T[D+1],M=N(w,h.nargs);if(N(w,h.bools)&&!/^(true|false)$/.test(U))b.push(!0);else if(he(U)||he(x)&&/^-/.test(U)&&!y.test(U)&&!se(U)){if(a[w]!==void 0){let J=a[w];b=Array.isArray(J)?J:[J]}}else{if(!he(x))b.push(_(w,x,!0));for(let J=D+1;J<T.length;J++){if(!i["greedy-arrays"]&&b.length>0||M&&typeof M==="number"&&b.length>=M)break;if(U=T[J],/^-/.test(U)&&!y.test(U)&&!se(U))break;D=J,b.push(_(w,U,s))}}if(typeof M==="number"&&(M&&b.length<M||isNaN(M)&&b.length===0))F=Error(m("Not enough arguments following: %s",w));return L(w,b),D}function L(D,w,T=s){if(/-/.test(D)&&i["camel-case-expansion"]){let U=D.split(".").map(function(M){return gt(M)}).join(".");ne(D,U)}let x=_(D,w,T),b=D.split(".");if(ke(k,b,x),h.aliases[D])h.aliases[D].forEach(function(U){let M=U.split(".");ke(k,M,x)});if(b.length>1&&i["dot-notation"])(h.aliases[b[0]]||[]).forEach(function(U){let M=U.split("."),J=[].concat(b);if(J.shift(),M=M.concat(J),!(h.aliases[D]||[]).includes(M.join(".")))ke(k,M,x)});if(N(D,h.normalize)&&!N(D,h.arrays))[D].concat(h.aliases[D]||[]).forEach(function(M){Object.defineProperty(B,M,{enumerable:!0,get(){return w},set(J){w=typeof J==="string"?Ze.normalize(J):J}})})}function ne(D,w){if(!(h.aliases[D]&&h.aliases[D].length))h.aliases[D]=[w],d[w]=!0;if(!(h.aliases[w]&&h.aliases[w].length))ne(w,D)}function _(D,w,T){if(T)w=Gu(w);if(N(D,h.bools)||N(D,h.counts)){if(typeof w==="string")w=w==="true"}let x=Array.isArray(w)?w.map(function(b){return C(D,b)}):C(D,w);if(N(D,h.counts)&&(he(x)||typeof x==="boolean"))x=Js();if(N(D,h.normalize)&&N(D,h.arrays))if(Array.isArray(w))x=w.map((b)=>Ze.normalize(b));else x=Ze.normalize(w);return x}function C(D,w){if(!i["parse-positional-numbers"]&&D==="_")return w;if(!N(D,h.strings)&&!N(D,h.bools)&&!Array.isArray(w)){if(Pn(w)&&i["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${w}`)))||!he(w)&&N(D,h.numbers))w=Number(w)}return w}function S(D){let w=Object.create(null);Ie(w,h.aliases,a),Object.keys(h.configs).forEach(function(T){let x=D[T]||w[T];if(x)try{let b=null,U=Ze.resolve(Ze.cwd(),x),M=h.configs[T];if(typeof M==="function"){try{b=M(U)}catch(J){b=J}if(b instanceof Error){F=b;return}}else b=Ze.require(U);O(b)}catch(b){if(b.name==="PermissionDenied")F=b;else if(D[T])F=Error(m("Invalid JSON config file: %s",x))}})}function O(D,w){Object.keys(D).forEach(function(T){let x=D[T],b=w?w+"."+T:T;if(typeof x==="object"&&x!==null&&!Array.isArray(x)&&i["dot-notation"])O(x,b);else if(!te(k,b.split("."))||N(b,h.arrays)&&i["combine-arrays"])L(b,x)})}function W(){if(typeof c<"u")c.forEach(function(D){O(D)})}function G(D,w){if(typeof u>"u")return;let T=typeof u==="string"?u:"",x=Ze.env();Object.keys(x).forEach(function(b){if(T===""||b.lastIndexOf(T,0)===0){let U=b.split("__").map(function(M,J){if(J===0)M=M.substring(T.length);return gt(M)});if((w&&h.configs[U.join(".")]||!w)&&!te(D,U))L(U.join("."),x[b])}})}function q(D){let w,T=new Set;Object.keys(D).forEach(function(x){if(!T.has(x)){if(w=N(x,h.coercions),typeof w==="function")try{let b=C(x,w(D[x]));[].concat(h.aliases[x]||[],x).forEach((U)=>{T.add(U),D[U]=b})}catch(b){F=b}}})}function ae(D){return h.keys.forEach((w)=>{if(~w.indexOf("."))return;if(typeof D[w]>"u")D[w]=void 0}),D}function Ie(D,w,T,x=!1){Object.keys(T).forEach(function(b){if(!te(D,b.split("."))){if(ke(D,b.split("."),T[b]),x)p[b]=!0;(w[b]||[]).forEach(function(U){if(te(D,U.split(".")))return;ke(D,U.split("."),T[b])})}})}function te(D,w){let T=D;if(!i["dot-notation"])w=[w.join(".")];w.slice(0,-1).forEach(function(b){T=T[b]||{}});let x=w[w.length-1];if(typeof T!=="object")return!1;else return x in T}function ke(D,w,T){let x=D;if(!i["dot-notation"])w=[w.join(".")];w.slice(0,-1).forEach(function(ge){if(ge=zo(ge),typeof x==="object"&&x[ge]===void 0)x[ge]={};if(typeof x[ge]!=="object"||Array.isArray(x[ge])){if(Array.isArray(x[ge]))x[ge].push({});else x[ge]=[x[ge],{}];x=x[ge][x[ge].length-1]}else x=x[ge]});let b=zo(w[w.length-1]),U=N(w.join("."),h.arrays),M=Array.isArray(T),J=i["duplicate-arguments-array"];if(!J&&N(b,h.nargs)){if(J=!0,!he(x[b])&&h.nargs[b]===1||Array.isArray(x[b])&&x[b].length===h.nargs[b])x[b]=void 0}if(T===Js())x[b]=Js(x[b]);else if(Array.isArray(x[b]))if(J&&U&&M)x[b]=i["flatten-duplicate-arrays"]?x[b].concat(T):(Array.isArray(x[b][0])?x[b]:[x[b]]).concat([T]);else if(!J&&Boolean(U)===Boolean(M))x[b]=T;else x[b]=x[b].concat([T]);else if(x[b]===void 0&&U)x[b]=M?T:[T];else if(J&&!(x[b]===void 0||N(b,h.counts)||N(b,h.bools)))x[b]=[x[b],T];else x[b]=T}function ee(...D){D.forEach(function(w){Object.keys(w||{}).forEach(function(T){if(h.aliases[T])return;h.aliases[T]=[].concat(o[T]||[]),h.aliases[T].concat(T).forEach(function(x){if(/-/.test(x)&&i["camel-case-expansion"]){let b=gt(x);if(b!==T&&h.aliases[T].indexOf(b)===-1)h.aliases[T].push(b),d[b]=!0}}),h.aliases[T].concat(T).forEach(function(x){if(x.length>1&&/[A-Z]/.test(x)&&i["camel-case-expansion"]){let b=Tn(x,"-");if(b!==T&&h.aliases[T].indexOf(b)===-1)h.aliases[T].push(b),d[b]=!0}}),h.aliases[T].forEach(function(x){h.aliases[x]=[T].concat(h.aliases[T].filter(function(b){return x!==b}))})})})}function N(D,w){let T=[].concat(h.aliases[D]||[],D),x=Object.keys(w),b=T.find((U)=>x.includes(U));return b?w[b]:!1}function we(D){let w=Object.keys(h);return[].concat(w.map((x)=>h[x])).some(function(x){return Array.isArray(x)?x.includes(D):x[D]})}function Wt(D,...w){return[].concat(...w).some(function(x){let b=D.match(x);return b&&we(b[1])})}function z(D){if(D.match(y)||!D.match(/^-[^-]+/))return!1;let w=!0,T,x=D.slice(1).split("");for(let b=0;b<x.length;b++){if(T=D.slice(b+2),!we(x[b])){w=!1;break}if(x[b+1]&&x[b+1]==="="||T==="-"||/[A-Za-z]/.test(x[b])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(T)||x[b+1]&&x[b+1].match(/\W/))break}return w}function se(D){return i["unknown-options-as-args"]&&de(D)}function de(D){if(D=D.replace(/^-{3,}/,"--"),D.match(y))return!1;if(z(D))return!1;return!Wt(D,/^-+([^=]+?)=[\s\S]*$/,E,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}function Z(D){if(!N(D,h.bools)&&!N(D,h.counts)&&`${D}`in a)return a[D];else return ye(ue(D))}function ye(D){return{[Te.BOOLEAN]:!0,[Te.STRING]:"",[Te.NUMBER]:void 0,[Te.ARRAY]:[]}[D]}function ue(D){let w=Te.BOOLEAN;if(N(D,h.strings))w=Te.STRING;else if(N(D,h.numbers))w=Te.NUMBER;else if(N(D,h.bools))w=Te.BOOLEAN;else if(N(D,h.arrays))w=Te.ARRAY;return w}function he(D){return D===void 0}function Ms(){Object.keys(h.counts).find((D)=>{if(N(D,h.arrays))return F=Error(m("Invalid configuration: %s, opts.count excludes opts.array.",D)),!0;else if(N(D,h.nargs))return F=Error(m("Invalid configuration: %s, opts.count excludes opts.narg.",D)),!0;return!1})}return{aliases:Object.assign({},h.aliases),argv:Object.assign(B,k),configuration:i,defaulted:Object.assign({},p),error:F,newAliases:Object.assign({},d)}}}function Xu(e){let t=[],n=Object.create(null),r=!0;Object.keys(e).forEach(function(s){t.push([].concat(e[s],s))});while(r){r=!1;for(let s=0;s<t.length;s++)for(let o=s+1;o<t.length;o++)if(t[s].filter(function(a){return t[o].indexOf(a)!==-1}).length){t[s]=t[s].concat(t[o]),t.splice(o,1),r=!0;break}}return t.forEach(function(s){s=s.filter(function(i,a,c){return c.indexOf(i)===a});let o=s.pop();if(o!==void 0&&typeof o==="string")n[o]=s}),n}function Js(e){return e!==void 0?e+1:1}function zo(e){if(e==="__proto__")return"___proto___";return e}function Gu(e){return typeof e==="string"&&(e[0]==="'"||e[0]==='"')&&e[e.length-1]===e[0]?e.substring(1,e.length-1):e}import{readFileSync as el}from"fs";import{createRequire as Ho}from"node:module";var Hs,qs,Ys,qo=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):20,Yo=(qs=(Hs=process===null||process===void 0?void 0:process.versions)===null||Hs===void 0?void 0:Hs.node)!==null&&qs!==void 0?qs:(Ys=process===null||process===void 0?void 0:process.version)===null||Ys===void 0?void 0:Ys.slice(1);if(Yo){if(Number(Yo.match(/^([^.]+)/)[1])<qo)throw Error(`yargs parser supports a minimum Node.js version of ${qo}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`)}var tl=process?process.env:{},Xo=Ho?Ho(import.meta.url):void 0,Go=new zs({cwd:process.cwd,env:()=>tl,format:Vu,normalize:Zu,resolve:Qu,require:(e)=>{if(typeof Xo<"u")return Xo(e);else if(e.match(/\.json$/))return JSON.parse(el(e,"utf8"));else throw Error("only .json config files are supported in ESM")}}),sn=function(t,n){return Go.parse(t.slice(),n).argv};sn.detailed=function(e,t){return Go.parse(e.slice(),t)};sn.camelCase=gt;sn.decamelize=Tn;sn.looksLikeNumber=Pn;var Xs=sn;import{basename as hl,dirname as pl,extname as gl,relative as ml,resolve as oi,join as Dl}from"path";function Vo(){if(nl())return 0;return 1}function nl(){return sl()&&!process.defaultApp}function sl(){return!!process.versions.electron}function Gs(e){return e.slice(Vo()+1)}function Zo(){return process.argv[Vo()]}import{readFileSync as rl,statSync as ol,writeFile as il}from"fs";import{format as al}from"util";import{resolve as cl}from"path";var Qo={fs:{readFileSync:rl,writeFile:il},format:al,resolve:cl,exists:(e)=>{try{return ol(e).isFile()}catch(t){return!1}}};var Ue;class ei{constructor(e){e=e||{},this.directory=e.directory||"./locales",this.updateFiles=typeof e.updateFiles==="boolean"?e.updateFiles:!0,this.locale=e.locale||"en",this.fallbackToLanguage=typeof e.fallbackToLanguage==="boolean"?e.fallbackToLanguage:!0,this.cache=Object.create(null),this.writeQueue=[]}__(...e){if(typeof arguments[0]!=="string")return this._taggedLiteral(arguments[0],...arguments);let t=e.shift(),n=function(){};if(typeof e[e.length-1]==="function")n=e.pop();if(n=n||function(){},!this.cache[this.locale])this._readLocaleFile();if(!this.cache[this.locale][t]&&this.updateFiles)this.cache[this.locale][t]=t,this._enqueueWrite({directory:this.directory,locale:this.locale,cb:n});else n();return Ue.format.apply(Ue.format,[this.cache[this.locale][t]||t].concat(e))}__n(){let e=Array.prototype.slice.call(arguments),t=e.shift(),n=e.shift(),r=e.shift(),s=function(){};if(typeof e[e.length-1]==="function")s=e.pop();if(!this.cache[this.locale])this._readLocaleFile();let o=r===1?t:n;if(this.cache[this.locale][t])o=this.cache[this.locale][t][r===1?"one":"other"];if(!this.cache[this.locale][t]&&this.updateFiles)this.cache[this.locale][t]={one:t,other:n},this._enqueueWrite({directory:this.directory,locale:this.locale,cb:s});else s();let i=[o];if(~o.indexOf("%d"))i.push(r);return Ue.format.apply(Ue.format,i.concat(e))}setLocale(e){this.locale=e}getLocale(){return this.locale}updateLocale(e){if(!this.cache[this.locale])this._readLocaleFile();for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))this.cache[this.locale][t]=e[t]}_taggedLiteral(e,...t){let n="";return e.forEach(function(r,s){let o=t[s+1];if(n+=r,typeof o<"u")n+="%s"}),this.__.apply(this,[n].concat([].slice.call(t,1)))}_enqueueWrite(e){if(this.writeQueue.push(e),this.writeQueue.length===1)this._processWriteQueue()}_processWriteQueue(){let e=this,t=this.writeQueue[0],{directory:n,locale:r,cb:s}=t,o=this._resolveLocaleFile(n,r),i=JSON.stringify(this.cache[r],null,2);Ue.fs.writeFile(o,i,"utf-8",function(a){if(e.writeQueue.shift(),e.writeQueue.length>0)e._processWriteQueue();s(a)})}_readLocaleFile(){let e={},t=this._resolveLocaleFile(this.directory,this.locale);try{if(Ue.fs.readFileSync)e=JSON.parse(Ue.fs.readFileSync(t,"utf-8"))}catch(n){if(n instanceof SyntaxError)n.message="syntax error in "+t;if(n.code==="ENOENT")e={};else throw n}this.cache[this.locale]=e}_resolveLocaleFile(e,t){let n=Ue.resolve(e,"./",t+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(n)&&~t.lastIndexOf("_")){let r=Ue.resolve(e,"./",t.split("_")[0]+".json");if(this._fileExistsSync(r))n=r}return n}_fileExistsSync(e){return Ue.exists(e)}}function ti(e,t){Ue=t;let n=new ei(e);return{__:n.__.bind(n),__n:n.__n.bind(n),setLocale:n.setLocale.bind(n),getLocale:n.getLocale.bind(n),updateLocale:n.updateLocale.bind(n),locale:n.locale}}var ul=(e)=>ti(e,Qo),ni=ul;var ai=ho(ri(),1);import{createRequire as yl}from"node:module";import{readFileSync as bl,readdirSync as wl}from"node:fs";var Vs=ii(import.meta.url),Fl=Vs.substring(0,Vs.lastIndexOf("node_modules")),Cl=yl(import.meta.url),Zs={assert:{notStrictEqual:ll,strictEqual:fl},cliui:Us,findUp:Ks,getEnv:(e)=>process.env[e],inspect:dl,getProcessArgvBin:Zo,mainFilename:Fl||process.cwd(),Parser:Xs,path:{basename:hl,dirname:pl,extname:gl,relative:ml,resolve:oi,join:Dl},process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(e,t)=>process.emitWarning(e,t),execPath:()=>process.execPath,exit:(e)=>{process.exit(e)},nextTick:process.nextTick,stdColumns:typeof process.stdout.columns<"u"?process.stdout.columns:null},readFileSync:bl,readdirSync:wl,require:Cl,getCallerFile:()=>{let e=ai.default(3);return e.match(/^file:\/\//)?ii(e):e},stringWidth:We,y18n:ni({directory:oi(Vs,"../../../locales"),updateFiles:!1})};function Ce(e,t,n,r){n.assert.notStrictEqual(e,t,r)}function Qs(e,t){t.assert.strictEqual(typeof e,"string")}function Ut(e){return Object.keys(e)}function re(e){return!!e&&!!e.then&&typeof e.then==="function"}class le extends Error{constructor(e){super(e||"yargs error");if(this.name="YError",Error.captureStackTrace)Error.captureStackTrace(this,le)}}function st(e){let n=e.replace(/\s{2,}/g," ").split(/\s+(?![^[]*]|[^<]*>)/),r=/\.*[\][<>]/g,s=n.shift();if(!s)throw Error(`No command found in: ${e}`);let o={cmd:s.replace(r,""),demanded:[],optional:[]};return n.forEach((i,a)=>{let c=!1;if(i=i.replace(/\s/g,""),/\.+[\]>]/.test(i)&&a===n.length-1)c=!0;if(/^\[/.test(i))o.optional.push({cmd:i.replace(r,"").split("|"),variadic:c});else o.demanded.push({cmd:i.replace(r,"").split("|"),variadic:c})}),o}var El=["first","second","third","fourth","fifth","sixth"];function v(e,t,n){function r(){return typeof e==="object"?[{demanded:[],optional:[]},e,t]:[st(`cmd ${e}`),t,n]}try{let s=0,[o,i,a]=r(),c=[].slice.call(i);while(c.length&&c[c.length-1]===void 0)c.pop();let u=a||c.length;if(u<o.demanded.length)throw new le(`Not enough arguments provided. Expected ${o.demanded.length} but received ${c.length}.`);let f=o.demanded.length+o.optional.length;if(u>f)throw new le(`Too many arguments provided. Expected max ${f} but received ${u}.`);o.demanded.forEach((l)=>{let d=c.shift(),p=ci(d);if(l.cmd.filter((h)=>h===p||h==="*").length===0)ui(p,l.cmd,s);s+=1}),o.optional.forEach((l)=>{if(c.length===0)return;let d=c.shift(),p=ci(d);if(l.cmd.filter((h)=>h===p||h==="*").length===0)ui(p,l.cmd,s);s+=1})}catch(s){console.warn(s.stack)}}function ci(e){if(Array.isArray(e))return"array";else if(e===null)return"null";return typeof e}function ui(e,t,n){throw new le(`Invalid ${El[n]||"manyith"} argument. Expected ${t.join(" or ")} but received ${e}.`)}class er{constructor(e){this.globalMiddleware=[],this.frozens=[],this.yargs=e}addMiddleware(e,t,n=!0,r=!1){if(v("<array|function> [boolean] [boolean] [boolean]",[e,t,n],arguments.length),Array.isArray(e)){for(let s=0;s<e.length;s++){if(typeof e[s]!=="function")throw Error("middleware must be a function");let o=e[s];o.applyBeforeValidation=t,o.global=n}Array.prototype.push.apply(this.globalMiddleware,e)}else if(typeof e==="function"){let s=e;s.applyBeforeValidation=t,s.global=n,s.mutates=r,this.globalMiddleware.push(e)}return this.yargs}addCoerceMiddleware(e,t){let n=this.yargs.getAliases();return this.globalMiddleware=this.globalMiddleware.filter((r)=>{let s=[...n[t]||[],t];if(!r.option)return!0;else return!s.includes(r.option)}),e.option=t,this.addMiddleware(e,!0,!0,!0)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){let e=this.frozens.pop();if(e!==void 0)this.globalMiddleware=e}reset(){this.globalMiddleware=this.globalMiddleware.filter((e)=>e.global)}}function li(e){if(!e)return[];return e.map((t)=>(t.applyBeforeValidation=!1,t))}function mt(e,t,n,r){return n.reduce((s,o)=>{if(o.applyBeforeValidation!==r)return s;if(o.mutates){if(o.applied)return s;o.applied=!0}if(re(s))return s.then((i)=>Promise.all([i,o(i,t)])).then(([i,a])=>Object.assign(i,a));else{let i=o(s,t);return re(i)?i.then((a)=>Object.assign(s,a)):Object.assign(s,i)}},e)}function Dt(e,t,n=(r)=>{throw r}){try{let r=xl(e)?e():e;return re(r)?r.then((s)=>t(s)):t(r)}catch(r){return n(r)}}function xl(e){return typeof e==="function"}var Kt=/(^\*)|(^\$0)/;class di{constructor(e,t,n,r){this.requireCache=new Set,this.handlers={},this.aliasMap={},this.frozens=[],this.shim=r,this.usage=e,this.globalMiddleware=n,this.validation=t}addDirectory(e,t,n,r){r=r||{},this.requireCache.add(n);let s=this.shim.path.resolve(this.shim.path.dirname(n),e),o=this.shim.readdirSync(s,{recursive:r.recurse?!0:!1});if(!Array.isArray(r.extensions))r.extensions=["js"];let i=typeof r.visit==="function"?r.visit:(a)=>a;for(let a of o){let c=a.toString();if(r.exclude){let f=!1;if(typeof r.exclude==="function")f=r.exclude(c);else f=r.exclude.test(c);if(f)continue}if(r.include){let f=!1;if(typeof r.include==="function")f=r.include(c);else f=r.include.test(c);if(!f)continue}let u=!1;for(let f of r.extensions)if(c.endsWith(f))u=!0;if(u){let f=this.shim.path.join(s,c),l=t(f),d=Object.create(null,Object.getOwnPropertyDescriptors({...l}));if(i(d,f,c)){if(this.requireCache.has(f))continue;else this.requireCache.add(f);if(!d.command)d.command=this.shim.path.basename(f,this.shim.path.extname(f));this.addHandler(d)}}}}addHandler(e,t,n,r,s,o){let i=[],a=li(s);if(r=r||(()=>{}),Array.isArray(e))if(_l(e))[e,...i]=e;else for(let c of e)this.addHandler(c);else if(Sl(e)){let c=Array.isArray(e.command)||typeof e.command==="string"?e.command:null;if(c===null)throw Error(`No command name given for module: ${this.shim.inspect(e)}`);if(e.aliases)c=[].concat(c).concat(e.aliases);this.addHandler(c,this.extractDesc(e),e.builder,e.handler,e.middlewares,e.deprecated);return}else if(fi(n)){this.addHandler([e].concat(i),t,n.builder,n.handler,n.middlewares,n.deprecated);return}if(typeof e==="string"){let c=st(e);i=i.map((l)=>st(l).cmd);let u=!1,f=[c.cmd].concat(i).filter((l)=>{if(Kt.test(l))return u=!0,!1;return!0});if(f.length===0&&u)f.push("$0");if(u)c.cmd=f[0],i=f.slice(1),e=e.replace(Kt,c.cmd);if(i.forEach((l)=>{this.aliasMap[l]=c.cmd}),t!==!1)this.usage.command(e,t,u,i,o);if(this.handlers[c.cmd]={original:e,description:t,handler:r,builder:n||{},middlewares:a,deprecated:o,demanded:c.demanded,optional:c.optional},u)this.defaultCommand=this.handlers[c.cmd]}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(e,t,n,r,s,o){let i=this.handlers[e]||this.handlers[this.aliasMap[e]]||this.defaultCommand,a=t.getInternalMethods().getContext(),c=a.commands.slice(),u=!e;if(e)a.commands.push(e),a.fullCommands.push(i.original);let f=this.applyBuilderUpdateUsageAndParse(u,i,t,n.aliases,c,r,s,o);return re(f)?f.then((l)=>this.applyMiddlewareAndGetResult(u,i,l.innerArgv,a,s,l.aliases,t)):this.applyMiddlewareAndGetResult(u,i,f.innerArgv,a,s,f.aliases,t)}applyBuilderUpdateUsageAndParse(e,t,n,r,s,o,i,a){let c=t.builder,u=n;if(Rn(c)){n.getInternalMethods().getUsageInstance().freeze();let f=c(n.getInternalMethods().reset(r),a);if(re(f))return f.then((l)=>(u=pi(l)?l:n,this.parseAndUpdateUsage(e,t,u,s,o,i)))}else if(kl(c))n.getInternalMethods().getUsageInstance().freeze(),u=n.getInternalMethods().reset(r),Object.keys(t.builder).forEach((f)=>{u.option(f,c[f])});return this.parseAndUpdateUsage(e,t,u,s,o,i)}parseAndUpdateUsage(e,t,n,r,s,o){if(e)n.getInternalMethods().getUsageInstance().unfreeze(!0);if(this.shouldUpdateUsage(n))n.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(r,t),t.description);let i=n.getInternalMethods().runYargsParserAndExecuteCommands(null,void 0,!0,s,o);return re(i)?i.then((a)=>({aliases:n.parsed.aliases,innerArgv:a})):{aliases:n.parsed.aliases,innerArgv:i}}shouldUpdateUsage(e){return!e.getInternalMethods().getUsageInstance().getUsageDisabled()&&e.getInternalMethods().getUsageInstance().getUsage().length===0}usageFromParentCommandsCommandHandler(e,t){let n=Kt.test(t.original)?t.original.replace(Kt,"").trim():t.original,r=e.filter((s)=>!Kt.test(s));return r.push(n),`$0 ${r.join(" ")}`}handleValidationAndGetResult(e,t,n,r,s,o,i,a){if(!o.getInternalMethods().getHasOutput()){let c=o.getInternalMethods().runValidation(s,a,o.parsed.error,e);n=Dt(n,(u)=>(c(u),u))}if(t.handler&&!o.getInternalMethods().getHasOutput()){o.getInternalMethods().setHasOutput();let c=!!o.getOptions().configuration["populate--"];if(o.getInternalMethods().postProcess(n,c,!1,!1),n=mt(n,o,i,!1),n=Dt(n,(u)=>{let f=t.handler(u);return re(f)?f.then(()=>u):u}),!e)o.getInternalMethods().getUsageInstance().cacheHelpMessage();if(re(n)&&!o.getInternalMethods().hasParseCallback())n.catch((u)=>{try{o.getInternalMethods().getUsageInstance().fail(null,u)}catch(f){}})}if(!e)r.commands.pop(),r.fullCommands.pop();return n}applyMiddlewareAndGetResult(e,t,n,r,s,o,i){let a={};if(s)return n;if(!i.getInternalMethods().getHasOutput())a=this.populatePositionals(t,n,r,i);let c=this.globalMiddleware.getMiddleware().slice(0).concat(t.middlewares),u=mt(n,i,c,!0);return re(u)?u.then((f)=>this.handleValidationAndGetResult(e,t,f,r,o,i,c,a)):this.handleValidationAndGetResult(e,t,u,r,o,i,c,a)}populatePositionals(e,t,n,r){t._=t._.slice(n.commands.length);let s=e.demanded.slice(0),o=e.optional.slice(0),i={};this.validation.positionalCount(s.length,t._.length);while(s.length){let a=s.shift();this.populatePositional(a,t,i)}while(o.length){let a=o.shift();this.populatePositional(a,t,i)}return t._=n.commands.concat(t._.map((a)=>""+a)),this.postProcessPositionals(t,i,this.cmdToParseOptions(e.original),r),i}populatePositional(e,t,n){let r=e.cmd[0];if(e.variadic)n[r]=t._.splice(0).map(String);else if(t._.length)n[r]=[String(t._.shift())]}cmdToParseOptions(e){let t={array:[],default:{},alias:{},demand:{}},n=st(e);return n.demanded.forEach((r)=>{let[s,...o]=r.cmd;if(r.variadic)t.array.push(s),t.default[s]=[];t.alias[s]=o,t.demand[s]=!0}),n.optional.forEach((r)=>{let[s,...o]=r.cmd;if(r.variadic)t.array.push(s),t.default[s]=[];t.alias[s]=o}),t}postProcessPositionals(e,t,n,r){let s=Object.assign({},r.getOptions());s.default=Object.assign(n.default,s.default);for(let c of Object.keys(n.alias))s.alias[c]=(s.alias[c]||[]).concat(n.alias[c]);s.array=s.array.concat(n.array),s.config={};let o=[];if(Object.keys(t).forEach((c)=>{t[c].map((u)=>{if(s.configuration["unknown-options-as-args"])s.key[c]=!0;o.push(`--${c}`),o.push(u)})}),!o.length)return;let i=Object.assign({},s.configuration,{"populate--":!1}),a=this.shim.Parser.detailed(o,Object.assign({},s,{configuration:i}));if(a.error)r.getInternalMethods().getUsageInstance().fail(a.error.message,a.error);else{let c=Object.keys(t);Object.keys(t).forEach((u)=>{c.push(...a.aliases[u])}),Object.keys(a.argv).forEach((u)=>{if(c.includes(u)){if(!t[u])t[u]=a.argv[u];if(!this.isInConfigs(r,u)&&!this.isDefaulted(r,u)&&Object.prototype.hasOwnProperty.call(e,u)&&Object.prototype.hasOwnProperty.call(a.argv,u)&&(Array.isArray(e[u])||Array.isArray(a.argv[u])))e[u]=[].concat(e[u],a.argv[u]);else e[u]=a.argv[u]}})}}isDefaulted(e,t){let{default:n}=e.getOptions();return Object.prototype.hasOwnProperty.call(n,t)||Object.prototype.hasOwnProperty.call(n,this.shim.Parser.camelCase(t))}isInConfigs(e,t){let{configObjects:n}=e.getOptions();return n.some((r)=>Object.prototype.hasOwnProperty.call(r,t))||n.some((r)=>Object.prototype.hasOwnProperty.call(r,this.shim.Parser.camelCase(t)))}runDefaultBuilderOn(e){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(e)){let n=Kt.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");e.getInternalMethods().getUsageInstance().usage(n,this.defaultCommand.description)}let t=this.defaultCommand.builder;if(Rn(t))return t(e,!0);else if(!fi(t))Object.keys(t).forEach((n)=>{e.option(n,t[n])});return}extractDesc({describe:e,description:t,desc:n}){for(let r of[e,t,n]){if(typeof r==="string"||r===!1)return r;Ce(r,!0,this.shim)}return!1}freeze(){this.frozens.push({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand})}unfreeze(){let e=this.frozens.pop();Ce(e,void 0,this.shim),{handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand}=e}reset(){return this.handlers={},this.aliasMap={},this.defaultCommand=void 0,this.requireCache=new Set,this}}function hi(e,t,n,r){return new di(e,t,n,r)}function fi(e){return typeof e==="object"&&!!e.builder&&typeof e.handler==="function"}function _l(e){return e.every((t)=>typeof t==="string")}function Rn(e){return typeof e==="function"}function kl(e){return typeof e==="object"}function Sl(e){return typeof e==="object"&&!Array.isArray(e)}function rt(e={},t=()=>!0){let n={};return Ut(e).forEach((r)=>{if(t(r,e[r]))n[r]=e[r]}),n}function ot(e){if(typeof process>"u")return;[process.stdout,process.stderr].forEach((t)=>{let n=t;if(n._handle&&n.isTTY&&typeof n._handle.setBlocking==="function")n._handle.setBlocking(e)})}function Al(e){return typeof e==="boolean"}function mi(e,t){let n=t.y18n.__,r={},s=[];r.failFn=function(C){s.push(C)};let o=null,i=null,a=!0;r.showHelpOnFail=function(C=!0,S){let[O,W]=typeof C==="string"?[!0,C]:[C,S];if(e.getInternalMethods().isGlobalContext())i=W;return o=W,a=O,r};let c=!1;r.fail=function(C,S){let O=e.getInternalMethods().getLoggerInstance();if(s.length)for(let W=s.length-1;W>=0;--W){let G=s[W];if(Al(G)){if(S)throw S;else if(C)throw Error(C)}else G(C,S,r)}else{if(e.getExitProcess())ot(!0);if(!c){if(c=!0,a)e.showHelp("error"),O.error();if(C||S)O.error(C||S);let W=o||i;if(W){if(C||S)O.error("");O.error(W)}}if(S=S||new le(C),e.getExitProcess())return e.exit(1);else if(e.getInternalMethods().hasParseCallback())return e.exit(1,S);else throw S}};let u=[],f=!1;r.usage=(_,C)=>{if(_===null)return f=!0,u=[],r;return f=!1,u.push([_,C||""]),r},r.getUsage=()=>u,r.getUsageDisabled=()=>f,r.getPositionalGroupName=()=>n("Positionals:");let l=[];r.example=(_,C)=>{l.push([_,C||""])};let d=[];r.command=function(C,S,O,W,G=!1){if(O)d=d.map((q)=>(q[2]=!1,q));d.push([C,S||"",O,W,G])},r.getCommands=()=>d;let p={};r.describe=function(C,S){if(Array.isArray(C))C.forEach((O)=>{r.describe(O,S)});else if(typeof C==="object")Object.keys(C).forEach((O)=>{r.describe(O,C[O])});else p[C]=S},r.getDescriptions=()=>p;let m=[];r.epilog=(_)=>{m.push(_)};let h=!1,y;r.wrap=(_)=>{h=!0,y=_},r.getWrap=()=>{if(t.getEnv("YARGS_DISABLE_WRAP"))return null;if(!h)y=V(),h=!0;return y};let E="__yargsString__:";r.deferY18nLookup=(_)=>E+_,r.help=function(){if(k)return k;A();let C=e.customScriptName?e.$0:t.path.basename(e.$0),S=e.getDemandedOptions(),O=e.getDemandedCommands(),W=e.getDeprecatedOptions(),G=e.getGroups(),q=e.getOptions(),ae=[];ae=ae.concat(Object.keys(p)),ae=ae.concat(Object.keys(S)),ae=ae.concat(Object.keys(O)),ae=ae.concat(Object.keys(q.default)),ae=ae.filter(I),ae=Object.keys(ae.reduce((z,se)=>{if(se!=="_")z[se]=!0;return z},{}));let Ie=r.getWrap(),te=t.cliui({width:Ie,wrap:!!Ie});if(!f){if(u.length)u.forEach((z)=>{if(te.div({text:`${z[0].replace(/\$0/g,C)}`}),z[1])te.div({text:`${z[1]}`,padding:[1,0,0,0]})}),te.div();else if(d.length){let z=null;if(O._)z=`${C} <${n("command")}>
|
|
14
|
+
`)}function Us(e){return yo(e,{stringWidth:We,stripAnsi:pt,wrap:Ws})}import{dirname as Ko,resolve as Jo}from"path";import{readdirSync as qu,statSync as Yu}from"fs";function Ks(e,t){let n=Jo(".",e),r;if(!Yu(n).isDirectory())n=Ko(n);while(!0){if(r=t(n,qu(n)),r)return Jo(n,r);if(n=Ko(r=n),r===n)break}}import{inspect as dl}from"util";import{fileURLToPath as ai}from"url";import{format as Vu}from"util";import{normalize as Zu,resolve as Qu}from"path";function gt(e){if(!(e!==e.toLowerCase()&&e!==e.toUpperCase()))e=e.toLowerCase();if(e.indexOf("-")===-1&&e.indexOf("_")===-1)return e;else{let n="",r=!1,s=e.match(/^-+/);for(let o=s?s[0].length:0;o<e.length;o++){let i=e.charAt(o);if(r)r=!1,i=i.toUpperCase();if(o!==0&&(i==="-"||i==="_"))r=!0;else if(i!=="-"&&i!=="_")n+=i}return n}}function Pn(e,t){let n=e.toLowerCase();t=t||"-";let r="";for(let s=0;s<e.length;s++){let o=n.charAt(s),i=e.charAt(s);if(o!==i&&s>0)r+=`${t}${n.charAt(s)}`;else r+=i}return r}function Rn(e){if(e===null||e===void 0)return!1;if(typeof e==="number")return!0;if(/^0x[0-9a-f]+$/i.test(e))return!0;if(/^0[^.]/.test(e))return!1;return/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}function zo(e){if(Array.isArray(e))return e.map((i)=>typeof i!=="string"?i+"":i);e=e.trim();let t=0,n=null,r=null,s=null,o=[];for(let i=0;i<e.length;i++){if(n=r,r=e.charAt(i),r===" "&&!s){if(n!==" ")t++;continue}if(r===s)s=null;else if((r==="'"||r==='"')&&!s)s=r;if(!o[t])o[t]="";o[t]+=r}return o}var Te;(function(e){e.BOOLEAN="boolean",e.STRING="string",e.NUMBER="number",e.ARRAY="array"})(Te||(Te={}));var Ze;class zs{constructor(e){Ze=e}parse(e,t){let n=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},t),r=zo(e),s=typeof e==="string",o=Xu(Object.assign(Object.create(null),n.alias)),i=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":"no-","parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},n.configuration),a=Object.assign(Object.create(null),n.default),c=n.configObjects||[],u=n.envPrefix,f=i["populate--"],l=f?"--":"_",d=Object.create(null),p=Object.create(null),m=n.__||Ze.format,h={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},y=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,E=new RegExp("^--"+i["negation-prefix"]+"(.+)");if([].concat(n.array||[]).filter(Boolean).forEach(function(D){let w=typeof D==="object"?D.key:D,T=Object.keys(D).map(function(x){return{boolean:"bools",string:"strings",number:"numbers"}[x]}).filter(Boolean).pop();if(T)h[T][w]=!0;h.arrays[w]=!0,h.keys.push(w)}),[].concat(n.boolean||[]).filter(Boolean).forEach(function(D){h.bools[D]=!0,h.keys.push(D)}),[].concat(n.string||[]).filter(Boolean).forEach(function(D){h.strings[D]=!0,h.keys.push(D)}),[].concat(n.number||[]).filter(Boolean).forEach(function(D){h.numbers[D]=!0,h.keys.push(D)}),[].concat(n.count||[]).filter(Boolean).forEach(function(D){h.counts[D]=!0,h.keys.push(D)}),[].concat(n.normalize||[]).filter(Boolean).forEach(function(D){h.normalize[D]=!0,h.keys.push(D)}),typeof n.narg==="object")Object.entries(n.narg).forEach(([D,w])=>{if(typeof w==="number")h.nargs[D]=w,h.keys.push(D)});if(typeof n.coerce==="object")Object.entries(n.coerce).forEach(([D,w])=>{if(typeof w==="function")h.coercions[D]=w,h.keys.push(D)});if(typeof n.config<"u"){if(Array.isArray(n.config)||typeof n.config==="string")[].concat(n.config).filter(Boolean).forEach(function(D){h.configs[D]=!0});else if(typeof n.config==="object")Object.entries(n.config).forEach(([D,w])=>{if(typeof w==="boolean"||typeof w==="function")h.configs[D]=w})}ee(n.key,o,n.default,h.arrays),Object.keys(a).forEach(function(D){(h.aliases[D]||[]).forEach(function(w){a[w]=a[D]})});let F=null;Ms();let A=[],k=Object.assign(Object.create(null),{_:[]}),B={};for(let D=0;D<r.length;D++){let w=r[D],T=w.replace(/^-{3,}/,"---"),x,b,U,M,J,ge;if(w!=="--"&&/^-/.test(w)&&se(w))I(w);else if(T.match(/^---+(=|$)/)){I(w);continue}else if(w.match(/^--.+=/)||!i["short-option-groups"]&&w.match(/^-.+=/)){if(M=w.match(/^--?([^=]+)=([\s\S]*)$/),M!==null&&Array.isArray(M)&&M.length>=3)if(N(M[1],h.arrays))D=V(D,M[1],r,M[2]);else if(N(M[1],h.nargs)!==!1)D=R(D,M[1],r,M[2]);else L(M[1],M[2],!0)}else if(w.match(E)&&i["boolean-negation"]){if(M=w.match(E),M!==null&&Array.isArray(M)&&M.length>=2)b=M[1],L(b,N(b,h.arrays)?[!1]:!1)}else if(w.match(/^--.+/)||!i["short-option-groups"]&&w.match(/^-[^-]+/)){if(M=w.match(/^--?(.+)/),M!==null&&Array.isArray(M)&&M.length>=2)if(b=M[1],N(b,h.arrays))D=V(D,b,r);else if(N(b,h.nargs)!==!1)D=R(D,b,r);else if(J=r[D+1],J!==void 0&&(!J.match(/^-/)||J.match(y))&&!N(b,h.bools)&&!N(b,h.counts))L(b,J),D++;else if(/^(true|false)$/.test(J))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-.\..+=/)){if(M=w.match(/^-([^=]+)=([\s\S]*)$/),M!==null&&Array.isArray(M)&&M.length>=3)L(M[1],M[2])}else if(w.match(/^-.\..+/)&&!w.match(y)){if(J=r[D+1],M=w.match(/^-(.\..+)/),M!==null&&Array.isArray(M)&&M.length>=2)if(b=M[1],J!==void 0&&!J.match(/^-/)&&!N(b,h.bools)&&!N(b,h.counts))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-[^-]+/)&&!w.match(y)){U=w.slice(1,-1).split(""),x=!1;for(let Fe=0;Fe<U.length;Fe++){if(J=w.slice(Fe+2),U[Fe+1]&&U[Fe+1]==="="){if(ge=w.slice(Fe+3),b=U[Fe],N(b,h.arrays))D=V(D,b,r,ge);else if(N(b,h.nargs)!==!1)D=R(D,b,r,ge);else L(b,ge);x=!0;break}if(J==="-"){L(U[Fe],J);continue}if(/[A-Za-z]/.test(U[Fe])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(J)&&N(J,h.bools)===!1){L(U[Fe],J),x=!0;break}if(U[Fe+1]&&U[Fe+1].match(/\W/)){L(U[Fe],J),x=!0;break}else L(U[Fe],Z(U[Fe]))}if(b=w.slice(-1)[0],!x&&b!=="-")if(N(b,h.arrays))D=V(D,b,r);else if(N(b,h.nargs)!==!1)D=R(D,b,r);else if(J=r[D+1],J!==void 0&&(!/^(-|--)[^-]/.test(J)||J.match(y))&&!N(b,h.bools)&&!N(b,h.counts))L(b,J),D++;else if(/^(true|false)$/.test(J))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-[0-9]$/)&&w.match(y)&&N(w.slice(1),h.bools))b=w.slice(1),L(b,Z(b));else if(w==="--"){A=r.slice(D+1);break}else if(i["halt-at-non-option"]){A=r.slice(D);break}else I(w)}if(G(k,!0),G(k,!1),S(k),W(),Ie(k,h.aliases,a,!0),q(k),i["set-placeholder-key"])ae(k);if(Object.keys(h.counts).forEach(function(D){if(!te(k,D.split(".")))L(D,0)}),f&&A.length)k[l]=[];if(A.forEach(function(D){k[l].push(D)}),i["camel-case-expansion"]&&i["strip-dashed"])Object.keys(k).filter((D)=>D!=="--"&&D.includes("-")).forEach((D)=>{delete k[D]});if(i["strip-aliased"])[].concat(...Object.keys(o).map((D)=>o[D])).forEach((D)=>{if(i["camel-case-expansion"]&&D.includes("-"))delete k[D.split(".").map((w)=>gt(w)).join(".")];delete k[D]});function I(D){let w=C("_",D);if(typeof w==="string"||typeof w==="number")k._.push(w)}function R(D,w,T,x){let b,U=N(w,h.nargs);if(U=typeof U!=="number"||isNaN(U)?1:U,U===0){if(!he(x))F=Error(m("Argument unexpected for: %s",w));return L(w,Z(w)),D}let M=he(x)?0:1;if(i["nargs-eats-options"]){if(T.length-(D+1)+M<U)F=Error(m("Not enough arguments following: %s",w));M=U}else{for(b=D+1;b<T.length;b++)if(!T[b].match(/^-[^0-9]/)||T[b].match(y)||se(T[b]))M++;else break;if(M<U)F=Error(m("Not enough arguments following: %s",w))}let J=Math.min(M,U);if(!he(x)&&J>0)L(w,x),J--;for(b=D+1;b<J+D+1;b++)L(w,T[b]);return D+J}function V(D,w,T,x){let b=[],U=x||T[D+1],M=N(w,h.nargs);if(N(w,h.bools)&&!/^(true|false)$/.test(U))b.push(!0);else if(he(U)||he(x)&&/^-/.test(U)&&!y.test(U)&&!se(U)){if(a[w]!==void 0){let J=a[w];b=Array.isArray(J)?J:[J]}}else{if(!he(x))b.push(_(w,x,!0));for(let J=D+1;J<T.length;J++){if(!i["greedy-arrays"]&&b.length>0||M&&typeof M==="number"&&b.length>=M)break;if(U=T[J],/^-/.test(U)&&!y.test(U)&&!se(U))break;D=J,b.push(_(w,U,s))}}if(typeof M==="number"&&(M&&b.length<M||isNaN(M)&&b.length===0))F=Error(m("Not enough arguments following: %s",w));return L(w,b),D}function L(D,w,T=s){if(/-/.test(D)&&i["camel-case-expansion"]){let U=D.split(".").map(function(M){return gt(M)}).join(".");ne(D,U)}let x=_(D,w,T),b=D.split(".");if(ke(k,b,x),h.aliases[D])h.aliases[D].forEach(function(U){let M=U.split(".");ke(k,M,x)});if(b.length>1&&i["dot-notation"])(h.aliases[b[0]]||[]).forEach(function(U){let M=U.split("."),J=[].concat(b);if(J.shift(),M=M.concat(J),!(h.aliases[D]||[]).includes(M.join(".")))ke(k,M,x)});if(N(D,h.normalize)&&!N(D,h.arrays))[D].concat(h.aliases[D]||[]).forEach(function(M){Object.defineProperty(B,M,{enumerable:!0,get(){return w},set(J){w=typeof J==="string"?Ze.normalize(J):J}})})}function ne(D,w){if(!(h.aliases[D]&&h.aliases[D].length))h.aliases[D]=[w],d[w]=!0;if(!(h.aliases[w]&&h.aliases[w].length))ne(w,D)}function _(D,w,T){if(T)w=Gu(w);if(N(D,h.bools)||N(D,h.counts)){if(typeof w==="string")w=w==="true"}let x=Array.isArray(w)?w.map(function(b){return C(D,b)}):C(D,w);if(N(D,h.counts)&&(he(x)||typeof x==="boolean"))x=Js();if(N(D,h.normalize)&&N(D,h.arrays))if(Array.isArray(w))x=w.map((b)=>Ze.normalize(b));else x=Ze.normalize(w);return x}function C(D,w){if(!i["parse-positional-numbers"]&&D==="_")return w;if(!N(D,h.strings)&&!N(D,h.bools)&&!Array.isArray(w)){if(Rn(w)&&i["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${w}`)))||!he(w)&&N(D,h.numbers))w=Number(w)}return w}function S(D){let w=Object.create(null);Ie(w,h.aliases,a),Object.keys(h.configs).forEach(function(T){let x=D[T]||w[T];if(x)try{let b=null,U=Ze.resolve(Ze.cwd(),x),M=h.configs[T];if(typeof M==="function"){try{b=M(U)}catch(J){b=J}if(b instanceof Error){F=b;return}}else b=Ze.require(U);O(b)}catch(b){if(b.name==="PermissionDenied")F=b;else if(D[T])F=Error(m("Invalid JSON config file: %s",x))}})}function O(D,w){Object.keys(D).forEach(function(T){let x=D[T],b=w?w+"."+T:T;if(typeof x==="object"&&x!==null&&!Array.isArray(x)&&i["dot-notation"])O(x,b);else if(!te(k,b.split("."))||N(b,h.arrays)&&i["combine-arrays"])L(b,x)})}function W(){if(typeof c<"u")c.forEach(function(D){O(D)})}function G(D,w){if(typeof u>"u")return;let T=typeof u==="string"?u:"",x=Ze.env();Object.keys(x).forEach(function(b){if(T===""||b.lastIndexOf(T,0)===0){let U=b.split("__").map(function(M,J){if(J===0)M=M.substring(T.length);return gt(M)});if((w&&h.configs[U.join(".")]||!w)&&!te(D,U))L(U.join("."),x[b])}})}function q(D){let w,T=new Set;Object.keys(D).forEach(function(x){if(!T.has(x)){if(w=N(x,h.coercions),typeof w==="function")try{let b=C(x,w(D[x]));[].concat(h.aliases[x]||[],x).forEach((U)=>{T.add(U),D[U]=b})}catch(b){F=b}}})}function ae(D){return h.keys.forEach((w)=>{if(~w.indexOf("."))return;if(typeof D[w]>"u")D[w]=void 0}),D}function Ie(D,w,T,x=!1){Object.keys(T).forEach(function(b){if(!te(D,b.split("."))){if(ke(D,b.split("."),T[b]),x)p[b]=!0;(w[b]||[]).forEach(function(U){if(te(D,U.split(".")))return;ke(D,U.split("."),T[b])})}})}function te(D,w){let T=D;if(!i["dot-notation"])w=[w.join(".")];w.slice(0,-1).forEach(function(b){T=T[b]||{}});let x=w[w.length-1];if(typeof T!=="object")return!1;else return x in T}function ke(D,w,T){let x=D;if(!i["dot-notation"])w=[w.join(".")];w.slice(0,-1).forEach(function(ge){if(ge=Ho(ge),typeof x==="object"&&x[ge]===void 0)x[ge]={};if(typeof x[ge]!=="object"||Array.isArray(x[ge])){if(Array.isArray(x[ge]))x[ge].push({});else x[ge]=[x[ge],{}];x=x[ge][x[ge].length-1]}else x=x[ge]});let b=Ho(w[w.length-1]),U=N(w.join("."),h.arrays),M=Array.isArray(T),J=i["duplicate-arguments-array"];if(!J&&N(b,h.nargs)){if(J=!0,!he(x[b])&&h.nargs[b]===1||Array.isArray(x[b])&&x[b].length===h.nargs[b])x[b]=void 0}if(T===Js())x[b]=Js(x[b]);else if(Array.isArray(x[b]))if(J&&U&&M)x[b]=i["flatten-duplicate-arrays"]?x[b].concat(T):(Array.isArray(x[b][0])?x[b]:[x[b]]).concat([T]);else if(!J&&Boolean(U)===Boolean(M))x[b]=T;else x[b]=x[b].concat([T]);else if(x[b]===void 0&&U)x[b]=M?T:[T];else if(J&&!(x[b]===void 0||N(b,h.counts)||N(b,h.bools)))x[b]=[x[b],T];else x[b]=T}function ee(...D){D.forEach(function(w){Object.keys(w||{}).forEach(function(T){if(h.aliases[T])return;h.aliases[T]=[].concat(o[T]||[]),h.aliases[T].concat(T).forEach(function(x){if(/-/.test(x)&&i["camel-case-expansion"]){let b=gt(x);if(b!==T&&h.aliases[T].indexOf(b)===-1)h.aliases[T].push(b),d[b]=!0}}),h.aliases[T].concat(T).forEach(function(x){if(x.length>1&&/[A-Z]/.test(x)&&i["camel-case-expansion"]){let b=Pn(x,"-");if(b!==T&&h.aliases[T].indexOf(b)===-1)h.aliases[T].push(b),d[b]=!0}}),h.aliases[T].forEach(function(x){h.aliases[x]=[T].concat(h.aliases[T].filter(function(b){return x!==b}))})})})}function N(D,w){let T=[].concat(h.aliases[D]||[],D),x=Object.keys(w),b=T.find((U)=>x.includes(U));return b?w[b]:!1}function we(D){let w=Object.keys(h);return[].concat(w.map((x)=>h[x])).some(function(x){return Array.isArray(x)?x.includes(D):x[D]})}function Wt(D,...w){return[].concat(...w).some(function(x){let b=D.match(x);return b&&we(b[1])})}function z(D){if(D.match(y)||!D.match(/^-[^-]+/))return!1;let w=!0,T,x=D.slice(1).split("");for(let b=0;b<x.length;b++){if(T=D.slice(b+2),!we(x[b])){w=!1;break}if(x[b+1]&&x[b+1]==="="||T==="-"||/[A-Za-z]/.test(x[b])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(T)||x[b+1]&&x[b+1].match(/\W/))break}return w}function se(D){return i["unknown-options-as-args"]&&de(D)}function de(D){if(D=D.replace(/^-{3,}/,"--"),D.match(y))return!1;if(z(D))return!1;return!Wt(D,/^-+([^=]+?)=[\s\S]*$/,E,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}function Z(D){if(!N(D,h.bools)&&!N(D,h.counts)&&`${D}`in a)return a[D];else return ye(ue(D))}function ye(D){return{[Te.BOOLEAN]:!0,[Te.STRING]:"",[Te.NUMBER]:void 0,[Te.ARRAY]:[]}[D]}function ue(D){let w=Te.BOOLEAN;if(N(D,h.strings))w=Te.STRING;else if(N(D,h.numbers))w=Te.NUMBER;else if(N(D,h.bools))w=Te.BOOLEAN;else if(N(D,h.arrays))w=Te.ARRAY;return w}function he(D){return D===void 0}function Ms(){Object.keys(h.counts).find((D)=>{if(N(D,h.arrays))return F=Error(m("Invalid configuration: %s, opts.count excludes opts.array.",D)),!0;else if(N(D,h.nargs))return F=Error(m("Invalid configuration: %s, opts.count excludes opts.narg.",D)),!0;return!1})}return{aliases:Object.assign({},h.aliases),argv:Object.assign(B,k),configuration:i,defaulted:Object.assign({},p),error:F,newAliases:Object.assign({},d)}}}function Xu(e){let t=[],n=Object.create(null),r=!0;Object.keys(e).forEach(function(s){t.push([].concat(e[s],s))});while(r){r=!1;for(let s=0;s<t.length;s++)for(let o=s+1;o<t.length;o++)if(t[s].filter(function(a){return t[o].indexOf(a)!==-1}).length){t[s]=t[s].concat(t[o]),t.splice(o,1),r=!0;break}}return t.forEach(function(s){s=s.filter(function(i,a,c){return c.indexOf(i)===a});let o=s.pop();if(o!==void 0&&typeof o==="string")n[o]=s}),n}function Js(e){return e!==void 0?e+1:1}function Ho(e){if(e==="__proto__")return"___proto___";return e}function Gu(e){return typeof e==="string"&&(e[0]==="'"||e[0]==='"')&&e[e.length-1]===e[0]?e.substring(1,e.length-1):e}import{readFileSync as el}from"fs";import{createRequire as qo}from"node:module";var Hs,qs,Ys,Yo=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):20,Xo=(qs=(Hs=process===null||process===void 0?void 0:process.versions)===null||Hs===void 0?void 0:Hs.node)!==null&&qs!==void 0?qs:(Ys=process===null||process===void 0?void 0:process.version)===null||Ys===void 0?void 0:Ys.slice(1);if(Xo){if(Number(Xo.match(/^([^.]+)/)[1])<Yo)throw Error(`yargs parser supports a minimum Node.js version of ${Yo}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`)}var tl=process?process.env:{},Go=qo?qo(import.meta.url):void 0,Vo=new zs({cwd:process.cwd,env:()=>tl,format:Vu,normalize:Zu,resolve:Qu,require:(e)=>{if(typeof Go<"u")return Go(e);else if(e.match(/\.json$/))return JSON.parse(el(e,"utf8"));else throw Error("only .json config files are supported in ESM")}}),sn=function(t,n){return Vo.parse(t.slice(),n).argv};sn.detailed=function(e,t){return Vo.parse(e.slice(),t)};sn.camelCase=gt;sn.decamelize=Pn;sn.looksLikeNumber=Rn;var Xs=sn;import{basename as hl,dirname as pl,extname as gl,relative as ml,resolve as ii,join as Dl}from"path";function Zo(){if(nl())return 0;return 1}function nl(){return sl()&&!process.defaultApp}function sl(){return!!process.versions.electron}function Gs(e){return e.slice(Zo()+1)}function Qo(){return process.argv[Zo()]}import{readFileSync as rl,statSync as ol,writeFile as il}from"fs";import{format as al}from"util";import{resolve as cl}from"path";var ei={fs:{readFileSync:rl,writeFile:il},format:al,resolve:cl,exists:(e)=>{try{return ol(e).isFile()}catch(t){return!1}}};var Ue;class ti{constructor(e){e=e||{},this.directory=e.directory||"./locales",this.updateFiles=typeof e.updateFiles==="boolean"?e.updateFiles:!0,this.locale=e.locale||"en",this.fallbackToLanguage=typeof e.fallbackToLanguage==="boolean"?e.fallbackToLanguage:!0,this.cache=Object.create(null),this.writeQueue=[]}__(...e){if(typeof arguments[0]!=="string")return this._taggedLiteral(arguments[0],...arguments);let t=e.shift(),n=function(){};if(typeof e[e.length-1]==="function")n=e.pop();if(n=n||function(){},!this.cache[this.locale])this._readLocaleFile();if(!this.cache[this.locale][t]&&this.updateFiles)this.cache[this.locale][t]=t,this._enqueueWrite({directory:this.directory,locale:this.locale,cb:n});else n();return Ue.format.apply(Ue.format,[this.cache[this.locale][t]||t].concat(e))}__n(){let e=Array.prototype.slice.call(arguments),t=e.shift(),n=e.shift(),r=e.shift(),s=function(){};if(typeof e[e.length-1]==="function")s=e.pop();if(!this.cache[this.locale])this._readLocaleFile();let o=r===1?t:n;if(this.cache[this.locale][t])o=this.cache[this.locale][t][r===1?"one":"other"];if(!this.cache[this.locale][t]&&this.updateFiles)this.cache[this.locale][t]={one:t,other:n},this._enqueueWrite({directory:this.directory,locale:this.locale,cb:s});else s();let i=[o];if(~o.indexOf("%d"))i.push(r);return Ue.format.apply(Ue.format,i.concat(e))}setLocale(e){this.locale=e}getLocale(){return this.locale}updateLocale(e){if(!this.cache[this.locale])this._readLocaleFile();for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))this.cache[this.locale][t]=e[t]}_taggedLiteral(e,...t){let n="";return e.forEach(function(r,s){let o=t[s+1];if(n+=r,typeof o<"u")n+="%s"}),this.__.apply(this,[n].concat([].slice.call(t,1)))}_enqueueWrite(e){if(this.writeQueue.push(e),this.writeQueue.length===1)this._processWriteQueue()}_processWriteQueue(){let e=this,t=this.writeQueue[0],{directory:n,locale:r,cb:s}=t,o=this._resolveLocaleFile(n,r),i=JSON.stringify(this.cache[r],null,2);Ue.fs.writeFile(o,i,"utf-8",function(a){if(e.writeQueue.shift(),e.writeQueue.length>0)e._processWriteQueue();s(a)})}_readLocaleFile(){let e={},t=this._resolveLocaleFile(this.directory,this.locale);try{if(Ue.fs.readFileSync)e=JSON.parse(Ue.fs.readFileSync(t,"utf-8"))}catch(n){if(n instanceof SyntaxError)n.message="syntax error in "+t;if(n.code==="ENOENT")e={};else throw n}this.cache[this.locale]=e}_resolveLocaleFile(e,t){let n=Ue.resolve(e,"./",t+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(n)&&~t.lastIndexOf("_")){let r=Ue.resolve(e,"./",t.split("_")[0]+".json");if(this._fileExistsSync(r))n=r}return n}_fileExistsSync(e){return Ue.exists(e)}}function ni(e,t){Ue=t;let n=new ti(e);return{__:n.__.bind(n),__n:n.__n.bind(n),setLocale:n.setLocale.bind(n),getLocale:n.getLocale.bind(n),updateLocale:n.updateLocale.bind(n),locale:n.locale}}var ul=(e)=>ni(e,ei),si=ul;var ci=po(oi(),1);import{createRequire as yl}from"node:module";import{readFileSync as bl,readdirSync as wl}from"node:fs";var Vs=ai(import.meta.url),Fl=Vs.substring(0,Vs.lastIndexOf("node_modules")),Cl=yl(import.meta.url),Zs={assert:{notStrictEqual:ll,strictEqual:fl},cliui:Us,findUp:Ks,getEnv:(e)=>process.env[e],inspect:dl,getProcessArgvBin:Qo,mainFilename:Fl||process.cwd(),Parser:Xs,path:{basename:hl,dirname:pl,extname:gl,relative:ml,resolve:ii,join:Dl},process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(e,t)=>process.emitWarning(e,t),execPath:()=>process.execPath,exit:(e)=>{process.exit(e)},nextTick:process.nextTick,stdColumns:typeof process.stdout.columns<"u"?process.stdout.columns:null},readFileSync:bl,readdirSync:wl,require:Cl,getCallerFile:()=>{let e=ci.default(3);return e.match(/^file:\/\//)?ai(e):e},stringWidth:We,y18n:si({directory:ii(Vs,"../../../locales"),updateFiles:!1})};function Ce(e,t,n,r){n.assert.notStrictEqual(e,t,r)}function Qs(e,t){t.assert.strictEqual(typeof e,"string")}function Ut(e){return Object.keys(e)}function re(e){return!!e&&!!e.then&&typeof e.then==="function"}class le extends Error{constructor(e){super(e||"yargs error");if(this.name="YError",Error.captureStackTrace)Error.captureStackTrace(this,le)}}function st(e){let n=e.replace(/\s{2,}/g," ").split(/\s+(?![^[]*]|[^<]*>)/),r=/\.*[\][<>]/g,s=n.shift();if(!s)throw Error(`No command found in: ${e}`);let o={cmd:s.replace(r,""),demanded:[],optional:[]};return n.forEach((i,a)=>{let c=!1;if(i=i.replace(/\s/g,""),/\.+[\]>]/.test(i)&&a===n.length-1)c=!0;if(/^\[/.test(i))o.optional.push({cmd:i.replace(r,"").split("|"),variadic:c});else o.demanded.push({cmd:i.replace(r,"").split("|"),variadic:c})}),o}var El=["first","second","third","fourth","fifth","sixth"];function v(e,t,n){function r(){return typeof e==="object"?[{demanded:[],optional:[]},e,t]:[st(`cmd ${e}`),t,n]}try{let s=0,[o,i,a]=r(),c=[].slice.call(i);while(c.length&&c[c.length-1]===void 0)c.pop();let u=a||c.length;if(u<o.demanded.length)throw new le(`Not enough arguments provided. Expected ${o.demanded.length} but received ${c.length}.`);let f=o.demanded.length+o.optional.length;if(u>f)throw new le(`Too many arguments provided. Expected max ${f} but received ${u}.`);o.demanded.forEach((l)=>{let d=c.shift(),p=ui(d);if(l.cmd.filter((h)=>h===p||h==="*").length===0)li(p,l.cmd,s);s+=1}),o.optional.forEach((l)=>{if(c.length===0)return;let d=c.shift(),p=ui(d);if(l.cmd.filter((h)=>h===p||h==="*").length===0)li(p,l.cmd,s);s+=1})}catch(s){console.warn(s.stack)}}function ui(e){if(Array.isArray(e))return"array";else if(e===null)return"null";return typeof e}function li(e,t,n){throw new le(`Invalid ${El[n]||"manyith"} argument. Expected ${t.join(" or ")} but received ${e}.`)}class er{constructor(e){this.globalMiddleware=[],this.frozens=[],this.yargs=e}addMiddleware(e,t,n=!0,r=!1){if(v("<array|function> [boolean] [boolean] [boolean]",[e,t,n],arguments.length),Array.isArray(e)){for(let s=0;s<e.length;s++){if(typeof e[s]!=="function")throw Error("middleware must be a function");let o=e[s];o.applyBeforeValidation=t,o.global=n}Array.prototype.push.apply(this.globalMiddleware,e)}else if(typeof e==="function"){let s=e;s.applyBeforeValidation=t,s.global=n,s.mutates=r,this.globalMiddleware.push(e)}return this.yargs}addCoerceMiddleware(e,t){let n=this.yargs.getAliases();return this.globalMiddleware=this.globalMiddleware.filter((r)=>{let s=[...n[t]||[],t];if(!r.option)return!0;else return!s.includes(r.option)}),e.option=t,this.addMiddleware(e,!0,!0,!0)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){let e=this.frozens.pop();if(e!==void 0)this.globalMiddleware=e}reset(){this.globalMiddleware=this.globalMiddleware.filter((e)=>e.global)}}function fi(e){if(!e)return[];return e.map((t)=>(t.applyBeforeValidation=!1,t))}function mt(e,t,n,r){return n.reduce((s,o)=>{if(o.applyBeforeValidation!==r)return s;if(o.mutates){if(o.applied)return s;o.applied=!0}if(re(s))return s.then((i)=>Promise.all([i,o(i,t)])).then(([i,a])=>Object.assign(i,a));else{let i=o(s,t);return re(i)?i.then((a)=>Object.assign(s,a)):Object.assign(s,i)}},e)}function Dt(e,t,n=(r)=>{throw r}){try{let r=xl(e)?e():e;return re(r)?r.then((s)=>t(s)):t(r)}catch(r){return n(r)}}function xl(e){return typeof e==="function"}var Kt=/(^\*)|(^\$0)/;class hi{constructor(e,t,n,r){this.requireCache=new Set,this.handlers={},this.aliasMap={},this.frozens=[],this.shim=r,this.usage=e,this.globalMiddleware=n,this.validation=t}addDirectory(e,t,n,r){r=r||{},this.requireCache.add(n);let s=this.shim.path.resolve(this.shim.path.dirname(n),e),o=this.shim.readdirSync(s,{recursive:r.recurse?!0:!1});if(!Array.isArray(r.extensions))r.extensions=["js"];let i=typeof r.visit==="function"?r.visit:(a)=>a;for(let a of o){let c=a.toString();if(r.exclude){let f=!1;if(typeof r.exclude==="function")f=r.exclude(c);else f=r.exclude.test(c);if(f)continue}if(r.include){let f=!1;if(typeof r.include==="function")f=r.include(c);else f=r.include.test(c);if(!f)continue}let u=!1;for(let f of r.extensions)if(c.endsWith(f))u=!0;if(u){let f=this.shim.path.join(s,c),l=t(f),d=Object.create(null,Object.getOwnPropertyDescriptors({...l}));if(i(d,f,c)){if(this.requireCache.has(f))continue;else this.requireCache.add(f);if(!d.command)d.command=this.shim.path.basename(f,this.shim.path.extname(f));this.addHandler(d)}}}}addHandler(e,t,n,r,s,o){let i=[],a=fi(s);if(r=r||(()=>{}),Array.isArray(e))if(_l(e))[e,...i]=e;else for(let c of e)this.addHandler(c);else if(Sl(e)){let c=Array.isArray(e.command)||typeof e.command==="string"?e.command:null;if(c===null)throw Error(`No command name given for module: ${this.shim.inspect(e)}`);if(e.aliases)c=[].concat(c).concat(e.aliases);this.addHandler(c,this.extractDesc(e),e.builder,e.handler,e.middlewares,e.deprecated);return}else if(di(n)){this.addHandler([e].concat(i),t,n.builder,n.handler,n.middlewares,n.deprecated);return}if(typeof e==="string"){let c=st(e);i=i.map((l)=>st(l).cmd);let u=!1,f=[c.cmd].concat(i).filter((l)=>{if(Kt.test(l))return u=!0,!1;return!0});if(f.length===0&&u)f.push("$0");if(u)c.cmd=f[0],i=f.slice(1),e=e.replace(Kt,c.cmd);if(i.forEach((l)=>{this.aliasMap[l]=c.cmd}),t!==!1)this.usage.command(e,t,u,i,o);if(this.handlers[c.cmd]={original:e,description:t,handler:r,builder:n||{},middlewares:a,deprecated:o,demanded:c.demanded,optional:c.optional},u)this.defaultCommand=this.handlers[c.cmd]}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(e,t,n,r,s,o){let i=this.handlers[e]||this.handlers[this.aliasMap[e]]||this.defaultCommand,a=t.getInternalMethods().getContext(),c=a.commands.slice(),u=!e;if(e)a.commands.push(e),a.fullCommands.push(i.original);let f=this.applyBuilderUpdateUsageAndParse(u,i,t,n.aliases,c,r,s,o);return re(f)?f.then((l)=>this.applyMiddlewareAndGetResult(u,i,l.innerArgv,a,s,l.aliases,t)):this.applyMiddlewareAndGetResult(u,i,f.innerArgv,a,s,f.aliases,t)}applyBuilderUpdateUsageAndParse(e,t,n,r,s,o,i,a){let c=t.builder,u=n;if(Mn(c)){n.getInternalMethods().getUsageInstance().freeze();let f=c(n.getInternalMethods().reset(r),a);if(re(f))return f.then((l)=>(u=gi(l)?l:n,this.parseAndUpdateUsage(e,t,u,s,o,i)))}else if(kl(c))n.getInternalMethods().getUsageInstance().freeze(),u=n.getInternalMethods().reset(r),Object.keys(t.builder).forEach((f)=>{u.option(f,c[f])});return this.parseAndUpdateUsage(e,t,u,s,o,i)}parseAndUpdateUsage(e,t,n,r,s,o){if(e)n.getInternalMethods().getUsageInstance().unfreeze(!0);if(this.shouldUpdateUsage(n))n.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(r,t),t.description);let i=n.getInternalMethods().runYargsParserAndExecuteCommands(null,void 0,!0,s,o);return re(i)?i.then((a)=>({aliases:n.parsed.aliases,innerArgv:a})):{aliases:n.parsed.aliases,innerArgv:i}}shouldUpdateUsage(e){return!e.getInternalMethods().getUsageInstance().getUsageDisabled()&&e.getInternalMethods().getUsageInstance().getUsage().length===0}usageFromParentCommandsCommandHandler(e,t){let n=Kt.test(t.original)?t.original.replace(Kt,"").trim():t.original,r=e.filter((s)=>!Kt.test(s));return r.push(n),`$0 ${r.join(" ")}`}handleValidationAndGetResult(e,t,n,r,s,o,i,a){if(!o.getInternalMethods().getHasOutput()){let c=o.getInternalMethods().runValidation(s,a,o.parsed.error,e);n=Dt(n,(u)=>(c(u),u))}if(t.handler&&!o.getInternalMethods().getHasOutput()){o.getInternalMethods().setHasOutput();let c=!!o.getOptions().configuration["populate--"];if(o.getInternalMethods().postProcess(n,c,!1,!1),n=mt(n,o,i,!1),n=Dt(n,(u)=>{let f=t.handler(u);return re(f)?f.then(()=>u):u}),!e)o.getInternalMethods().getUsageInstance().cacheHelpMessage();if(re(n)&&!o.getInternalMethods().hasParseCallback())n.catch((u)=>{try{o.getInternalMethods().getUsageInstance().fail(null,u)}catch(f){}})}if(!e)r.commands.pop(),r.fullCommands.pop();return n}applyMiddlewareAndGetResult(e,t,n,r,s,o,i){let a={};if(s)return n;if(!i.getInternalMethods().getHasOutput())a=this.populatePositionals(t,n,r,i);let c=this.globalMiddleware.getMiddleware().slice(0).concat(t.middlewares),u=mt(n,i,c,!0);return re(u)?u.then((f)=>this.handleValidationAndGetResult(e,t,f,r,o,i,c,a)):this.handleValidationAndGetResult(e,t,u,r,o,i,c,a)}populatePositionals(e,t,n,r){t._=t._.slice(n.commands.length);let s=e.demanded.slice(0),o=e.optional.slice(0),i={};this.validation.positionalCount(s.length,t._.length);while(s.length){let a=s.shift();this.populatePositional(a,t,i)}while(o.length){let a=o.shift();this.populatePositional(a,t,i)}return t._=n.commands.concat(t._.map((a)=>""+a)),this.postProcessPositionals(t,i,this.cmdToParseOptions(e.original),r),i}populatePositional(e,t,n){let r=e.cmd[0];if(e.variadic)n[r]=t._.splice(0).map(String);else if(t._.length)n[r]=[String(t._.shift())]}cmdToParseOptions(e){let t={array:[],default:{},alias:{},demand:{}},n=st(e);return n.demanded.forEach((r)=>{let[s,...o]=r.cmd;if(r.variadic)t.array.push(s),t.default[s]=[];t.alias[s]=o,t.demand[s]=!0}),n.optional.forEach((r)=>{let[s,...o]=r.cmd;if(r.variadic)t.array.push(s),t.default[s]=[];t.alias[s]=o}),t}postProcessPositionals(e,t,n,r){let s=Object.assign({},r.getOptions());s.default=Object.assign(n.default,s.default);for(let c of Object.keys(n.alias))s.alias[c]=(s.alias[c]||[]).concat(n.alias[c]);s.array=s.array.concat(n.array),s.config={};let o=[];if(Object.keys(t).forEach((c)=>{t[c].map((u)=>{if(s.configuration["unknown-options-as-args"])s.key[c]=!0;o.push(`--${c}`),o.push(u)})}),!o.length)return;let i=Object.assign({},s.configuration,{"populate--":!1}),a=this.shim.Parser.detailed(o,Object.assign({},s,{configuration:i}));if(a.error)r.getInternalMethods().getUsageInstance().fail(a.error.message,a.error);else{let c=Object.keys(t);Object.keys(t).forEach((u)=>{c.push(...a.aliases[u])}),Object.keys(a.argv).forEach((u)=>{if(c.includes(u)){if(!t[u])t[u]=a.argv[u];if(!this.isInConfigs(r,u)&&!this.isDefaulted(r,u)&&Object.prototype.hasOwnProperty.call(e,u)&&Object.prototype.hasOwnProperty.call(a.argv,u)&&(Array.isArray(e[u])||Array.isArray(a.argv[u])))e[u]=[].concat(e[u],a.argv[u]);else e[u]=a.argv[u]}})}}isDefaulted(e,t){let{default:n}=e.getOptions();return Object.prototype.hasOwnProperty.call(n,t)||Object.prototype.hasOwnProperty.call(n,this.shim.Parser.camelCase(t))}isInConfigs(e,t){let{configObjects:n}=e.getOptions();return n.some((r)=>Object.prototype.hasOwnProperty.call(r,t))||n.some((r)=>Object.prototype.hasOwnProperty.call(r,this.shim.Parser.camelCase(t)))}runDefaultBuilderOn(e){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(e)){let n=Kt.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");e.getInternalMethods().getUsageInstance().usage(n,this.defaultCommand.description)}let t=this.defaultCommand.builder;if(Mn(t))return t(e,!0);else if(!di(t))Object.keys(t).forEach((n)=>{e.option(n,t[n])});return}extractDesc({describe:e,description:t,desc:n}){for(let r of[e,t,n]){if(typeof r==="string"||r===!1)return r;Ce(r,!0,this.shim)}return!1}freeze(){this.frozens.push({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand})}unfreeze(){let e=this.frozens.pop();Ce(e,void 0,this.shim),{handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand}=e}reset(){return this.handlers={},this.aliasMap={},this.defaultCommand=void 0,this.requireCache=new Set,this}}function pi(e,t,n,r){return new hi(e,t,n,r)}function di(e){return typeof e==="object"&&!!e.builder&&typeof e.handler==="function"}function _l(e){return e.every((t)=>typeof t==="string")}function Mn(e){return typeof e==="function"}function kl(e){return typeof e==="object"}function Sl(e){return typeof e==="object"&&!Array.isArray(e)}function rt(e={},t=()=>!0){let n={};return Ut(e).forEach((r)=>{if(t(r,e[r]))n[r]=e[r]}),n}function ot(e){if(typeof process>"u")return;[process.stdout,process.stderr].forEach((t)=>{let n=t;if(n._handle&&n.isTTY&&typeof n._handle.setBlocking==="function")n._handle.setBlocking(e)})}function Al(e){return typeof e==="boolean"}function Di(e,t){let n=t.y18n.__,r={},s=[];r.failFn=function(C){s.push(C)};let o=null,i=null,a=!0;r.showHelpOnFail=function(C=!0,S){let[O,W]=typeof C==="string"?[!0,C]:[C,S];if(e.getInternalMethods().isGlobalContext())i=W;return o=W,a=O,r};let c=!1;r.fail=function(C,S){let O=e.getInternalMethods().getLoggerInstance();if(s.length)for(let W=s.length-1;W>=0;--W){let G=s[W];if(Al(G)){if(S)throw S;else if(C)throw Error(C)}else G(C,S,r)}else{if(e.getExitProcess())ot(!0);if(!c){if(c=!0,a)e.showHelp("error"),O.error();if(C||S)O.error(C||S);let W=o||i;if(W){if(C||S)O.error("");O.error(W)}}if(S=S||new le(C),e.getExitProcess())return e.exit(1);else if(e.getInternalMethods().hasParseCallback())return e.exit(1,S);else throw S}};let u=[],f=!1;r.usage=(_,C)=>{if(_===null)return f=!0,u=[],r;return f=!1,u.push([_,C||""]),r},r.getUsage=()=>u,r.getUsageDisabled=()=>f,r.getPositionalGroupName=()=>n("Positionals:");let l=[];r.example=(_,C)=>{l.push([_,C||""])};let d=[];r.command=function(C,S,O,W,G=!1){if(O)d=d.map((q)=>(q[2]=!1,q));d.push([C,S||"",O,W,G])},r.getCommands=()=>d;let p={};r.describe=function(C,S){if(Array.isArray(C))C.forEach((O)=>{r.describe(O,S)});else if(typeof C==="object")Object.keys(C).forEach((O)=>{r.describe(O,C[O])});else p[C]=S},r.getDescriptions=()=>p;let m=[];r.epilog=(_)=>{m.push(_)};let h=!1,y;r.wrap=(_)=>{h=!0,y=_},r.getWrap=()=>{if(t.getEnv("YARGS_DISABLE_WRAP"))return null;if(!h)y=V(),h=!0;return y};let E="__yargsString__:";r.deferY18nLookup=(_)=>E+_,r.help=function(){if(k)return k;A();let C=e.customScriptName?e.$0:t.path.basename(e.$0),S=e.getDemandedOptions(),O=e.getDemandedCommands(),W=e.getDeprecatedOptions(),G=e.getGroups(),q=e.getOptions(),ae=[];ae=ae.concat(Object.keys(p)),ae=ae.concat(Object.keys(S)),ae=ae.concat(Object.keys(O)),ae=ae.concat(Object.keys(q.default)),ae=ae.filter(I),ae=Object.keys(ae.reduce((z,se)=>{if(se!=="_")z[se]=!0;return z},{}));let Ie=r.getWrap(),te=t.cliui({width:Ie,wrap:!!Ie});if(!f){if(u.length)u.forEach((z)=>{if(te.div({text:`${z[0].replace(/\$0/g,C)}`}),z[1])te.div({text:`${z[1]}`,padding:[1,0,0,0]})}),te.div();else if(d.length){let z=null;if(O._)z=`${C} <${n("command")}>
|
|
15
15
|
`;else z=`${C} [${n("command")}]
|
|
16
|
-
`;te.div(`${z}`)}}if(d.length>1||d.length===1&&!d[0][2]){te.div(n("Commands:"));let z=e.getInternalMethods().getContext(),se=z.commands.length?`${z.commands.join(" ")} `:"";if(e.getInternalMethods().getParserConfiguration()["sort-commands"]===!0)d=d.sort((Z,ye)=>Z[0].localeCompare(ye[0]));let de=C?`${C} `:"";d.forEach((Z)=>{let ye=`${de}${se}${Z[0].replace(/^\$0 ?/,"")}`;te.span({text:ye,padding:[0,2,0,2],width:F(d,Ie,`${C}${se}`)+4},{text:Z[1]});let ue=[];if(Z[2])ue.push(`[${n("default")}]`);if(Z[3]&&Z[3].length)ue.push(`[${n("aliases:")} ${Z[3].join(", ")}]`);if(Z[4])if(typeof Z[4]==="string")ue.push(`[${n("deprecated: %s",Z[4])}]`);else ue.push(`[${n("deprecated")}]`);if(ue.length)te.div({text:ue.join(" "),padding:[0,0,0,2],align:"right"});else te.div()}),te.div()}let ke=(Object.keys(q.alias)||[]).concat(Object.keys(e.parsed.newAliases)||[]);ae=ae.filter((z)=>!e.parsed.newAliases[z]&&ke.every((se)=>(q.alias[se]||[]).indexOf(z)===-1));let ee=n("Options:");if(!G[ee])G[ee]=[];B(ae,q.alias,G,ee);let N=(z)=>/^--/.test(
|
|
16
|
+
`;te.div(`${z}`)}}if(d.length>1||d.length===1&&!d[0][2]){te.div(n("Commands:"));let z=e.getInternalMethods().getContext(),se=z.commands.length?`${z.commands.join(" ")} `:"";if(e.getInternalMethods().getParserConfiguration()["sort-commands"]===!0)d=d.sort((Z,ye)=>Z[0].localeCompare(ye[0]));let de=C?`${C} `:"";d.forEach((Z)=>{let ye=`${de}${se}${Z[0].replace(/^\$0 ?/,"")}`;te.span({text:ye,padding:[0,2,0,2],width:F(d,Ie,`${C}${se}`)+4},{text:Z[1]});let ue=[];if(Z[2])ue.push(`[${n("default")}]`);if(Z[3]&&Z[3].length)ue.push(`[${n("aliases:")} ${Z[3].join(", ")}]`);if(Z[4])if(typeof Z[4]==="string")ue.push(`[${n("deprecated: %s",Z[4])}]`);else ue.push(`[${n("deprecated")}]`);if(ue.length)te.div({text:ue.join(" "),padding:[0,0,0,2],align:"right"});else te.div()}),te.div()}let ke=(Object.keys(q.alias)||[]).concat(Object.keys(e.parsed.newAliases)||[]);ae=ae.filter((z)=>!e.parsed.newAliases[z]&&ke.every((se)=>(q.alias[se]||[]).indexOf(z)===-1));let ee=n("Options:");if(!G[ee])G[ee]=[];B(ae,q.alias,G,ee);let N=(z)=>/^--/.test(Bn(z)),we=Object.keys(G).filter((z)=>G[z].length>0).map((z)=>{let se=G[z].filter(I).map((de)=>{if(ke.includes(de))return de;for(let Z=0,ye;(ye=ke[Z])!==void 0;Z++)if((q.alias[ye]||[]).includes(de))return ye;return de});return{groupName:z,normalizedKeys:se}}).filter(({normalizedKeys:z})=>z.length>0).map(({groupName:z,normalizedKeys:se})=>{let de=se.reduce((Z,ye)=>(Z[ye]=[ye].concat(q.alias[ye]||[]).map((ue)=>{if(z===r.getPositionalGroupName())return ue;else return(/^[0-9]$/.test(ue)?q.boolean.includes(ye)?"-":"--":ue.length>1?"--":"-")+ue}).sort((ue,he)=>N(ue)===N(he)?0:N(ue)?1:-1).join(", "),Z),{});return{groupName:z,normalizedKeys:se,switches:de}});if(we.filter(({groupName:z})=>z!==r.getPositionalGroupName()).some(({normalizedKeys:z,switches:se})=>!z.every((de)=>N(se[de]))))we.filter(({groupName:z})=>z!==r.getPositionalGroupName()).forEach(({normalizedKeys:z,switches:se})=>{z.forEach((de)=>{if(N(se[de]))se[de]=$l(se[de],4)})});if(we.forEach(({groupName:z,normalizedKeys:se,switches:de})=>{te.div(z),se.forEach((Z)=>{let ye=de[Z],ue=p[Z]||"",he=null;if(ue.includes(E))ue=n(ue.substring(E.length));if(q.boolean.includes(Z))he=`[${n("boolean")}]`;if(q.count.includes(Z))he=`[${n("count")}]`;if(q.string.includes(Z))he=`[${n("string")}]`;if(q.normalize.includes(Z))he=`[${n("string")}]`;if(q.array.includes(Z))he=`[${n("array")}]`;if(q.number.includes(Z))he=`[${n("number")}]`;let Ms=(T)=>typeof T==="string"?`[${n("deprecated: %s",T)}]`:`[${n("deprecated")}]`,D=[Z in W?Ms(W[Z]):null,he,Z in S?`[${n("required")}]`:null,q.choices&&q.choices[Z]?`[${n("choices:")} ${r.stringifiedValues(q.choices[Z])}]`:null,R(q.default[Z],q.defaultDescription[Z])].filter(Boolean).join(" ");te.span({text:Bn(ye),padding:[0,2,0,2+mi(ye)],width:F(de,Ie)+4},ue);let w=e.getInternalMethods().getUsageConfiguration()["hide-types"]===!0;if(D&&!w)te.div({text:D,padding:[0,0,0,2],align:"right"});else te.div()}),te.div()}),l.length)te.div(n("Examples:")),l.forEach((z)=>{z[0]=z[0].replace(/\$0/g,C)}),l.forEach((z)=>{if(z[1]==="")te.div({text:z[0],padding:[0,2,0,2]});else te.div({text:z[0],padding:[0,2,0,2],width:F(l,Ie)+4},{text:z[1]})}),te.div();if(m.length>0){let z=m.map((se)=>se.replace(/\$0/g,C)).join(`
|
|
17
17
|
`);te.div(`${z}
|
|
18
|
-
`)}return te.toString().replace(/\s*$/,"")};function F(_,C,S){let O=0;if(!Array.isArray(_))_=Object.values(_).map((W)=>[W]);if(_.forEach((W)=>{O=Math.max(t.stringWidth(S?`${S} ${
|
|
18
|
+
`)}return te.toString().replace(/\s*$/,"")};function F(_,C,S){let O=0;if(!Array.isArray(_))_=Object.values(_).map((W)=>[W]);if(_.forEach((W)=>{O=Math.max(t.stringWidth(S?`${S} ${Bn(W[0])}`:Bn(W[0]))+mi(W[0]),O)}),C)O=Math.min(O,parseInt((C*0.5).toString(),10));return O}function A(){let _=e.getDemandedOptions(),C=e.getOptions();(Object.keys(C.alias)||[]).forEach((S)=>{C.alias[S].forEach((O)=>{if(p[O])r.describe(S,p[O]);if(O in _)e.demandOption(S,_[O]);if(C.boolean.includes(O))e.boolean(S);if(C.count.includes(O))e.count(S);if(C.string.includes(O))e.string(S);if(C.normalize.includes(O))e.normalize(S);if(C.array.includes(O))e.array(S);if(C.number.includes(O))e.number(S)})})}let k;r.cacheHelpMessage=function(){k=this.help()},r.clearCachedHelpMessage=function(){k=void 0},r.hasCachedHelpMessage=function(){return!!k};function B(_,C,S,O){let W=[],G=null;return Object.keys(S).forEach((q)=>{W=W.concat(S[q])}),_.forEach((q)=>{if(G=[q].concat(C[q]),!G.some((ae)=>W.indexOf(ae)!==-1))S[O].push(q)}),W}function I(_){return e.getOptions().hiddenOptions.indexOf(_)<0||e.parsed.argv[e.getOptions().showHiddenOpt]}r.showHelp=(_)=>{let C=e.getInternalMethods().getLoggerInstance();if(!_)_="error";(typeof _==="function"?_:C[_])(r.help())},r.functionDescription=(_)=>["(",_.name?t.Parser.decamelize(_.name,"-"):n("generated-value"),")"].join(""),r.stringifiedValues=function(C,S){let O="",W=S||", ",G=[].concat(C);if(!C||!G.length)return O;return G.forEach((q)=>{if(O.length)O+=W;O+=JSON.stringify(q)}),O};function R(_,C){let S=`[${n("default:")} `;if(_===void 0&&!C)return null;if(C)S+=C;else switch(typeof _){case"string":S+=`"${_}"`;break;case"object":S+=JSON.stringify(_);break;default:S+=_}return`${S}]`}function V(){if(t.process.stdColumns)return Math.min(80,t.process.stdColumns);else return 80}let L=null;r.version=(_)=>{L=_},r.showVersion=(_)=>{let C=e.getInternalMethods().getLoggerInstance();if(!_)_="error";(typeof _==="function"?_:C[_])(L)},r.reset=function(C){return o=null,c=!1,u=[],f=!1,m=[],l=[],d=[],p=rt(p,(S)=>!C[S]),r};let ne=[];return r.freeze=function(){ne.push({failMessage:o,failureOutput:c,usages:u,usageDisabled:f,epilogs:m,examples:l,commands:d,descriptions:p})},r.unfreeze=function(C=!1){let S=ne.pop();if(!S)return;if(C)p={...S.descriptions,...p},d=[...S.commands,...d],u=[...S.usages,...u],l=[...S.examples,...l],m=[...S.epilogs,...m];else({failMessage:o,failureOutput:c,usages:u,usageDisabled:f,epilogs:m,examples:l,commands:d,descriptions:p}=S)},r}function tr(e){return typeof e==="object"}function $l(e,t){return tr(e)?{text:e.text,indentation:e.indentation+t}:{text:e,indentation:t}}function mi(e){return tr(e)?e.indentation:0}function Bn(e){return tr(e)?e.text:e}var yi=`###-begin-{{app_name}}-completions-###
|
|
19
19
|
#
|
|
20
20
|
# yargs command completion script
|
|
21
21
|
#
|
|
@@ -44,7 +44,7 @@ _{{app_name}}_yargs_completions()
|
|
|
44
44
|
}
|
|
45
45
|
complete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}}
|
|
46
46
|
###-end-{{app_name}}-completions-###
|
|
47
|
-
`,
|
|
47
|
+
`,bi=`#compdef {{app_name}}
|
|
48
48
|
###-begin-{{app_name}}-completions-###
|
|
49
49
|
#
|
|
50
50
|
# yargs command completion script
|
|
@@ -71,67 +71,67 @@ else
|
|
|
71
71
|
compdef _{{app_name}}_yargs_completions {{app_name}}
|
|
72
72
|
fi
|
|
73
73
|
###-end-{{app_name}}-completions-###
|
|
74
|
-
`;class
|
|
74
|
+
`;class wi{constructor(e,t,n,r){var s,o,i;this.yargs=e,this.usage=t,this.command=n,this.shim=r,this.completionKey="get-yargs-completions",this.aliases=null,this.customCompletionFunction=null,this.indexAfterLastReset=0,this.zshShell=(i=((s=this.shim.getEnv("SHELL"))===null||s===void 0?void 0:s.includes("zsh"))||((o=this.shim.getEnv("ZSH_NAME"))===null||o===void 0?void 0:o.includes("zsh")))!==null&&i!==void 0?i:!1}defaultCompletion(e,t,n,r){let s=this.command.getCommandHandlers();for(let i=0,a=e.length;i<a;++i)if(s[e[i]]&&s[e[i]].builder){let c=s[e[i]].builder;if(Mn(c)){this.indexAfterLastReset=i+1;let u=this.yargs.getInternalMethods().reset();return c(u,!0),u.argv}}let o=[];this.commandCompletions(o,e,n),this.optionCompletions(o,e,t,n),this.choicesFromOptionsCompletions(o,e,t,n),this.choicesFromPositionalsCompletions(o,e,t,n),r(null,o)}commandCompletions(e,t,n){let r=this.yargs.getInternalMethods().getContext().commands;if(!n.match(/^-/)&&r[r.length-1]!==n&&!this.previousArgHasChoices(t))this.usage.getCommands().forEach((s)=>{let o=st(s[0]).cmd;if(t.indexOf(o)===-1)if(!this.zshShell)e.push(o);else{let i=s[1]||"";e.push(o.replace(/:/g,"\\:")+":"+i)}})}optionCompletions(e,t,n,r){if((r.match(/^-/)||r===""&&e.length===0)&&!this.previousArgHasChoices(t)){let s=this.yargs.getOptions(),o=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];Object.keys(s.key).forEach((i)=>{let a=!!s.configuration["boolean-negation"]&&s.boolean.includes(i);if(!o.includes(i)&&!s.hiddenOptions.includes(i)&&!this.argsContainKey(t,i,a))this.completeOptionKey(i,e,r,a&&!!s.default[i])})}}choicesFromOptionsCompletions(e,t,n,r){if(this.previousArgHasChoices(t)){let s=this.getPreviousArgChoices(t);if(s&&s.length>0)e.push(...s.map((o)=>o.replace(/:/g,"\\:")))}}choicesFromPositionalsCompletions(e,t,n,r){if(r===""&&e.length>0&&this.previousArgHasChoices(t))return;let s=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[],o=Math.max(this.indexAfterLastReset,this.yargs.getInternalMethods().getContext().commands.length+1),i=s[n._.length-o-1];if(!i)return;let a=this.yargs.getOptions().choices[i]||[];for(let c of a)if(c.startsWith(r))e.push(c.replace(/:/g,"\\:"))}getPreviousArgChoices(e){if(e.length<1)return;let t=e[e.length-1],n="";if(!t.startsWith("-")&&e.length>1)n=t,t=e[e.length-2];if(!t.startsWith("-"))return;let r=t.replace(/^-+/,""),s=this.yargs.getOptions(),o=[r,...this.yargs.getAliases()[r]||[]],i;for(let a of o)if(Object.prototype.hasOwnProperty.call(s.key,a)&&Array.isArray(s.choices[a])){i=s.choices[a];break}if(i)return i.filter((a)=>!n||a.startsWith(n))}previousArgHasChoices(e){let t=this.getPreviousArgChoices(e);return t!==void 0&&t.length>0}argsContainKey(e,t,n){let r=(s)=>e.indexOf((/^[^0-9]$/.test(s)?"-":"--")+s)!==-1;if(r(t))return!0;if(n&&r(`no-${t}`))return!0;if(this.aliases){for(let s of this.aliases[t])if(r(s))return!0}return!1}completeOptionKey(e,t,n,r){var s,o,i,a;let c=e;if(this.zshShell){let d=this.usage.getDescriptions(),p=(o=(s=this===null||this===void 0?void 0:this.aliases)===null||s===void 0?void 0:s[e])===null||o===void 0?void 0:o.find((y)=>{let E=d[y];return typeof E==="string"&&E.length>0}),m=p?d[p]:void 0,h=(a=(i=d[e])!==null&&i!==void 0?i:m)!==null&&a!==void 0?a:"";c=`${e.replace(/:/g,"\\:")}:${h.replace("__yargsString__:","").replace(/(\r\n|\n|\r)/gm," ")}`}let u=(d)=>/^--/.test(d),f=(d)=>/^[^0-9]$/.test(d),l=!u(n)&&f(e)?"-":"--";if(t.push(l+c),r)t.push(l+"no-"+c)}customCompletion(e,t,n,r){if(Ce(this.customCompletionFunction,null,this.shim),Il(this.customCompletionFunction)){let s=this.customCompletionFunction(n,t);if(re(s))return s.then((o)=>{this.shim.process.nextTick(()=>{r(null,o)})}).catch((o)=>{this.shim.process.nextTick(()=>{r(o,void 0)})});return r(null,s)}else if(Tl(this.customCompletionFunction))return this.customCompletionFunction(n,t,(s=r)=>this.defaultCompletion(e,t,n,s),(s)=>{r(null,s)});else return this.customCompletionFunction(n,t,(s)=>{r(null,s)})}getCompletion(e,t){let n=e.length?e[e.length-1]:"",r=this.yargs.parse(e,!0),s=this.customCompletionFunction?(o)=>this.customCompletion(e,o,n,t):(o)=>this.defaultCompletion(e,o,n,t);return re(r)?r.then(s):s(r)}generateCompletionScript(e,t){let n=this.zshShell?bi:yi,r=this.shim.path.basename(e);if(e.match(/\.js$/))e=`./${e}`;return n=n.replace(/{{app_name}}/g,r),n=n.replace(/{{completion_command}}/g,t),n.replace(/{{app_path}}/g,e)}registerFunction(e){this.customCompletionFunction=e}setParsed(e){this.aliases=e.aliases}}function Fi(e,t,n,r){return new wi(e,t,n,r)}function Il(e){return e.length<3}function Tl(e){return e.length>3}function Ci(e,t){if(e.length===0)return t.length;if(t.length===0)return e.length;let n=[],r;for(r=0;r<=t.length;r++)n[r]=[r];let s;for(s=0;s<=e.length;s++)n[0][s]=s;for(r=1;r<=t.length;r++)for(s=1;s<=e.length;s++)if(t.charAt(r-1)===e.charAt(s-1))n[r][s]=n[r-1][s-1];else if(r>1&&s>1&&t.charAt(r-2)===e.charAt(s-1)&&t.charAt(r-1)===e.charAt(s-2))n[r][s]=n[r-2][s-2]+1;else n[r][s]=Math.min(n[r-1][s-1]+1,Math.min(n[r][s-1]+1,n[r-1][s]+1));return n[t.length][e.length]}var Ei=["$0","--","_"];function xi(e,t,n){let r=n.y18n.__,s=n.y18n.__n,o={};o.nonOptionCount=function(l){let d=e.getDemandedCommands(),m=l._.length+(l["--"]?l["--"].length:0)-e.getInternalMethods().getContext().commands.length;if(d._&&(m<d._.min||m>d._.max)){if(m<d._.min)if(d._.minMsg!==void 0)t.fail(d._.minMsg?d._.minMsg.replace(/\$0/g,m.toString()).replace(/\$1/,d._.min.toString()):null);else t.fail(s("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",m,m.toString(),d._.min.toString()));else if(m>d._.max)if(d._.maxMsg!==void 0)t.fail(d._.maxMsg?d._.maxMsg.replace(/\$0/g,m.toString()).replace(/\$1/,d._.max.toString()):null);else t.fail(s("Too many non-option arguments: got %s, maximum of %s","Too many non-option arguments: got %s, maximum of %s",m,m.toString(),d._.max.toString()))}},o.positionalCount=function(l,d){if(d<l)t.fail(s("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",d,d+"",l+""))},o.requiredArguments=function(l,d){let p=null;for(let m of Object.keys(d))if(!Object.prototype.hasOwnProperty.call(l,m)||typeof l[m]>"u")p=p||{},p[m]=d[m];if(p){let m=[];for(let y of Object.keys(p)){let E=p[y];if(E&&m.indexOf(E)<0)m.push(E)}let h=m.length?`
|
|
75
75
|
${m.join(`
|
|
76
|
-
`)}`:"";t.fail(s("Missing required argument: %s","Missing required arguments: %s",Object.keys(p).length,Object.keys(p).join(", ")+h))}},o.unknownArguments=function(l,d,p,m,h=!0){var y;let E=e.getInternalMethods().getCommandInstance().getCommands(),F=[],A=e.getInternalMethods().getContext();if(Object.keys(l).forEach((k)=>{if(!
|
|
76
|
+
`)}`:"";t.fail(s("Missing required argument: %s","Missing required arguments: %s",Object.keys(p).length,Object.keys(p).join(", ")+h))}},o.unknownArguments=function(l,d,p,m,h=!0){var y;let E=e.getInternalMethods().getCommandInstance().getCommands(),F=[],A=e.getInternalMethods().getContext();if(Object.keys(l).forEach((k)=>{if(!Ei.includes(k)&&!Object.prototype.hasOwnProperty.call(p,k)&&!Object.prototype.hasOwnProperty.call(e.getInternalMethods().getParseContext(),k)&&!o.isValidAndSomeAliasIsNotNew(k,d))F.push(k)}),h&&(A.commands.length>0||E.length>0||m))l._.slice(A.commands.length).forEach((k)=>{if(!E.includes(""+k))F.push(""+k)});if(h){let B=((y=e.getDemandedCommands()._)===null||y===void 0?void 0:y.max)||0,I=A.commands.length+B;if(I<l._.length)l._.slice(I).forEach((R)=>{if(R=String(R),!A.commands.includes(R)&&!F.includes(R))F.push(R)})}if(F.length)t.fail(s("Unknown argument: %s","Unknown arguments: %s",F.length,F.map((k)=>k.trim()?k:`"${k}"`).join(", ")))},o.unknownCommands=function(l){let d=e.getInternalMethods().getCommandInstance().getCommands(),p=[],m=e.getInternalMethods().getContext();if(m.commands.length>0||d.length>0)l._.slice(m.commands.length).forEach((h)=>{if(!d.includes(""+h))p.push(""+h)});if(p.length>0)return t.fail(s("Unknown command: %s","Unknown commands: %s",p.length,p.join(", "))),!0;else return!1},o.isValidAndSomeAliasIsNotNew=function(l,d){if(!Object.prototype.hasOwnProperty.call(d,l))return!1;let p=e.parsed.newAliases;return[l,...d[l]].some((m)=>!Object.prototype.hasOwnProperty.call(p,m)||!p[l])},o.limitedChoices=function(l){let d=e.getOptions(),p={};if(!Object.keys(d.choices).length)return;Object.keys(l).forEach((y)=>{if(Ei.indexOf(y)===-1&&Object.prototype.hasOwnProperty.call(d.choices,y))[].concat(l[y]).forEach((E)=>{if(d.choices[y].indexOf(E)===-1&&E!==void 0)p[y]=(p[y]||[]).concat(E)})});let m=Object.keys(p);if(!m.length)return;let h=r("Invalid values:");m.forEach((y)=>{h+=`
|
|
77
77
|
${r("Argument: %s, Given: %s, Choices: %s",y,t.stringifiedValues(p[y]),t.stringifiedValues(d.choices[y]))}`}),t.fail(h)};let i={};o.implies=function(l,d){if(v("<string|object> [array|number|string]",[l,d],arguments.length),typeof l==="object")Object.keys(l).forEach((p)=>{o.implies(p,l[p])});else{if(e.global(l),!i[l])i[l]=[];if(Array.isArray(d))d.forEach((p)=>o.implies(l,p));else Ce(d,void 0,n),i[l].push(d)}},o.getImplied=function(){return i};function a(f,l){let d=Number(l);if(l=isNaN(d)?l:d,typeof l==="number")l=f._.length>=l;else if(l.match(/^--no-.+/))l=l.match(/^--no-(.+)/)[1],l=!Object.prototype.hasOwnProperty.call(f,l);else l=Object.prototype.hasOwnProperty.call(f,l);return l}o.implications=function(l){let d=[];if(Object.keys(i).forEach((p)=>{let m=p;(i[p]||[]).forEach((h)=>{let y=m,E=h;if(y=a(l,y),h=a(l,h),y&&!h)d.push(` ${m} -> ${E}`)})}),d.length){let p=`${r("Implications failed:")}
|
|
78
|
-
`;d.forEach((m)=>{p+=m}),t.fail(p)}};let c={};o.conflicts=function(l,d){if(v("<string|object> [array|string]",[l,d],arguments.length),typeof l==="object")Object.keys(l).forEach((p)=>{o.conflicts(p,l[p])});else{if(e.global(l),!c[l])c[l]=[];if(Array.isArray(d))d.forEach((p)=>o.conflicts(l,p));else c[l].push(d)}},o.getConflicting=()=>c,o.conflicting=function(l){if(Object.keys(l).forEach((d)=>{if(c[d])c[d].forEach((p)=>{if(p&&l[d]!==void 0&&l[p]!==void 0)t.fail(r("Arguments %s and %s are mutually exclusive",d,p))})}),e.getInternalMethods().getParserConfiguration()["strip-dashed"])Object.keys(c).forEach((d)=>{c[d].forEach((p)=>{if(p&&l[n.Parser.camelCase(d)]!==void 0&&l[n.Parser.camelCase(p)]!==void 0)t.fail(r("Arguments %s and %s are mutually exclusive",d,p))})})},o.recommendCommands=function(l,d){d=d.sort((y,E)=>E.length-y.length);let m=null,h=1/0;for(let y=0,E;(E=d[y])!==void 0;y++){let F=Fi(l,E);if(F<=3&&F<h)h=F,m=E}if(m)t.fail(r("Did you mean %s?",m))},o.reset=function(l){return i=rt(i,(d)=>!l[d]),c=rt(c,(d)=>!l[d]),o};let u=[];return o.freeze=function(){u.push({implied:i,conflicting:c})},o.unfreeze=function(){let l=u.pop();Ce(l,void 0,n),{implied:i,conflicting:c}=l},o}var nr=[],rn;function on(e,t,n,r){rn=r;let s={};if(Object.prototype.hasOwnProperty.call(e,"extends")){if(typeof e.extends!=="string")return s;let o=/\.json|\..*rc$/.test(e.extends),i=null;if(!o)try{i=import.meta.resolve(e.extends)}catch(a){return e}else i=Rl(t,e.extends);Pl(i),nr.push(i),s=o?JSON.parse(rn.readFileSync(i,"utf8")):r.require(e.extends),delete e.extends,s=on(s,rn.path.dirname(i),n,rn)}return nr=[],n?xi(s,e):Object.assign({},s,e)}function Pl(e){if(nr.indexOf(e)>-1)throw new le(`Circular extended configurations: '${e}'.`)}function Rl(e,t){return rn.path.resolve(e,t)}function xi(e,t){let n={};function r(s){return s&&typeof s==="object"&&!Array.isArray(s)}Object.assign(n,e);for(let s of Object.keys(t))if(r(t[s])&&r(n[s]))n[s]=xi(e[s],t[s]);else n[s]=t[s];return n}var j=function(e,t,n,r,s){if(r==="m")throw TypeError("Private method is not writable");if(r==="a"&&!s)throw TypeError("Private accessor was defined without a setter");if(typeof t==="function"?e!==t||!s:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?s.call(e,n):s?s.value=n:t.set(e,n),n},g=function(e,t,n,r){if(n==="a"&&!r)throw TypeError("Private accessor was defined without a getter");if(typeof t==="function"?e!==t||!r:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?r:n==="a"?r.call(e):r?r.value:t.get(e)},fe,yt,an,xe,Ae,Bn,it,bt,Nn,Pe,vn,Re,Xe,$e,Me,jn,wt,me,K,Ln,Wn,Oe,Ft,Jt,Ct,at,Un,H,Et,xt,_t,Y,Kn,Ge,ce;function Ji(e){return(t=[],n=e.process.cwd(),r)=>{let s=new zi(t,n,r,e);return Object.defineProperty(s,"argv",{get:()=>s.parse(),enumerable:!0}),s.help(),s.version(),s}}var _i=Symbol("copyDoubleDash"),ki=Symbol("copyDoubleDash"),sr=Symbol("deleteFromParserHintObject"),Si=Symbol("emitWarning"),Ai=Symbol("freeze"),$i=Symbol("getDollarZero"),kt=Symbol("getParserConfiguration"),Oi=Symbol("getUsageConfiguration"),rr=Symbol("guessLocale"),Ii=Symbol("guessVersion"),Ti=Symbol("parsePositionalNumbers"),or=Symbol("pkgUp"),ct=Symbol("populateParserHintArray"),zt=Symbol("populateParserHintSingleValueDictionary"),ir=Symbol("populateParserHintArrayDictionary"),ar=Symbol("populateParserHintDictionary"),cr=Symbol("sanitizeKey"),ur=Symbol("setKey"),lr=Symbol("unfreeze"),Pi=Symbol("validateAsync"),Ri=Symbol("getCommandInstance"),Mi=Symbol("getContext"),Bi=Symbol("getHasOutput"),Ni=Symbol("getLoggerInstance"),vi=Symbol("getParseContext"),ji=Symbol("getUsageInstance"),Li=Symbol("getValidationInstance"),Jn=Symbol("hasParseCallback"),Wi=Symbol("isGlobalContext"),St=Symbol("postProcess"),Ui=Symbol("rebase"),fr=Symbol("reset"),cn=Symbol("runYargsParserAndExecuteCommands"),dr=Symbol("runValidation"),Ki=Symbol("setHasOutput"),At=Symbol("kTrackManuallySetKeys"),Ml="en_US";class zi{constructor(e=[],t,n,r){this.customScriptName=!1,this.parsed=!1,fe.set(this,void 0),yt.set(this,void 0),an.set(this,{commands:[],fullCommands:[]}),xe.set(this,null),Ae.set(this,null),Bn.set(this,"show-hidden"),it.set(this,null),bt.set(this,!0),Nn.set(this,{}),Pe.set(this,!0),vn.set(this,[]),Re.set(this,void 0),Xe.set(this,{}),$e.set(this,!1),Me.set(this,null),jn.set(this,!0),wt.set(this,void 0),me.set(this,""),K.set(this,void 0),Ln.set(this,void 0),Wn.set(this,{}),Oe.set(this,null),Ft.set(this,null),Jt.set(this,{}),Ct.set(this,{}),at.set(this,void 0),Un.set(this,!1),H.set(this,void 0),Et.set(this,!1),xt.set(this,!1),_t.set(this,!1),Y.set(this,void 0),Kn.set(this,{}),Ge.set(this,null),ce.set(this,void 0),j(this,H,r,"f"),j(this,at,e,"f"),j(this,yt,t,"f"),j(this,Ln,n,"f"),j(this,Re,new er(this),"f"),this.$0=this[$i](),this[fr](),j(this,fe,g(this,fe,"f"),"f"),j(this,Y,g(this,Y,"f"),"f"),j(this,ce,g(this,ce,"f"),"f"),j(this,K,g(this,K,"f"),"f"),g(this,K,"f").showHiddenOpt=g(this,Bn,"f"),j(this,wt,this[ki](),"f"),g(this,H,"f").y18n.setLocale(Ml)}addHelpOpt(e,t){if(v("[string|boolean] [string]",[e,t],arguments.length),g(this,Me,"f"))this[sr](g(this,Me,"f")),j(this,Me,null,"f");if(e===!1&&t===void 0)return this;return j(this,Me,typeof e==="string"?e:"help","f"),this.boolean(g(this,Me,"f")),this.describe(g(this,Me,"f"),t||g(this,Y,"f").deferY18nLookup("Show help")),this}help(e,t){return this.addHelpOpt(e,t)}addShowHiddenOpt(e,t){if(v("[string|boolean] [string]",[e,t],arguments.length),e===!1&&t===void 0)return this;let n=typeof e==="string"?e:g(this,Bn,"f");return this.boolean(n),this.describe(n,t||g(this,Y,"f").deferY18nLookup("Show hidden options")),g(this,K,"f").showHiddenOpt=n,this}showHidden(e,t){return this.addShowHiddenOpt(e,t)}alias(e,t){return v("<object|string|array> [string|array]",[e,t],arguments.length),this[ir](this.alias.bind(this),"alias",e,t),this}array(e){return v("<array|string>",[e],arguments.length),this[ct]("array",e),this[At](e),this}boolean(e){return v("<array|string>",[e],arguments.length),this[ct]("boolean",e),this[At](e),this}check(e,t){return v("<function> [boolean]",[e,t],arguments.length),this.middleware((n,r)=>Dt(()=>e(n,r.getOptions()),(s)=>{if(!s)g(this,Y,"f").fail(g(this,H,"f").y18n.__("Argument check failed: %s",e.toString()));else if(typeof s==="string"||s instanceof Error)g(this,Y,"f").fail(s.toString(),s);return n},(s)=>(g(this,Y,"f").fail(s.message?s.message:s.toString(),s),n)),!1,t),this}choices(e,t){return v("<object|string|array> [string|array]",[e,t],arguments.length),this[ir](this.choices.bind(this),"choices",e,t),this}coerce(e,t){if(v("<object|string|array> [function]",[e,t],arguments.length),Array.isArray(e)){if(!t)throw new le("coerce callback must be provided");for(let r of e)this.coerce(r,t);return this}else if(typeof e==="object"){for(let r of Object.keys(e))this.coerce(r,e[r]);return this}if(!t)throw new le("coerce callback must be provided");let n=e;return g(this,K,"f").key[n]=!0,g(this,Re,"f").addCoerceMiddleware((r,s)=>{var o;let i=(o=s.getAliases()[n])!==null&&o!==void 0?o:[],a=[n,...i].filter((c)=>Object.prototype.hasOwnProperty.call(r,c));if(a.length===0)return r;return Dt(()=>t(r[a[0]]),(c)=>(a.forEach((u)=>{r[u]=c}),r),(c)=>{throw new le(c.message)})},n),this}conflicts(e,t){return v("<string|object> [string|array]",[e,t],arguments.length),g(this,ce,"f").conflicts(e,t),this}config(e="config",t,n){if(v("[object|string] [string|function] [function]",[e,t,n],arguments.length),typeof e==="object"&&!Array.isArray(e))return e=on(e,g(this,yt,"f"),this[kt]()["deep-merge-config"]||!1,g(this,H,"f")),g(this,K,"f").configObjects=(g(this,K,"f").configObjects||[]).concat(e),this;if(typeof t==="function")n=t,t=void 0;return this.describe(e,t||g(this,Y,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(e)?e:[e]).forEach((r)=>{g(this,K,"f").config[r]=n||!0}),this}completion(e,t,n){if(v("[string] [string|boolean|function] [function]",[e,t,n],arguments.length),typeof t==="function")n=t,t=void 0;if(j(this,Ae,e||g(this,Ae,"f")||"completion","f"),!t&&t!==!1)t="generate completion script";if(this.command(g(this,Ae,"f"),t),n)g(this,xe,"f").registerFunction(n);return this}command(e,t,n,r,s,o){return v("<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]",[e,t,n,r,s,o],arguments.length),g(this,fe,"f").addHandler(e,t,n,r,s,o),this}commands(e,t,n,r,s,o){return this.command(e,t,n,r,s,o)}commandDir(e,t){v("<string> [object]",[e,t],arguments.length);let n=g(this,Ln,"f")||g(this,H,"f").require;return g(this,fe,"f").addDirectory(e,n,g(this,H,"f").getCallerFile(),t),this}count(e){return v("<array|string>",[e],arguments.length),this[ct]("count",e),this[At](e),this}default(e,t,n){if(v("<object|string|array> [*] [string]",[e,t,n],arguments.length),n)Qs(e,g(this,H,"f")),g(this,K,"f").defaultDescription[e]=n;if(typeof t==="function"){if(Qs(e,g(this,H,"f")),!g(this,K,"f").defaultDescription[e])g(this,K,"f").defaultDescription[e]=g(this,Y,"f").functionDescription(t);t=t.call()}return this[zt](this.default.bind(this),"default",e,t),this}defaults(e,t,n){return this.default(e,t,n)}demandCommand(e=1,t,n,r){if(v("[number] [number|string] [string|null|undefined] [string|null|undefined]",[e,t,n,r],arguments.length),typeof t!=="number")n=t,t=1/0;return this.global("_",!1),g(this,K,"f").demandedCommands._={min:e,max:t,minMsg:n,maxMsg:r},this}demand(e,t,n){if(Array.isArray(t))t.forEach((r)=>{Ce(n,!0,g(this,H,"f")),this.demandOption(r,n)}),t=1/0;else if(typeof t!=="number")n=t,t=1/0;if(typeof e==="number")Ce(n,!0,g(this,H,"f")),this.demandCommand(e,t,n,n);else if(Array.isArray(e))e.forEach((r)=>{Ce(n,!0,g(this,H,"f")),this.demandOption(r,n)});else if(typeof n==="string")this.demandOption(e,n);else if(n===!0||typeof n>"u")this.demandOption(e);return this}demandOption(e,t){return v("<object|string|array> [string]",[e,t],arguments.length),this[zt](this.demandOption.bind(this),"demandedOptions",e,t),this}deprecateOption(e,t){return v("<string> [string|boolean]",[e,t],arguments.length),g(this,K,"f").deprecatedOptions[e]=t,this}describe(e,t){return v("<object|string|array> [string]",[e,t],arguments.length),this[ur](e,!0),g(this,Y,"f").describe(e,t),this}detectLocale(e){return v("<boolean>",[e],arguments.length),j(this,bt,e,"f"),this}env(e){if(v("[string|boolean]",[e],arguments.length),e===!1)delete g(this,K,"f").envPrefix;else g(this,K,"f").envPrefix=e||"";return this}epilogue(e){return v("<string>",[e],arguments.length),g(this,Y,"f").epilog(e),this}epilog(e){return this.epilogue(e)}example(e,t){if(v("<string|array> [string]",[e,t],arguments.length),Array.isArray(e))e.forEach((n)=>this.example(...n));else g(this,Y,"f").example(e,t);return this}exit(e,t){if(j(this,$e,!0,"f"),j(this,it,t,"f"),g(this,Pe,"f"))g(this,H,"f").process.exit(e)}exitProcess(e=!0){return v("[boolean]",[e],arguments.length),j(this,Pe,e,"f"),this}fail(e){if(v("<function|boolean>",[e],arguments.length),typeof e==="boolean"&&e!==!1)throw new le("Invalid first argument. Expected function or boolean 'false'");return g(this,Y,"f").failFn(e),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(e,t){if(v("<array> [function]",[e,t],arguments.length),!t)return new Promise((n,r)=>{g(this,xe,"f").getCompletion(e,(s,o)=>{if(s)r(s);else n(o)})});else return g(this,xe,"f").getCompletion(e,t)}getDemandedOptions(){return v([],0),g(this,K,"f").demandedOptions}getDemandedCommands(){return v([],0),g(this,K,"f").demandedCommands}getDeprecatedOptions(){return v([],0),g(this,K,"f").deprecatedOptions}getDetectLocale(){return g(this,bt,"f")}getExitProcess(){return g(this,Pe,"f")}getGroups(){return Object.assign({},g(this,Xe,"f"),g(this,Ct,"f"))}getHelp(){if(j(this,$e,!0,"f"),!g(this,Y,"f").hasCachedHelpMessage()){if(!this.parsed){let t=this[cn](g(this,at,"f"),void 0,void 0,0,!0);if(re(t))return t.then(()=>g(this,Y,"f").help())}let e=g(this,fe,"f").runDefaultBuilderOn(this);if(re(e))return e.then(()=>g(this,Y,"f").help())}return Promise.resolve(g(this,Y,"f").help())}getOptions(){return g(this,K,"f")}getStrict(){return g(this,Et,"f")}getStrictCommands(){return g(this,xt,"f")}getStrictOptions(){return g(this,_t,"f")}global(e,t){if(v("<string|array> [boolean]",[e,t],arguments.length),e=[].concat(e),t!==!1)g(this,K,"f").local=g(this,K,"f").local.filter((n)=>e.indexOf(n)===-1);else e.forEach((n)=>{if(!g(this,K,"f").local.includes(n))g(this,K,"f").local.push(n)});return this}group(e,t){v("<string|array> <string>",[e,t],arguments.length);let n=g(this,Ct,"f")[t]||g(this,Xe,"f")[t];if(g(this,Ct,"f")[t])delete g(this,Ct,"f")[t];let r={};return g(this,Xe,"f")[t]=(n||[]).concat(e).filter((s)=>{if(r[s])return!1;return r[s]=!0}),this}hide(e){return v("<string>",[e],arguments.length),g(this,K,"f").hiddenOptions.push(e),this}implies(e,t){return v("<string|object> [number|string|array]",[e,t],arguments.length),g(this,ce,"f").implies(e,t),this}locale(e){if(v("[string]",[e],arguments.length),e===void 0)return this[rr](),g(this,H,"f").y18n.getLocale();return j(this,bt,!1,"f"),g(this,H,"f").y18n.setLocale(e),this}middleware(e,t,n){return g(this,Re,"f").addMiddleware(e,!!t,n)}nargs(e,t){return v("<string|object|array> [number]",[e,t],arguments.length),this[zt](this.nargs.bind(this),"narg",e,t),this}normalize(e){return v("<array|string>",[e],arguments.length),this[ct]("normalize",e),this}number(e){return v("<array|string>",[e],arguments.length),this[ct]("number",e),this[At](e),this}option(e,t){if(v("<string|object> [object]",[e,t],arguments.length),typeof e==="object")Object.keys(e).forEach((n)=>{this.options(n,e[n])});else{if(typeof t!=="object")t={};if(this[At](e),g(this,Ge,"f")&&(e==="version"||(t===null||t===void 0?void 0:t.alias)==="version"))this[Si](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join(`
|
|
79
|
-
`),void 0,"versionWarning");if(g(this,K,"f").key[e]=!0,t.alias)this.alias(e,t.alias);let n=t.deprecate||t.deprecated;if(n)this.deprecateOption(e,n);let r=t.demand||t.required||t.require;if(r)this.demand(e,r);if(t.demandOption)this.demandOption(e,typeof t.demandOption==="string"?t.demandOption:void 0);if(t.conflicts)this.conflicts(e,t.conflicts);if("default"in t)this.default(e,t.default);if(t.implies!==void 0)this.implies(e,t.implies);if(t.nargs!==void 0)this.nargs(e,t.nargs);if(t.config)this.config(e,t.configParser);if(t.normalize)this.normalize(e);if(t.choices)this.choices(e,t.choices);if(t.coerce)this.coerce(e,t.coerce);if(t.group)this.group(e,t.group);if(t.boolean||t.type==="boolean"){if(this.boolean(e),t.alias)this.boolean(t.alias)}if(t.array||t.type==="array"){if(this.array(e),t.alias)this.array(t.alias)}if(t.number||t.type==="number"){if(this.number(e),t.alias)this.number(t.alias)}if(t.string||t.type==="string"){if(this.string(e),t.alias)this.string(t.alias)}if(t.count||t.type==="count")this.count(e);if(typeof t.global==="boolean")this.global(e,t.global);if(t.defaultDescription)g(this,K,"f").defaultDescription[e]=t.defaultDescription;if(t.skipValidation)this.skipValidation(e);let s=t.describe||t.description||t.desc,o=g(this,Y,"f").getDescriptions();if(!Object.prototype.hasOwnProperty.call(o,e)||typeof s==="string")this.describe(e,s);if(t.hidden)this.hide(e);if(t.requiresArg)this.requiresArg(e)}return this}options(e,t){return this.option(e,t)}parse(e,t,n){if(v("[string|array] [function|boolean|object] [function]",[e,t,n],arguments.length),this[
|
|
80
|
-
`,"f");j(this,me,g(this,me,"f")+e.join(" "),"f")},error:(...e)=>{if(!this[
|
|
81
|
-
`,"f");j(this,me,g(this,me,"f")+e.join(" "),"f")}}}[sr](e){Ut(g(this,K,"f")).forEach((t)=>{if(((r)=>r==="configObjects")(t))return;let n=g(this,K,"f")[t];if(Array.isArray(n)){if(n.includes(e))n.splice(n.indexOf(e),1)}else if(typeof n==="object")delete n[e]}),delete g(this,Y,"f").getDescriptions()[e]}[Si](e,t,n){if(!g(this,Nn,"f")[n])g(this,H,"f").process.emitWarning(e,t),g(this,Nn,"f")[n]=!0}[Ai](){g(this,vn,"f").push({options:g(this,K,"f"),configObjects:g(this,K,"f").configObjects.slice(0),exitProcess:g(this,Pe,"f"),groups:g(this,Xe,"f"),strict:g(this,Et,"f"),strictCommands:g(this,xt,"f"),strictOptions:g(this,_t,"f"),completionCommand:g(this,Ae,"f"),output:g(this,me,"f"),exitError:g(this,it,"f"),hasOutput:g(this,$e,"f"),parsed:this.parsed,parseFn:g(this,Oe,"f"),parseContext:g(this,Ft,"f")}),g(this,Y,"f").freeze(),g(this,ce,"f").freeze(),g(this,fe,"f").freeze(),g(this,Re,"f").freeze()}[$i](){let e="",t;if(/\b(node|iojs|electron)(\.exe)?$/.test(g(this,H,"f").process.argv()[0]))t=g(this,H,"f").process.argv().slice(1,2);else t=g(this,H,"f").process.argv().slice(0,1);if(e=t.map((n)=>{let r=this[Ui](g(this,yt,"f"),n);return n.match(/^(\/|([a-zA-Z]:)?\\)/)&&r.length<n.length?r:n}).join(" ").trim(),g(this,H,"f").getEnv("_")&&g(this,H,"f").getProcessArgvBin()===g(this,H,"f").getEnv("_"))e=g(this,H,"f").getEnv("_").replace(`${g(this,H,"f").path.dirname(g(this,H,"f").process.execPath())}/`,"");return e}[kt](){return g(this,Wn,"f")}[Oi](){return g(this,Kn,"f")}[rr](){if(!g(this,bt,"f"))return;let e=g(this,H,"f").getEnv("LC_ALL")||g(this,H,"f").getEnv("LC_MESSAGES")||g(this,H,"f").getEnv("LANG")||g(this,H,"f").getEnv("LANGUAGE")||"en_US";this.locale(e.replace(/[.:].*/,""))}[Ii](){return this[or]().version||"unknown"}[Ti](e){let t=e["--"]?e["--"]:e._;for(let n=0,r;(r=t[n])!==void 0;n++)if(g(this,H,"f").Parser.looksLikeNumber(r)&&Number.isSafeInteger(Math.floor(parseFloat(`${r}`))))t[n]=Number(r);return e}[or](e){let t=e||"*";if(g(this,Jt,"f")[t])return g(this,Jt,"f")[t];let n={};try{let r=e||g(this,H,"f").mainFilename;if(g(this,H,"f").path.extname(r))r=g(this,H,"f").path.dirname(r);let s=g(this,H,"f").findUp(r,(o,i)=>{if(i.includes("package.json"))return"package.json";else return});Ce(s,void 0,g(this,H,"f")),n=JSON.parse(g(this,H,"f").readFileSync(s,"utf8"))}catch(r){}return g(this,Jt,"f")[t]=n||{},g(this,Jt,"f")[t]}[ct](e,t){t=[].concat(t),t.forEach((n)=>{n=this[cr](n),g(this,K,"f")[e].push(n)})}[zt](e,t,n,r){this[ar](e,t,n,r,(s,o,i)=>{g(this,K,"f")[s][o]=i})}[ir](e,t,n,r){this[ar](e,t,n,r,(s,o,i)=>{g(this,K,"f")[s][o]=(g(this,K,"f")[s][o]||[]).concat(i)})}[ar](e,t,n,r,s){if(Array.isArray(n))n.forEach((o)=>{e(o,r)});else if(((o)=>typeof o==="object")(n))for(let o of Ut(n))e(o,n[o]);else s(t,this[cr](n),r)}[cr](e){if(e==="__proto__")return"___proto___";return e}[ur](e,t){return this[zt](this[ur].bind(this),"key",e,t),this}[lr](){var e,t,n,r,s,o,i,a,c,u,f,l;let d=g(this,vn,"f").pop();Ce(d,void 0,g(this,H,"f"));let p;e=this,t=this,n=this,r=this,s=this,o=this,i=this,a=this,c=this,u=this,f=this,l=this,{options:{set value(m){j(e,K,m,"f")}}.value,configObjects:p,exitProcess:{set value(m){j(t,Pe,m,"f")}}.value,groups:{set value(m){j(n,Xe,m,"f")}}.value,output:{set value(m){j(r,me,m,"f")}}.value,exitError:{set value(m){j(s,it,m,"f")}}.value,hasOutput:{set value(m){j(o,$e,m,"f")}}.value,parsed:this.parsed,strict:{set value(m){j(i,Et,m,"f")}}.value,strictCommands:{set value(m){j(a,xt,m,"f")}}.value,strictOptions:{set value(m){j(c,_t,m,"f")}}.value,completionCommand:{set value(m){j(u,Ae,m,"f")}}.value,parseFn:{set value(m){j(f,Oe,m,"f")}}.value,parseContext:{set value(m){j(l,Ft,m,"f")}}.value}=d,g(this,K,"f").configObjects=p,g(this,Y,"f").unfreeze(),g(this,ce,"f").unfreeze(),g(this,fe,"f").unfreeze(),g(this,Re,"f").unfreeze()}[Pi](e,t){return Dt(t,(n)=>(e(n),n))}getInternalMethods(){return{getCommandInstance:this[Ri].bind(this),getContext:this[Mi].bind(this),getHasOutput:this[Bi].bind(this),getLoggerInstance:this[Ni].bind(this),getParseContext:this[vi].bind(this),getParserConfiguration:this[kt].bind(this),getUsageConfiguration:this[Oi].bind(this),getUsageInstance:this[ji].bind(this),getValidationInstance:this[Li].bind(this),hasParseCallback:this[Jn].bind(this),isGlobalContext:this[Wi].bind(this),postProcess:this[St].bind(this),reset:this[fr].bind(this),runValidation:this[dr].bind(this),runYargsParserAndExecuteCommands:this[cn].bind(this),setHasOutput:this[Ki].bind(this)}}[Ri](){return g(this,fe,"f")}[Mi](){return g(this,an,"f")}[Bi](){return g(this,$e,"f")}[Ni](){return g(this,wt,"f")}[vi](){return g(this,Ft,"f")||{}}[ji](){return g(this,Y,"f")}[Li](){return g(this,ce,"f")}[Jn](){return!!g(this,Oe,"f")}[Wi](){return g(this,jn,"f")}[St](e,t,n,r){if(n)return e;if(re(e))return e;if(!t)e=this[_i](e);if(this[kt]()["parse-positional-numbers"]||this[kt]()["parse-positional-numbers"]===void 0)e=this[Ti](e);if(r)e=mt(e,this,g(this,Re,"f").getMiddleware(),!1);return e}[fr](e={}){j(this,K,g(this,K,"f")||{},"f");let t={};t.local=g(this,K,"f").local||[],t.configObjects=g(this,K,"f").configObjects||[];let n={};t.local.forEach((o)=>{n[o]=!0,(e[o]||[]).forEach((i)=>{n[i]=!0})}),Object.assign(g(this,Ct,"f"),Object.keys(g(this,Xe,"f")).reduce((o,i)=>{let a=g(this,Xe,"f")[i].filter((c)=>!(c in n));if(a.length>0)o[i]=a;return o},{})),j(this,Xe,{},"f");let r=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],s=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];if(r.forEach((o)=>{t[o]=(g(this,K,"f")[o]||[]).filter((i)=>!n[i])}),s.forEach((o)=>{t[o]=rt(g(this,K,"f")[o],(i)=>!n[i])}),t.envPrefix=g(this,K,"f").envPrefix,j(this,K,t,"f"),j(this,Y,g(this,Y,"f")?g(this,Y,"f").reset(n):mi(this,g(this,H,"f")),"f"),j(this,ce,g(this,ce,"f")?g(this,ce,"f").reset(n):Ei(this,g(this,Y,"f"),g(this,H,"f")),"f"),j(this,fe,g(this,fe,"f")?g(this,fe,"f").reset():hi(g(this,Y,"f"),g(this,ce,"f"),g(this,Re,"f"),g(this,H,"f")),"f"),!g(this,xe,"f"))j(this,xe,wi(this,g(this,Y,"f"),g(this,fe,"f"),g(this,H,"f")),"f");return g(this,Re,"f").reset(),j(this,Ae,null,"f"),j(this,me,"","f"),j(this,it,null,"f"),j(this,$e,!1,"f"),this.parsed=!1,this}[Ui](e,t){return g(this,H,"f").path.relative(e,t)}[cn](e,t,n,r=0,s=!1){var o,i,a,c;let u=!!n||s;e=e||g(this,at,"f"),g(this,K,"f").__=g(this,H,"f").y18n.__,g(this,K,"f").configuration=this[kt]();let f=!!g(this,K,"f").configuration["populate--"],l=Object.assign({},g(this,K,"f").configuration,{"populate--":!0}),d=g(this,H,"f").Parser.detailed(e,Object.assign({},g(this,K,"f"),{configuration:{"parse-positional-numbers":!1,...l}})),p=Object.assign(d.argv,g(this,Ft,"f")),m=void 0,h=d.aliases,y=!1,E=!1;if(Object.keys(p).forEach((F)=>{if(F===g(this,Me,"f")&&p[F])y=!0;else if(F===g(this,Ge,"f")&&p[F])E=!0}),p.$0=this.$0,this.parsed=d,r===0)g(this,Y,"f").clearCachedHelpMessage();try{if(this[rr](),t)return this[St](p,f,!!n,!1);if(g(this,Me,"f")){if([g(this,Me,"f")].concat(h[g(this,Me,"f")]||[]).filter((I)=>I.length>1).includes(""+p._[p._.length-1]))p._.pop(),y=!0}j(this,jn,!1,"f");let F=g(this,fe,"f").getCommands(),A=((o=g(this,xe,"f"))===null||o===void 0?void 0:o.completionKey)?[(i=g(this,xe,"f"))===null||i===void 0?void 0:i.completionKey,...(c=this.getAliases()[(a=g(this,xe,"f"))===null||a===void 0?void 0:a.completionKey])!==null&&c!==void 0?c:[]].some((B)=>Object.prototype.hasOwnProperty.call(p,B)):!1,k=y||A||s;if(p._.length){if(F.length){let B;for(let I=r||0,R;p._[I]!==void 0;I++)if(R=String(p._[I]),F.includes(R)&&R!==g(this,Ae,"f")){let V=g(this,fe,"f").runCommand(R,this,d,I+1,s,y||E||s);return this[St](V,f,!!n,!1)}else if(!B&&R!==g(this,Ae,"f")){B=R;break}if(!g(this,fe,"f").hasDefaultCommand()&&g(this,Un,"f")&&B&&!k)g(this,ce,"f").recommendCommands(B,F)}if(g(this,Ae,"f")&&p._.includes(g(this,Ae,"f"))&&!A){if(g(this,Pe,"f"))ot(!0);this.showCompletionScript(),this.exit(0)}}if(g(this,fe,"f").hasDefaultCommand()&&!k){let B=g(this,fe,"f").runCommand(null,this,d,0,s,y||E||s);return this[St](B,f,!!n,!1)}if(A){if(g(this,Pe,"f"))ot(!0);e=[].concat(e);let B=e.slice(e.indexOf(`--${g(this,xe,"f").completionKey}`)+1);return g(this,xe,"f").getCompletion(B,(I,R)=>{if(I)throw new le(I.message);(R||[]).forEach((V)=>{g(this,wt,"f").log(V)}),this.exit(0)}),this[St](p,!f,!!n,!1)}if(!g(this,$e,"f")){if(y){if(g(this,Pe,"f"))ot(!0);u=!0,this.showHelp((B)=>{g(this,wt,"f").log(B),this.exit(0)})}else if(E){if(g(this,Pe,"f"))ot(!0);u=!0,g(this,Y,"f").showVersion("log"),this.exit(0)}}if(!u&&g(this,K,"f").skipValidation.length>0)u=Object.keys(p).some((B)=>g(this,K,"f").skipValidation.indexOf(B)>=0&&p[B]===!0);if(!u){if(d.error)throw new le(d.error.message);if(!A){let B=this[dr](h,{},d.error);if(!n)m=mt(p,this,g(this,Re,"f").getMiddleware(),!0);if(m=this[Pi](B,m!==null&&m!==void 0?m:p),re(m)&&!n)m=m.then(()=>mt(p,this,g(this,Re,"f").getMiddleware(),!1))}}}catch(F){if(F instanceof le)g(this,Y,"f").fail(F.message,F);else throw F}return this[St](m!==null&&m!==void 0?m:p,f,!!n,!0)}[dr](e,t,n,r){let s={...this.getDemandedOptions()};return(o)=>{if(n)throw new le(n.message);g(this,ce,"f").nonOptionCount(o),g(this,ce,"f").requiredArguments(o,s);let i=!1;if(g(this,xt,"f"))i=g(this,ce,"f").unknownCommands(o);if(g(this,Et,"f")&&!i)g(this,ce,"f").unknownArguments(o,e,t,!!r);else if(g(this,_t,"f"))g(this,ce,"f").unknownArguments(o,e,{},!1,!1);g(this,ce,"f").limitedChoices(o),g(this,ce,"f").implications(o),g(this,ce,"f").conflicting(o)}}[Ki](){j(this,$e,!0,"f")}[At](e){if(typeof e==="string")g(this,K,"f").key[e]=!0;else for(let t of e)g(this,K,"f").key[t]=!0}}function pi(e){return!!e&&typeof e.getInternalMethods==="function"}var Bl=Ji(Zs),Hi=Bl;function Nl(e){return[...e.matchAll(/<https?:\/\/[^\s<>|]+(?:\|[^<>\r\n]*)?>|https?:\/\/[^\t\n\v\f\r <]+/gi)].map(([n])=>n).filter((n)=>!n.startsWith("<")&&(/[^\x00-\x7f]/.test(n)||n.includes(">")))}function zn(e,t=!1,n=console.error){let r=Nl(e);if(!r.length)return;let s=`Ambiguous URL boundary: ${r.map((o)=>JSON.stringify(o)).join(", ")}. Put the URL on its own line, or wrap it as <url> / <url|label>. Use --allow-url-adjacent to warn only.`;if(!t)throw Error(s);n(`Warning: ${s}`)}import{existsSync as Hn,readFileSync as gr,writeFileSync as hr,mkdirSync as Xi}from"node:fs";import{homedir as vl}from"node:os";import{join as $t,dirname as mr}from"node:path";function Dr(){return process.env.HOME||vl()}function Gi(){return $t(Dr(),".config","slack-cli","profiles.json")}function qn(){return $t(process.cwd(),".slack-cli","workspace")}function Yn(){return $t(Dr(),".slack-cli","workspace")}function un(){let e=Gi();if(!Hn(e))return{profiles:{}};return JSON.parse(gr(e,"utf8"))}function jl(e){let t=Gi();Xi(mr(t),{recursive:!0}),hr(t,JSON.stringify(e,null,2)+`
|
|
82
|
-
`)}function Ht(e){if(!
|
|
78
|
+
`;d.forEach((m)=>{p+=m}),t.fail(p)}};let c={};o.conflicts=function(l,d){if(v("<string|object> [array|string]",[l,d],arguments.length),typeof l==="object")Object.keys(l).forEach((p)=>{o.conflicts(p,l[p])});else{if(e.global(l),!c[l])c[l]=[];if(Array.isArray(d))d.forEach((p)=>o.conflicts(l,p));else c[l].push(d)}},o.getConflicting=()=>c,o.conflicting=function(l){if(Object.keys(l).forEach((d)=>{if(c[d])c[d].forEach((p)=>{if(p&&l[d]!==void 0&&l[p]!==void 0)t.fail(r("Arguments %s and %s are mutually exclusive",d,p))})}),e.getInternalMethods().getParserConfiguration()["strip-dashed"])Object.keys(c).forEach((d)=>{c[d].forEach((p)=>{if(p&&l[n.Parser.camelCase(d)]!==void 0&&l[n.Parser.camelCase(p)]!==void 0)t.fail(r("Arguments %s and %s are mutually exclusive",d,p))})})},o.recommendCommands=function(l,d){d=d.sort((y,E)=>E.length-y.length);let m=null,h=1/0;for(let y=0,E;(E=d[y])!==void 0;y++){let F=Ci(l,E);if(F<=3&&F<h)h=F,m=E}if(m)t.fail(r("Did you mean %s?",m))},o.reset=function(l){return i=rt(i,(d)=>!l[d]),c=rt(c,(d)=>!l[d]),o};let u=[];return o.freeze=function(){u.push({implied:i,conflicting:c})},o.unfreeze=function(){let l=u.pop();Ce(l,void 0,n),{implied:i,conflicting:c}=l},o}var nr=[],rn;function on(e,t,n,r){rn=r;let s={};if(Object.prototype.hasOwnProperty.call(e,"extends")){if(typeof e.extends!=="string")return s;let o=/\.json|\..*rc$/.test(e.extends),i=null;if(!o)try{i=import.meta.resolve(e.extends)}catch(a){return e}else i=Rl(t,e.extends);Pl(i),nr.push(i),s=o?JSON.parse(rn.readFileSync(i,"utf8")):r.require(e.extends),delete e.extends,s=on(s,rn.path.dirname(i),n,rn)}return nr=[],n?_i(s,e):Object.assign({},s,e)}function Pl(e){if(nr.indexOf(e)>-1)throw new le(`Circular extended configurations: '${e}'.`)}function Rl(e,t){return rn.path.resolve(e,t)}function _i(e,t){let n={};function r(s){return s&&typeof s==="object"&&!Array.isArray(s)}Object.assign(n,e);for(let s of Object.keys(t))if(r(t[s])&&r(n[s]))n[s]=_i(e[s],t[s]);else n[s]=t[s];return n}var j=function(e,t,n,r,s){if(r==="m")throw TypeError("Private method is not writable");if(r==="a"&&!s)throw TypeError("Private accessor was defined without a setter");if(typeof t==="function"?e!==t||!s:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?s.call(e,n):s?s.value=n:t.set(e,n),n},g=function(e,t,n,r){if(n==="a"&&!r)throw TypeError("Private accessor was defined without a getter");if(typeof t==="function"?e!==t||!r:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?r:n==="a"?r.call(e):r?r.value:t.get(e)},fe,yt,an,xe,Ae,Nn,it,bt,vn,Pe,jn,Re,Xe,$e,Me,Ln,wt,me,K,Wn,Un,Oe,Ft,Jt,Ct,at,Kn,H,Et,xt,_t,Y,Jn,Ge,ce;function zi(e){return(t=[],n=e.process.cwd(),r)=>{let s=new Hi(t,n,r,e);return Object.defineProperty(s,"argv",{get:()=>s.parse(),enumerable:!0}),s.help(),s.version(),s}}var ki=Symbol("copyDoubleDash"),Si=Symbol("copyDoubleDash"),sr=Symbol("deleteFromParserHintObject"),Ai=Symbol("emitWarning"),$i=Symbol("freeze"),Oi=Symbol("getDollarZero"),kt=Symbol("getParserConfiguration"),Ii=Symbol("getUsageConfiguration"),rr=Symbol("guessLocale"),Ti=Symbol("guessVersion"),Pi=Symbol("parsePositionalNumbers"),or=Symbol("pkgUp"),ct=Symbol("populateParserHintArray"),zt=Symbol("populateParserHintSingleValueDictionary"),ir=Symbol("populateParserHintArrayDictionary"),ar=Symbol("populateParserHintDictionary"),cr=Symbol("sanitizeKey"),ur=Symbol("setKey"),lr=Symbol("unfreeze"),Ri=Symbol("validateAsync"),Mi=Symbol("getCommandInstance"),Bi=Symbol("getContext"),Ni=Symbol("getHasOutput"),vi=Symbol("getLoggerInstance"),ji=Symbol("getParseContext"),Li=Symbol("getUsageInstance"),Wi=Symbol("getValidationInstance"),zn=Symbol("hasParseCallback"),Ui=Symbol("isGlobalContext"),St=Symbol("postProcess"),Ki=Symbol("rebase"),fr=Symbol("reset"),cn=Symbol("runYargsParserAndExecuteCommands"),dr=Symbol("runValidation"),Ji=Symbol("setHasOutput"),At=Symbol("kTrackManuallySetKeys"),Ml="en_US";class Hi{constructor(e=[],t,n,r){this.customScriptName=!1,this.parsed=!1,fe.set(this,void 0),yt.set(this,void 0),an.set(this,{commands:[],fullCommands:[]}),xe.set(this,null),Ae.set(this,null),Nn.set(this,"show-hidden"),it.set(this,null),bt.set(this,!0),vn.set(this,{}),Pe.set(this,!0),jn.set(this,[]),Re.set(this,void 0),Xe.set(this,{}),$e.set(this,!1),Me.set(this,null),Ln.set(this,!0),wt.set(this,void 0),me.set(this,""),K.set(this,void 0),Wn.set(this,void 0),Un.set(this,{}),Oe.set(this,null),Ft.set(this,null),Jt.set(this,{}),Ct.set(this,{}),at.set(this,void 0),Kn.set(this,!1),H.set(this,void 0),Et.set(this,!1),xt.set(this,!1),_t.set(this,!1),Y.set(this,void 0),Jn.set(this,{}),Ge.set(this,null),ce.set(this,void 0),j(this,H,r,"f"),j(this,at,e,"f"),j(this,yt,t,"f"),j(this,Wn,n,"f"),j(this,Re,new er(this),"f"),this.$0=this[Oi](),this[fr](),j(this,fe,g(this,fe,"f"),"f"),j(this,Y,g(this,Y,"f"),"f"),j(this,ce,g(this,ce,"f"),"f"),j(this,K,g(this,K,"f"),"f"),g(this,K,"f").showHiddenOpt=g(this,Nn,"f"),j(this,wt,this[Si](),"f"),g(this,H,"f").y18n.setLocale(Ml)}addHelpOpt(e,t){if(v("[string|boolean] [string]",[e,t],arguments.length),g(this,Me,"f"))this[sr](g(this,Me,"f")),j(this,Me,null,"f");if(e===!1&&t===void 0)return this;return j(this,Me,typeof e==="string"?e:"help","f"),this.boolean(g(this,Me,"f")),this.describe(g(this,Me,"f"),t||g(this,Y,"f").deferY18nLookup("Show help")),this}help(e,t){return this.addHelpOpt(e,t)}addShowHiddenOpt(e,t){if(v("[string|boolean] [string]",[e,t],arguments.length),e===!1&&t===void 0)return this;let n=typeof e==="string"?e:g(this,Nn,"f");return this.boolean(n),this.describe(n,t||g(this,Y,"f").deferY18nLookup("Show hidden options")),g(this,K,"f").showHiddenOpt=n,this}showHidden(e,t){return this.addShowHiddenOpt(e,t)}alias(e,t){return v("<object|string|array> [string|array]",[e,t],arguments.length),this[ir](this.alias.bind(this),"alias",e,t),this}array(e){return v("<array|string>",[e],arguments.length),this[ct]("array",e),this[At](e),this}boolean(e){return v("<array|string>",[e],arguments.length),this[ct]("boolean",e),this[At](e),this}check(e,t){return v("<function> [boolean]",[e,t],arguments.length),this.middleware((n,r)=>Dt(()=>e(n,r.getOptions()),(s)=>{if(!s)g(this,Y,"f").fail(g(this,H,"f").y18n.__("Argument check failed: %s",e.toString()));else if(typeof s==="string"||s instanceof Error)g(this,Y,"f").fail(s.toString(),s);return n},(s)=>(g(this,Y,"f").fail(s.message?s.message:s.toString(),s),n)),!1,t),this}choices(e,t){return v("<object|string|array> [string|array]",[e,t],arguments.length),this[ir](this.choices.bind(this),"choices",e,t),this}coerce(e,t){if(v("<object|string|array> [function]",[e,t],arguments.length),Array.isArray(e)){if(!t)throw new le("coerce callback must be provided");for(let r of e)this.coerce(r,t);return this}else if(typeof e==="object"){for(let r of Object.keys(e))this.coerce(r,e[r]);return this}if(!t)throw new le("coerce callback must be provided");let n=e;return g(this,K,"f").key[n]=!0,g(this,Re,"f").addCoerceMiddleware((r,s)=>{var o;let i=(o=s.getAliases()[n])!==null&&o!==void 0?o:[],a=[n,...i].filter((c)=>Object.prototype.hasOwnProperty.call(r,c));if(a.length===0)return r;return Dt(()=>t(r[a[0]]),(c)=>(a.forEach((u)=>{r[u]=c}),r),(c)=>{throw new le(c.message)})},n),this}conflicts(e,t){return v("<string|object> [string|array]",[e,t],arguments.length),g(this,ce,"f").conflicts(e,t),this}config(e="config",t,n){if(v("[object|string] [string|function] [function]",[e,t,n],arguments.length),typeof e==="object"&&!Array.isArray(e))return e=on(e,g(this,yt,"f"),this[kt]()["deep-merge-config"]||!1,g(this,H,"f")),g(this,K,"f").configObjects=(g(this,K,"f").configObjects||[]).concat(e),this;if(typeof t==="function")n=t,t=void 0;return this.describe(e,t||g(this,Y,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(e)?e:[e]).forEach((r)=>{g(this,K,"f").config[r]=n||!0}),this}completion(e,t,n){if(v("[string] [string|boolean|function] [function]",[e,t,n],arguments.length),typeof t==="function")n=t,t=void 0;if(j(this,Ae,e||g(this,Ae,"f")||"completion","f"),!t&&t!==!1)t="generate completion script";if(this.command(g(this,Ae,"f"),t),n)g(this,xe,"f").registerFunction(n);return this}command(e,t,n,r,s,o){return v("<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]",[e,t,n,r,s,o],arguments.length),g(this,fe,"f").addHandler(e,t,n,r,s,o),this}commands(e,t,n,r,s,o){return this.command(e,t,n,r,s,o)}commandDir(e,t){v("<string> [object]",[e,t],arguments.length);let n=g(this,Wn,"f")||g(this,H,"f").require;return g(this,fe,"f").addDirectory(e,n,g(this,H,"f").getCallerFile(),t),this}count(e){return v("<array|string>",[e],arguments.length),this[ct]("count",e),this[At](e),this}default(e,t,n){if(v("<object|string|array> [*] [string]",[e,t,n],arguments.length),n)Qs(e,g(this,H,"f")),g(this,K,"f").defaultDescription[e]=n;if(typeof t==="function"){if(Qs(e,g(this,H,"f")),!g(this,K,"f").defaultDescription[e])g(this,K,"f").defaultDescription[e]=g(this,Y,"f").functionDescription(t);t=t.call()}return this[zt](this.default.bind(this),"default",e,t),this}defaults(e,t,n){return this.default(e,t,n)}demandCommand(e=1,t,n,r){if(v("[number] [number|string] [string|null|undefined] [string|null|undefined]",[e,t,n,r],arguments.length),typeof t!=="number")n=t,t=1/0;return this.global("_",!1),g(this,K,"f").demandedCommands._={min:e,max:t,minMsg:n,maxMsg:r},this}demand(e,t,n){if(Array.isArray(t))t.forEach((r)=>{Ce(n,!0,g(this,H,"f")),this.demandOption(r,n)}),t=1/0;else if(typeof t!=="number")n=t,t=1/0;if(typeof e==="number")Ce(n,!0,g(this,H,"f")),this.demandCommand(e,t,n,n);else if(Array.isArray(e))e.forEach((r)=>{Ce(n,!0,g(this,H,"f")),this.demandOption(r,n)});else if(typeof n==="string")this.demandOption(e,n);else if(n===!0||typeof n>"u")this.demandOption(e);return this}demandOption(e,t){return v("<object|string|array> [string]",[e,t],arguments.length),this[zt](this.demandOption.bind(this),"demandedOptions",e,t),this}deprecateOption(e,t){return v("<string> [string|boolean]",[e,t],arguments.length),g(this,K,"f").deprecatedOptions[e]=t,this}describe(e,t){return v("<object|string|array> [string]",[e,t],arguments.length),this[ur](e,!0),g(this,Y,"f").describe(e,t),this}detectLocale(e){return v("<boolean>",[e],arguments.length),j(this,bt,e,"f"),this}env(e){if(v("[string|boolean]",[e],arguments.length),e===!1)delete g(this,K,"f").envPrefix;else g(this,K,"f").envPrefix=e||"";return this}epilogue(e){return v("<string>",[e],arguments.length),g(this,Y,"f").epilog(e),this}epilog(e){return this.epilogue(e)}example(e,t){if(v("<string|array> [string]",[e,t],arguments.length),Array.isArray(e))e.forEach((n)=>this.example(...n));else g(this,Y,"f").example(e,t);return this}exit(e,t){if(j(this,$e,!0,"f"),j(this,it,t,"f"),g(this,Pe,"f"))g(this,H,"f").process.exit(e)}exitProcess(e=!0){return v("[boolean]",[e],arguments.length),j(this,Pe,e,"f"),this}fail(e){if(v("<function|boolean>",[e],arguments.length),typeof e==="boolean"&&e!==!1)throw new le("Invalid first argument. Expected function or boolean 'false'");return g(this,Y,"f").failFn(e),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(e,t){if(v("<array> [function]",[e,t],arguments.length),!t)return new Promise((n,r)=>{g(this,xe,"f").getCompletion(e,(s,o)=>{if(s)r(s);else n(o)})});else return g(this,xe,"f").getCompletion(e,t)}getDemandedOptions(){return v([],0),g(this,K,"f").demandedOptions}getDemandedCommands(){return v([],0),g(this,K,"f").demandedCommands}getDeprecatedOptions(){return v([],0),g(this,K,"f").deprecatedOptions}getDetectLocale(){return g(this,bt,"f")}getExitProcess(){return g(this,Pe,"f")}getGroups(){return Object.assign({},g(this,Xe,"f"),g(this,Ct,"f"))}getHelp(){if(j(this,$e,!0,"f"),!g(this,Y,"f").hasCachedHelpMessage()){if(!this.parsed){let t=this[cn](g(this,at,"f"),void 0,void 0,0,!0);if(re(t))return t.then(()=>g(this,Y,"f").help())}let e=g(this,fe,"f").runDefaultBuilderOn(this);if(re(e))return e.then(()=>g(this,Y,"f").help())}return Promise.resolve(g(this,Y,"f").help())}getOptions(){return g(this,K,"f")}getStrict(){return g(this,Et,"f")}getStrictCommands(){return g(this,xt,"f")}getStrictOptions(){return g(this,_t,"f")}global(e,t){if(v("<string|array> [boolean]",[e,t],arguments.length),e=[].concat(e),t!==!1)g(this,K,"f").local=g(this,K,"f").local.filter((n)=>e.indexOf(n)===-1);else e.forEach((n)=>{if(!g(this,K,"f").local.includes(n))g(this,K,"f").local.push(n)});return this}group(e,t){v("<string|array> <string>",[e,t],arguments.length);let n=g(this,Ct,"f")[t]||g(this,Xe,"f")[t];if(g(this,Ct,"f")[t])delete g(this,Ct,"f")[t];let r={};return g(this,Xe,"f")[t]=(n||[]).concat(e).filter((s)=>{if(r[s])return!1;return r[s]=!0}),this}hide(e){return v("<string>",[e],arguments.length),g(this,K,"f").hiddenOptions.push(e),this}implies(e,t){return v("<string|object> [number|string|array]",[e,t],arguments.length),g(this,ce,"f").implies(e,t),this}locale(e){if(v("[string]",[e],arguments.length),e===void 0)return this[rr](),g(this,H,"f").y18n.getLocale();return j(this,bt,!1,"f"),g(this,H,"f").y18n.setLocale(e),this}middleware(e,t,n){return g(this,Re,"f").addMiddleware(e,!!t,n)}nargs(e,t){return v("<string|object|array> [number]",[e,t],arguments.length),this[zt](this.nargs.bind(this),"narg",e,t),this}normalize(e){return v("<array|string>",[e],arguments.length),this[ct]("normalize",e),this}number(e){return v("<array|string>",[e],arguments.length),this[ct]("number",e),this[At](e),this}option(e,t){if(v("<string|object> [object]",[e,t],arguments.length),typeof e==="object")Object.keys(e).forEach((n)=>{this.options(n,e[n])});else{if(typeof t!=="object")t={};if(this[At](e),g(this,Ge,"f")&&(e==="version"||(t===null||t===void 0?void 0:t.alias)==="version"))this[Ai](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join(`
|
|
79
|
+
`),void 0,"versionWarning");if(g(this,K,"f").key[e]=!0,t.alias)this.alias(e,t.alias);let n=t.deprecate||t.deprecated;if(n)this.deprecateOption(e,n);let r=t.demand||t.required||t.require;if(r)this.demand(e,r);if(t.demandOption)this.demandOption(e,typeof t.demandOption==="string"?t.demandOption:void 0);if(t.conflicts)this.conflicts(e,t.conflicts);if("default"in t)this.default(e,t.default);if(t.implies!==void 0)this.implies(e,t.implies);if(t.nargs!==void 0)this.nargs(e,t.nargs);if(t.config)this.config(e,t.configParser);if(t.normalize)this.normalize(e);if(t.choices)this.choices(e,t.choices);if(t.coerce)this.coerce(e,t.coerce);if(t.group)this.group(e,t.group);if(t.boolean||t.type==="boolean"){if(this.boolean(e),t.alias)this.boolean(t.alias)}if(t.array||t.type==="array"){if(this.array(e),t.alias)this.array(t.alias)}if(t.number||t.type==="number"){if(this.number(e),t.alias)this.number(t.alias)}if(t.string||t.type==="string"){if(this.string(e),t.alias)this.string(t.alias)}if(t.count||t.type==="count")this.count(e);if(typeof t.global==="boolean")this.global(e,t.global);if(t.defaultDescription)g(this,K,"f").defaultDescription[e]=t.defaultDescription;if(t.skipValidation)this.skipValidation(e);let s=t.describe||t.description||t.desc,o=g(this,Y,"f").getDescriptions();if(!Object.prototype.hasOwnProperty.call(o,e)||typeof s==="string")this.describe(e,s);if(t.hidden)this.hide(e);if(t.requiresArg)this.requiresArg(e)}return this}options(e,t){return this.option(e,t)}parse(e,t,n){if(v("[string|array] [function|boolean|object] [function]",[e,t,n],arguments.length),this[$i](),typeof e>"u")e=g(this,at,"f");if(typeof t==="object")j(this,Ft,t,"f"),t=n;if(typeof t==="function")j(this,Oe,t,"f"),t=!1;if(!t)j(this,at,e,"f");if(g(this,Oe,"f"))j(this,Pe,!1,"f");let r=this[cn](e,!!t),s=this.parsed;if(g(this,xe,"f").setParsed(this.parsed),re(r))return r.then((o)=>{if(g(this,Oe,"f"))g(this,Oe,"f").call(this,g(this,it,"f"),o,g(this,me,"f"));return o}).catch((o)=>{if(g(this,Oe,"f"))g(this,Oe,"f")(o,this.parsed.argv,g(this,me,"f"));throw o}).finally(()=>{this[lr](),this.parsed=s});else{if(g(this,Oe,"f"))g(this,Oe,"f").call(this,g(this,it,"f"),r,g(this,me,"f"));this[lr](),this.parsed=s}return r}parseAsync(e,t,n){let r=this.parse(e,t,n);return!re(r)?Promise.resolve(r):r}parseSync(e,t,n){let r=this.parse(e,t,n);if(re(r))throw new le(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return r}parserConfiguration(e){return v("<object>",[e],arguments.length),j(this,Un,e,"f"),this}pkgConf(e,t){v("<string> [string]",[e,t],arguments.length);let n=null,r=this[or](t||g(this,yt,"f"));if(r[e]&&typeof r[e]==="object")n=on(r[e],t||g(this,yt,"f"),this[kt]()["deep-merge-config"]||!1,g(this,H,"f")),g(this,K,"f").configObjects=(g(this,K,"f").configObjects||[]).concat(n);return this}positional(e,t){v("<string> <object>",[e,t],arguments.length);let n=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];t=rt(t,(o,i)=>{if(o==="type"&&!["string","number","boolean"].includes(i))return!1;return n.includes(o)});let r=g(this,an,"f").fullCommands[g(this,an,"f").fullCommands.length-1],s=r?g(this,fe,"f").cmdToParseOptions(r):{array:[],alias:{},default:{},demand:{}};return Ut(s).forEach((o)=>{let i=s[o];if(Array.isArray(i)){if(i.indexOf(e)!==-1)t[o]=!0}else if(i[e]&&!(o in t))t[o]=i[e]}),this.group(e,g(this,Y,"f").getPositionalGroupName()),this.option(e,t)}recommendCommands(e=!0){return v("[boolean]",[e],arguments.length),j(this,Kn,e,"f"),this}required(e,t,n){return this.demand(e,t,n)}require(e,t,n){return this.demand(e,t,n)}requiresArg(e){if(v("<array|string|object> [number]",[e],arguments.length),typeof e==="string"&&g(this,K,"f").narg[e])return this;else this[zt](this.requiresArg.bind(this),"narg",e,NaN);return this}showCompletionScript(e,t){return v("[string] [string]",[e,t],arguments.length),e=e||this.$0,g(this,wt,"f").log(g(this,xe,"f").generateCompletionScript(e,t||g(this,Ae,"f")||"completion")),this}showHelp(e){if(v("[string|function]",[e],arguments.length),j(this,$e,!0,"f"),!g(this,Y,"f").hasCachedHelpMessage()){if(!this.parsed){let n=this[cn](g(this,at,"f"),void 0,void 0,0,!0);if(re(n))return n.then(()=>{g(this,Y,"f").showHelp(e)}),this}let t=g(this,fe,"f").runDefaultBuilderOn(this);if(re(t))return t.then(()=>{g(this,Y,"f").showHelp(e)}),this}return g(this,Y,"f").showHelp(e),this}scriptName(e){return this.customScriptName=!0,this.$0=e,this}showHelpOnFail(e,t){return v("[boolean|string] [string]",[e,t],arguments.length),g(this,Y,"f").showHelpOnFail(e,t),this}showVersion(e){return v("[string|function]",[e],arguments.length),g(this,Y,"f").showVersion(e),this}skipValidation(e){return v("<array|string>",[e],arguments.length),this[ct]("skipValidation",e),this}strict(e){return v("[boolean]",[e],arguments.length),j(this,Et,e!==!1,"f"),this}strictCommands(e){return v("[boolean]",[e],arguments.length),j(this,xt,e!==!1,"f"),this}strictOptions(e){return v("[boolean]",[e],arguments.length),j(this,_t,e!==!1,"f"),this}string(e){return v("<array|string>",[e],arguments.length),this[ct]("string",e),this[At](e),this}terminalWidth(){return v([],0),g(this,H,"f").process.stdColumns}updateLocale(e){return this.updateStrings(e)}updateStrings(e){return v("<object>",[e],arguments.length),j(this,bt,!1,"f"),g(this,H,"f").y18n.updateLocale(e),this}usage(e,t,n,r){if(v("<string|null|undefined> [string|boolean] [function|object] [function]",[e,t,n,r],arguments.length),t!==void 0)if(Ce(e,null,g(this,H,"f")),(e||"").match(/^\$0( |$)/))return this.command(e,t,n,r);else throw new le(".usage() description must start with $0 if being used as alias for .command()");else return g(this,Y,"f").usage(e),this}usageConfiguration(e){return v("<object>",[e],arguments.length),j(this,Jn,e,"f"),this}version(e,t,n){if(v("[boolean|string] [string] [string]",[e,t,n],arguments.length),g(this,Ge,"f"))this[sr](g(this,Ge,"f")),g(this,Y,"f").version(void 0),j(this,Ge,null,"f");if(arguments.length===0)n=this[Ti](),e="version";else if(arguments.length===1){if(e===!1)return this;n=e,e="version"}else if(arguments.length===2)n=t,t=void 0;return j(this,Ge,typeof e==="string"?e:"version","f"),t=t||g(this,Y,"f").deferY18nLookup("Show version number"),g(this,Y,"f").version(n||void 0),this.boolean(g(this,Ge,"f")),this.describe(g(this,Ge,"f"),t),this}wrap(e){return v("<number|null|undefined>",[e],arguments.length),g(this,Y,"f").wrap(e),this}[(fe=new WeakMap,yt=new WeakMap,an=new WeakMap,xe=new WeakMap,Ae=new WeakMap,Nn=new WeakMap,it=new WeakMap,bt=new WeakMap,vn=new WeakMap,Pe=new WeakMap,jn=new WeakMap,Re=new WeakMap,Xe=new WeakMap,$e=new WeakMap,Me=new WeakMap,Ln=new WeakMap,wt=new WeakMap,me=new WeakMap,K=new WeakMap,Wn=new WeakMap,Un=new WeakMap,Oe=new WeakMap,Ft=new WeakMap,Jt=new WeakMap,Ct=new WeakMap,at=new WeakMap,Kn=new WeakMap,H=new WeakMap,Et=new WeakMap,xt=new WeakMap,_t=new WeakMap,Y=new WeakMap,Jn=new WeakMap,Ge=new WeakMap,ce=new WeakMap,ki)](e){if(!e._||!e["--"])return e;e._.push.apply(e._,e["--"]);try{delete e["--"]}catch(t){}return e}[Si](){return{log:(...e)=>{if(!this[zn]())console.log(...e);if(j(this,$e,!0,"f"),g(this,me,"f").length)j(this,me,g(this,me,"f")+`
|
|
80
|
+
`,"f");j(this,me,g(this,me,"f")+e.join(" "),"f")},error:(...e)=>{if(!this[zn]())console.error(...e);if(j(this,$e,!0,"f"),g(this,me,"f").length)j(this,me,g(this,me,"f")+`
|
|
81
|
+
`,"f");j(this,me,g(this,me,"f")+e.join(" "),"f")}}}[sr](e){Ut(g(this,K,"f")).forEach((t)=>{if(((r)=>r==="configObjects")(t))return;let n=g(this,K,"f")[t];if(Array.isArray(n)){if(n.includes(e))n.splice(n.indexOf(e),1)}else if(typeof n==="object")delete n[e]}),delete g(this,Y,"f").getDescriptions()[e]}[Ai](e,t,n){if(!g(this,vn,"f")[n])g(this,H,"f").process.emitWarning(e,t),g(this,vn,"f")[n]=!0}[$i](){g(this,jn,"f").push({options:g(this,K,"f"),configObjects:g(this,K,"f").configObjects.slice(0),exitProcess:g(this,Pe,"f"),groups:g(this,Xe,"f"),strict:g(this,Et,"f"),strictCommands:g(this,xt,"f"),strictOptions:g(this,_t,"f"),completionCommand:g(this,Ae,"f"),output:g(this,me,"f"),exitError:g(this,it,"f"),hasOutput:g(this,$e,"f"),parsed:this.parsed,parseFn:g(this,Oe,"f"),parseContext:g(this,Ft,"f")}),g(this,Y,"f").freeze(),g(this,ce,"f").freeze(),g(this,fe,"f").freeze(),g(this,Re,"f").freeze()}[Oi](){let e="",t;if(/\b(node|iojs|electron)(\.exe)?$/.test(g(this,H,"f").process.argv()[0]))t=g(this,H,"f").process.argv().slice(1,2);else t=g(this,H,"f").process.argv().slice(0,1);if(e=t.map((n)=>{let r=this[Ki](g(this,yt,"f"),n);return n.match(/^(\/|([a-zA-Z]:)?\\)/)&&r.length<n.length?r:n}).join(" ").trim(),g(this,H,"f").getEnv("_")&&g(this,H,"f").getProcessArgvBin()===g(this,H,"f").getEnv("_"))e=g(this,H,"f").getEnv("_").replace(`${g(this,H,"f").path.dirname(g(this,H,"f").process.execPath())}/`,"");return e}[kt](){return g(this,Un,"f")}[Ii](){return g(this,Jn,"f")}[rr](){if(!g(this,bt,"f"))return;let e=g(this,H,"f").getEnv("LC_ALL")||g(this,H,"f").getEnv("LC_MESSAGES")||g(this,H,"f").getEnv("LANG")||g(this,H,"f").getEnv("LANGUAGE")||"en_US";this.locale(e.replace(/[.:].*/,""))}[Ti](){return this[or]().version||"unknown"}[Pi](e){let t=e["--"]?e["--"]:e._;for(let n=0,r;(r=t[n])!==void 0;n++)if(g(this,H,"f").Parser.looksLikeNumber(r)&&Number.isSafeInteger(Math.floor(parseFloat(`${r}`))))t[n]=Number(r);return e}[or](e){let t=e||"*";if(g(this,Jt,"f")[t])return g(this,Jt,"f")[t];let n={};try{let r=e||g(this,H,"f").mainFilename;if(g(this,H,"f").path.extname(r))r=g(this,H,"f").path.dirname(r);let s=g(this,H,"f").findUp(r,(o,i)=>{if(i.includes("package.json"))return"package.json";else return});Ce(s,void 0,g(this,H,"f")),n=JSON.parse(g(this,H,"f").readFileSync(s,"utf8"))}catch(r){}return g(this,Jt,"f")[t]=n||{},g(this,Jt,"f")[t]}[ct](e,t){t=[].concat(t),t.forEach((n)=>{n=this[cr](n),g(this,K,"f")[e].push(n)})}[zt](e,t,n,r){this[ar](e,t,n,r,(s,o,i)=>{g(this,K,"f")[s][o]=i})}[ir](e,t,n,r){this[ar](e,t,n,r,(s,o,i)=>{g(this,K,"f")[s][o]=(g(this,K,"f")[s][o]||[]).concat(i)})}[ar](e,t,n,r,s){if(Array.isArray(n))n.forEach((o)=>{e(o,r)});else if(((o)=>typeof o==="object")(n))for(let o of Ut(n))e(o,n[o]);else s(t,this[cr](n),r)}[cr](e){if(e==="__proto__")return"___proto___";return e}[ur](e,t){return this[zt](this[ur].bind(this),"key",e,t),this}[lr](){var e,t,n,r,s,o,i,a,c,u,f,l;let d=g(this,jn,"f").pop();Ce(d,void 0,g(this,H,"f"));let p;e=this,t=this,n=this,r=this,s=this,o=this,i=this,a=this,c=this,u=this,f=this,l=this,{options:{set value(m){j(e,K,m,"f")}}.value,configObjects:p,exitProcess:{set value(m){j(t,Pe,m,"f")}}.value,groups:{set value(m){j(n,Xe,m,"f")}}.value,output:{set value(m){j(r,me,m,"f")}}.value,exitError:{set value(m){j(s,it,m,"f")}}.value,hasOutput:{set value(m){j(o,$e,m,"f")}}.value,parsed:this.parsed,strict:{set value(m){j(i,Et,m,"f")}}.value,strictCommands:{set value(m){j(a,xt,m,"f")}}.value,strictOptions:{set value(m){j(c,_t,m,"f")}}.value,completionCommand:{set value(m){j(u,Ae,m,"f")}}.value,parseFn:{set value(m){j(f,Oe,m,"f")}}.value,parseContext:{set value(m){j(l,Ft,m,"f")}}.value}=d,g(this,K,"f").configObjects=p,g(this,Y,"f").unfreeze(),g(this,ce,"f").unfreeze(),g(this,fe,"f").unfreeze(),g(this,Re,"f").unfreeze()}[Ri](e,t){return Dt(t,(n)=>(e(n),n))}getInternalMethods(){return{getCommandInstance:this[Mi].bind(this),getContext:this[Bi].bind(this),getHasOutput:this[Ni].bind(this),getLoggerInstance:this[vi].bind(this),getParseContext:this[ji].bind(this),getParserConfiguration:this[kt].bind(this),getUsageConfiguration:this[Ii].bind(this),getUsageInstance:this[Li].bind(this),getValidationInstance:this[Wi].bind(this),hasParseCallback:this[zn].bind(this),isGlobalContext:this[Ui].bind(this),postProcess:this[St].bind(this),reset:this[fr].bind(this),runValidation:this[dr].bind(this),runYargsParserAndExecuteCommands:this[cn].bind(this),setHasOutput:this[Ji].bind(this)}}[Mi](){return g(this,fe,"f")}[Bi](){return g(this,an,"f")}[Ni](){return g(this,$e,"f")}[vi](){return g(this,wt,"f")}[ji](){return g(this,Ft,"f")||{}}[Li](){return g(this,Y,"f")}[Wi](){return g(this,ce,"f")}[zn](){return!!g(this,Oe,"f")}[Ui](){return g(this,Ln,"f")}[St](e,t,n,r){if(n)return e;if(re(e))return e;if(!t)e=this[ki](e);if(this[kt]()["parse-positional-numbers"]||this[kt]()["parse-positional-numbers"]===void 0)e=this[Pi](e);if(r)e=mt(e,this,g(this,Re,"f").getMiddleware(),!1);return e}[fr](e={}){j(this,K,g(this,K,"f")||{},"f");let t={};t.local=g(this,K,"f").local||[],t.configObjects=g(this,K,"f").configObjects||[];let n={};t.local.forEach((o)=>{n[o]=!0,(e[o]||[]).forEach((i)=>{n[i]=!0})}),Object.assign(g(this,Ct,"f"),Object.keys(g(this,Xe,"f")).reduce((o,i)=>{let a=g(this,Xe,"f")[i].filter((c)=>!(c in n));if(a.length>0)o[i]=a;return o},{})),j(this,Xe,{},"f");let r=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],s=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];if(r.forEach((o)=>{t[o]=(g(this,K,"f")[o]||[]).filter((i)=>!n[i])}),s.forEach((o)=>{t[o]=rt(g(this,K,"f")[o],(i)=>!n[i])}),t.envPrefix=g(this,K,"f").envPrefix,j(this,K,t,"f"),j(this,Y,g(this,Y,"f")?g(this,Y,"f").reset(n):Di(this,g(this,H,"f")),"f"),j(this,ce,g(this,ce,"f")?g(this,ce,"f").reset(n):xi(this,g(this,Y,"f"),g(this,H,"f")),"f"),j(this,fe,g(this,fe,"f")?g(this,fe,"f").reset():pi(g(this,Y,"f"),g(this,ce,"f"),g(this,Re,"f"),g(this,H,"f")),"f"),!g(this,xe,"f"))j(this,xe,Fi(this,g(this,Y,"f"),g(this,fe,"f"),g(this,H,"f")),"f");return g(this,Re,"f").reset(),j(this,Ae,null,"f"),j(this,me,"","f"),j(this,it,null,"f"),j(this,$e,!1,"f"),this.parsed=!1,this}[Ki](e,t){return g(this,H,"f").path.relative(e,t)}[cn](e,t,n,r=0,s=!1){var o,i,a,c;let u=!!n||s;e=e||g(this,at,"f"),g(this,K,"f").__=g(this,H,"f").y18n.__,g(this,K,"f").configuration=this[kt]();let f=!!g(this,K,"f").configuration["populate--"],l=Object.assign({},g(this,K,"f").configuration,{"populate--":!0}),d=g(this,H,"f").Parser.detailed(e,Object.assign({},g(this,K,"f"),{configuration:{"parse-positional-numbers":!1,...l}})),p=Object.assign(d.argv,g(this,Ft,"f")),m=void 0,h=d.aliases,y=!1,E=!1;if(Object.keys(p).forEach((F)=>{if(F===g(this,Me,"f")&&p[F])y=!0;else if(F===g(this,Ge,"f")&&p[F])E=!0}),p.$0=this.$0,this.parsed=d,r===0)g(this,Y,"f").clearCachedHelpMessage();try{if(this[rr](),t)return this[St](p,f,!!n,!1);if(g(this,Me,"f")){if([g(this,Me,"f")].concat(h[g(this,Me,"f")]||[]).filter((I)=>I.length>1).includes(""+p._[p._.length-1]))p._.pop(),y=!0}j(this,Ln,!1,"f");let F=g(this,fe,"f").getCommands(),A=((o=g(this,xe,"f"))===null||o===void 0?void 0:o.completionKey)?[(i=g(this,xe,"f"))===null||i===void 0?void 0:i.completionKey,...(c=this.getAliases()[(a=g(this,xe,"f"))===null||a===void 0?void 0:a.completionKey])!==null&&c!==void 0?c:[]].some((B)=>Object.prototype.hasOwnProperty.call(p,B)):!1,k=y||A||s;if(p._.length){if(F.length){let B;for(let I=r||0,R;p._[I]!==void 0;I++)if(R=String(p._[I]),F.includes(R)&&R!==g(this,Ae,"f")){let V=g(this,fe,"f").runCommand(R,this,d,I+1,s,y||E||s);return this[St](V,f,!!n,!1)}else if(!B&&R!==g(this,Ae,"f")){B=R;break}if(!g(this,fe,"f").hasDefaultCommand()&&g(this,Kn,"f")&&B&&!k)g(this,ce,"f").recommendCommands(B,F)}if(g(this,Ae,"f")&&p._.includes(g(this,Ae,"f"))&&!A){if(g(this,Pe,"f"))ot(!0);this.showCompletionScript(),this.exit(0)}}if(g(this,fe,"f").hasDefaultCommand()&&!k){let B=g(this,fe,"f").runCommand(null,this,d,0,s,y||E||s);return this[St](B,f,!!n,!1)}if(A){if(g(this,Pe,"f"))ot(!0);e=[].concat(e);let B=e.slice(e.indexOf(`--${g(this,xe,"f").completionKey}`)+1);return g(this,xe,"f").getCompletion(B,(I,R)=>{if(I)throw new le(I.message);(R||[]).forEach((V)=>{g(this,wt,"f").log(V)}),this.exit(0)}),this[St](p,!f,!!n,!1)}if(!g(this,$e,"f")){if(y){if(g(this,Pe,"f"))ot(!0);u=!0,this.showHelp((B)=>{g(this,wt,"f").log(B),this.exit(0)})}else if(E){if(g(this,Pe,"f"))ot(!0);u=!0,g(this,Y,"f").showVersion("log"),this.exit(0)}}if(!u&&g(this,K,"f").skipValidation.length>0)u=Object.keys(p).some((B)=>g(this,K,"f").skipValidation.indexOf(B)>=0&&p[B]===!0);if(!u){if(d.error)throw new le(d.error.message);if(!A){let B=this[dr](h,{},d.error);if(!n)m=mt(p,this,g(this,Re,"f").getMiddleware(),!0);if(m=this[Ri](B,m!==null&&m!==void 0?m:p),re(m)&&!n)m=m.then(()=>mt(p,this,g(this,Re,"f").getMiddleware(),!1))}}}catch(F){if(F instanceof le)g(this,Y,"f").fail(F.message,F);else throw F}return this[St](m!==null&&m!==void 0?m:p,f,!!n,!0)}[dr](e,t,n,r){let s={...this.getDemandedOptions()};return(o)=>{if(n)throw new le(n.message);g(this,ce,"f").nonOptionCount(o),g(this,ce,"f").requiredArguments(o,s);let i=!1;if(g(this,xt,"f"))i=g(this,ce,"f").unknownCommands(o);if(g(this,Et,"f")&&!i)g(this,ce,"f").unknownArguments(o,e,t,!!r);else if(g(this,_t,"f"))g(this,ce,"f").unknownArguments(o,e,{},!1,!1);g(this,ce,"f").limitedChoices(o),g(this,ce,"f").implications(o),g(this,ce,"f").conflicting(o)}}[Ji](){j(this,$e,!0,"f")}[At](e){if(typeof e==="string")g(this,K,"f").key[e]=!0;else for(let t of e)g(this,K,"f").key[t]=!0}}function gi(e){return!!e&&typeof e.getInternalMethods==="function"}var Bl=zi(Zs),qi=Bl;function Nl(e){return[...e.matchAll(/<https?:\/\/[^\s<>|]+(?:\|[^<>\r\n]*)?>|https?:\/\/[^\t\n\v\f\r <]+/gi)].map(([n])=>n).filter((n)=>!n.startsWith("<")&&(/[^\x00-\x7f]/.test(n)||n.includes(">")))}function Hn(e,t=!1,n=console.error){let r=Nl(e);if(!r.length)return;let s=`Ambiguous URL boundary: ${r.map((o)=>JSON.stringify(o)).join(", ")}. Put the URL on its own line, or wrap it as <url> / <url|label>. Use --allow-url-adjacent to warn only.`;if(!t)throw Error(s);n(`Warning: ${s}`)}import{existsSync as qn,readFileSync as gr,writeFileSync as hr,mkdirSync as Gi}from"node:fs";import{homedir as vl}from"node:os";import{join as $t,dirname as mr}from"node:path";function Dr(){return process.env.HOME||vl()}function Vi(){return $t(Dr(),".config","slack-cli","profiles.json")}function Yn(){return $t(process.cwd(),".slack-cli","workspace")}function Xn(){return $t(Dr(),".slack-cli","workspace")}function un(){let e=Vi();if(!qn(e))return{profiles:{}};return JSON.parse(gr(e,"utf8"))}function jl(e){let t=Vi();Gi(mr(t),{recursive:!0}),hr(t,JSON.stringify(e,null,2)+`
|
|
82
|
+
`)}function Ht(e){if(!qn(e))return;return gr(e,"utf8").trim()||void 0}function Yi(e,t){let n=mr(e);Gi(n,{recursive:!0});let r=$t(n,".gitignore");if(!qn(r))hr(r,`*
|
|
83
83
|
`);hr(e,t+`
|
|
84
84
|
`)}function Ll(e){let t={};for(let n of e.split(`
|
|
85
|
-
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);t[o]=i}return t}function
|
|
86
|
-
`+" Migrate to SLACK_TOKEN=... or remove from your shell config.")}}let o=pr(process.cwd(),["SLACK_TOKEN"]);if(o)return o;let i=process.env.SLACK_WORKSPACE;if(i){let u=n[i];if(!u)throw Error(`Workspace "${i}" not found. Available: ${r.join(", ")||"(none)"}`);return u.token}let a=Ht(
|
|
85
|
+
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);t[o]=i}return t}function Xi(e){if(!qn(e))return{};try{return Ll(gr(e,"utf8"))}catch{return{}}}function pr(e,t){let n=Dr(),r=e;while(!0){for(let i of[$t(r,".slack-term",".env.local"),$t(r,".env.local")]){let a=Xi(i);for(let c of t)if(a[c])return a[c]}if(r===n)break;let o=mr(r);if(o===r)break;r=o}let s=Xi($t(n,".slack-term",".env.local"));for(let o of t)if(s[o])return s[o];return}function yr(){let e=un(),t=Ht(Yn()),n=Ht(Xn()),r=t??n;return Object.entries(e.profiles).map(([s,o])=>({name:s,profile:o,current:s===r}))}function Zi(e){let t=un();if(!(e in t.profiles))throw Error(`Profile not found: ${e}`);delete t.profiles[e],jl(t)}function Qi(e,t=!1){let n=un();if(!(e in n.profiles))throw Error(`Profile not found: ${e}`);if(t)Yi(Xn(),e);else Yi(Yn(),e)}function ln(e){let n=un().profiles,r=Object.keys(n);if(e){let u=n[e];if(!u)throw Error(`Workspace "${e}" not found. Available: ${r.join(", ")||"(none)"}`);return u.token}if(process.env.SLACK_TOKEN)return process.env.SLACK_TOKEN;let s=process.env.SLACK_BOT_TOKEN??process.env.SLACK_MCP_XOXP_TOKEN;if(s&&r.length===0)return s;if(s&&r.length>0){let u=pr(process.cwd(),["SLACK_BOT_TOKEN","SLACK_MCP_XOXP_TOKEN"]);if(s!==u){if(!globalThis.__slackEnvWarnShown)globalThis.__slackEnvWarnShown=!0,console.error(`Warning: SLACK_MCP_XOXP_TOKEN / SLACK_BOT_TOKEN is set but workspace profiles exist — using profiles.
|
|
86
|
+
`+" Migrate to SLACK_TOKEN=... or remove from your shell config.")}}let o=pr(process.cwd(),["SLACK_TOKEN"]);if(o)return o;let i=process.env.SLACK_WORKSPACE;if(i){let u=n[i];if(!u)throw Error(`Workspace "${i}" not found. Available: ${r.join(", ")||"(none)"}`);return u.token}let a=Ht(Yn());if(a){let u=n[a];if(!u)throw Error(`Workspace "${a}" (from .slack-cli/workspace) not found in profiles.`);return u.token}let c=Ht(Xn());if(c){let u=n[c];if(!u)throw Error(`Workspace "${c}" (from ~/.slack-cli/workspace) not found in profiles.`);return u.token}if(r.length>0)throw Error(`Workspace not selected (${r.join(", ")} available).
|
|
87
87
|
Select locally: slack auth use <name> (writes .slack-cli/workspace)
|
|
88
88
|
Select globally: slack auth use -g <name> (writes ~/.slack-cli/workspace)`);throw Error(`No Slack token found.
|
|
89
89
|
Run one of:
|
|
90
90
|
`+` slack auth login — paste an existing xoxp-/xoxb- token
|
|
91
91
|
`+` slack auth chrome — import from Chrome browser (macOS)
|
|
92
92
|
`+` slack auth app — guided Slack app creation
|
|
93
|
-
`+" Or set SLACK_TOKEN=xoxp-... in .slack-term/.env.local")}function ut(){let e=process.env.SLACK_BOT_TOKEN;return e&&e.startsWith("xoxb-")?e:void 0}function
|
|
93
|
+
`+" Or set SLACK_TOKEN=xoxp-... in .slack-term/.env.local")}function ut(){let e=process.env.SLACK_BOT_TOKEN;return e&&e.startsWith("xoxb-")?e:void 0}function br(e){let n=un().profiles;if(e)return n[e]?.cookie;if(process.env.SLACK_COOKIE)return process.env.SLACK_COOKIE;if(process.env.SLACK_MCP_XOXD_COOKIE)return process.env.SLACK_MCP_XOXD_COOKIE;if(process.env.SLACK_MCP_XOXP_TOKEN&&Object.keys(n).length===0)return process.env.SLACK_MCP_XOXD_COOKIE;let s=pr(process.cwd(),["SLACK_COOKIE"]);if(s)return s;let o=process.env.SLACK_WORKSPACE;if(o)return n[o]?.cookie;let i=Ht(Yn());if(i)return n[i]?.cookie;let a=Ht(Xn());if(a)return n[a]?.cookie;return}import{existsSync as Vn,readFileSync as Zn,writeFileSync as ta,mkdirSync as na}from"node:fs";import{homedir as Wl}from"node:os";import{join as qt,dirname as wr}from"node:path";function Fr(){return process.env.HOME||Wl()}function sa(){return qt(Fr(),".config","slack-cli","profiles.json")}function ra(){return qt(process.cwd(),".slack-cli","workspace")}function oa(){return qt(Fr(),".slack-cli","workspace")}function Qn(){let e=sa();if(!Vn(e))return{profiles:{}};return JSON.parse(Zn(e,"utf8"))}function ia(e){let t=sa();na(wr(t),{recursive:!0}),ta(t,JSON.stringify(e,null,2)+`
|
|
94
94
|
`)}function Gn(e){if(!Vn(e))return;return Zn(e,"utf8").trim()||void 0}function Ul(e){let t={};for(let n of e.split(`
|
|
95
|
-
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);t[o]=i}return t}function ea(e){if(!Vn(e))return{};try{return Ul(Zn(e,"utf8"))}catch{return{}}}function Kl(e,t){let n=
|
|
95
|
+
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);t[o]=i}return t}function ea(e){if(!Vn(e))return{};try{return Ul(Zn(e,"utf8"))}catch{return{}}}function Kl(e,t){let n=Fr(),r=e;while(!0){for(let i of[qt(r,".slack-term",".env.local"),qt(r,".env.local")]){let a=ea(i);for(let c of t)if(a[c])return a[c]}if(r===n)break;let o=wr(r);if(o===r)break;r=o}let s=ea(qt(n,".slack-term",".env.local"));for(let o of t)if(s[o])return s[o];return}function aa(e,t){na(wr(e),{recursive:!0});let n=Vn(e)?Zn(e,"utf8"):"",r=n?n.split(`
|
|
96
96
|
`):[];for(let[s,o]of Object.entries(t)){let i=r.findIndex((c)=>{let u=c.trim();return u.startsWith(s+"=")||u.startsWith(s+" =")}),a=`${s}=${o}`;if(i!==-1)r[i]=a;else r.push(a)}ta(e,r.join(`
|
|
97
97
|
`).trimEnd()+`
|
|
98
|
-
`)}function es(){let e=Qn(),t=Gn(ra()),n=Gn(oa()),r=t??n;return Object.entries(e.profiles).map(([s,o])=>({name:s,profile:o,current:s===r}))}function
|
|
98
|
+
`)}function es(){let e=Qn(),t=Gn(ra()),n=Gn(oa()),r=t??n;return Object.entries(e.profiles).map(([s,o])=>({name:s,profile:o,current:s===r}))}function Cr(e,t){let n=Qn();n.profiles[e]=t,ia(n)}function Er(e,t){let n=Qn();if(!(e in n.profiles))throw Error(`Profile not found: ${e}`);n.profiles[e].cookie=t,ia(n)}function Yt(e){let n=Qn().profiles;if(e)return n[e]?.cookie;if(process.env.SLACK_COOKIE)return process.env.SLACK_COOKIE;if(process.env.SLACK_MCP_XOXD_COOKIE)return process.env.SLACK_MCP_XOXD_COOKIE;if(process.env.SLACK_MCP_XOXP_TOKEN&&Object.keys(n).length===0)return process.env.SLACK_MCP_XOXD_COOKIE;let s=Kl(process.cwd(),["SLACK_COOKIE"]);if(s)return s;let o=process.env.SLACK_WORKSPACE;if(o)return n[o]?.cookie;let i=Gn(ra());if(i)return n[i]?.cookie;let a=Gn(oa());if(a)return n[a]?.cookie;return}class Ke extends Error{retryAfter;constructor(e){super(`Slack rate limited — retry after ${e}s`);this.name="RateLimitError",this.retryAfter=e}}function _r(){return(process.env.SLACK_API_BASE??"https://slack.com/api").replace(/\/$/,"")}async function fa(e,t,n,r){r=e.startsWith("xoxc-")?r??Yt():void 0;let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${_r()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Ke(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Ke(60);if(a==="invalid_auth"&&e.startsWith("xoxc-")&&!r)throw Error(`Desktop app token (xoxc-) needs its session cookie to be accepted by the public Slack API.
|
|
99
99
|
Attach it: slack auth chrome (macOS) or slack auth firefox
|
|
100
100
|
Or replace the token with an xoxp- user token:
|
|
101
101
|
slack auth login`);if((a==="missing_scope"||a==="cannot_dm_bot")&&e.startsWith("xoxb-"))throw Error(`Slack error on ${t}: ${a} — ${a==="cannot_dm_bot"?`you're authenticated as a bot, so "@you" is the bot itself and it can't DM itself`:"this bot token lacks the user scope this action needs"}.
|
|
102
102
|
Tailing/DMing people and listing users need a user session, not a bot token.
|
|
103
103
|
Switch workspace: slack auth ls then slack auth use <name>
|
|
104
|
-
Or import your Slack desktop session: slack auth login`);throw Error(`Slack error on ${t}: ${a}`)}return i}async function Jl(e,t,n,r){let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${
|
|
104
|
+
Or import your Slack desktop session: slack auth login`);throw Error(`Slack error on ${t}: ${a}`)}return i}async function Jl(e,t,n,r){let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${_r()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Ke(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Ke(60);if((a==="invalid_auth"||a==="not_authed")&&!e.startsWith("xoxc-"))throw Error(`The draft API requires a desktop app session token (xoxc-).
|
|
105
105
|
Import from Slack desktop: slack auth login`);if((a==="invalid_auth"||a==="not_authed")&&!r)throw Error(`drafts.list also requires the xoxd session cookie.
|
|
106
|
-
Attach it with: slack auth chrome (macOS) or slack auth firefox`);throw Error(`Slack error on ${t}: ${a}`)}return i}function zl(e,t,n={},r){let s=new URLSearchParams({token:e,...n});return Jl(e,t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()},r)}function be(e,t,n,r){let s=new URLSearchParams(n).toString();return fa(e,`${t}?${s}`,{method:"GET"},r)}function
|
|
106
|
+
Attach it with: slack auth chrome (macOS) or slack auth firefox`);throw Error(`Slack error on ${t}: ${a}`)}return i}function zl(e,t,n={},r){let s=new URLSearchParams({token:e,...n});return Jl(e,t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()},r)}function be(e,t,n,r){let s=new URLSearchParams(n).toString();return fa(e,`${t}?${s}`,{method:"GET"},r)}function kr(e,t,n,r){return fa(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)},r)}async function Xt(e,t){let n=await be(e,"auth.test",{},t);return{team:n.team??"",teamId:n.team_id??"",url:n.url??"",user:n.user??"",userId:n.user_id??""}}async function da(e,t){t=e.startsWith("xoxc-")?t??Yt():void 0;let n={Authorization:`Bearer ${e}`};if(t)n.Cookie=`d=${t}`;let r=await fetch(`${_r()}/auth.test`,{method:"GET",headers:n});if(r.status===429){let i=parseInt(r.headers.get("retry-after")??"60",10);throw new Ke(isNaN(i)?60:i)}let s=r.headers.get("x-oauth-scopes")??"",o=await r.json();if(o.ok!==!0)throw Error(`Slack error on auth.test: ${o.error??"unknown"}`);return{userId:o.user_id??"",user:o.user??"",botId:o.bot_id??"",team:o.team??"",url:o.url??"",scopes:s.split(",").map((i)=>i.trim()).filter(Boolean)}}async function ha(e,t,n){let r=await be(e,"bots.info",{bot:t},n);return{appId:r.bot?.app_id??"",userId:r.bot?.user_id??""}}async function dn(e,t,n=20,r,s,o,i){let a={channel:t,limit:String(n)};if(r!==void 0)a.oldest=r;if(s!==void 0)a.cursor=s;if(i)a.inclusive="true";return be(e,"conversations.history",a,o)}async function pa(e,t,n,r=50,s){return be(e,"conversations.replies",{channel:t,ts:n,limit:String(r)},s)}async function ts(e,t,n,r,s){await kr(e,"reactions.add",{channel:t,timestamp:n,name:r},s)}async function ga(e,t,n,r){return((await be(e,"reactions.get",{channel:t,timestamp:n,full:"true"},r)).message?.reactions??[]).map((o)=>({name:String(o.name??""),users:Array.isArray(o.users)?o.users.map(String):[]}))}async function ns(e,t,n,r,s){await kr(e,"reactions.remove",{channel:t,timestamp:n,name:r},s)}async function Hl(e,t,n){let s=(await kr(e,"conversations.open",{users:t},n)).channel?.id;if(!s)throw Error(`Failed to open DM with user ${t}`);return s}async function ma(e,t,n){let r="";while(!0){let s={types:"im",limit:"200"};if(r)s.cursor=r;let o=await be(e,"conversations.list",s,n);for(let i of o.channels??[])if(i.user===t)return String(i.id??"");if(r=o.response_metadata?.next_cursor??"",!r)break}return""}async function xr(e,t,n,r){let s=await ma(e,t,n);if(s)return s;let o=r?`${r} (${t})`:t;throw Error(`No existing DM with ${o}. Open it once in Slack first.`)}function fn(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function ca(e,t){let n=fn(e.name??""),r=fn(e.real_name??e.profile?.real_name??""),s=fn(e.profile?.display_name??"");return n===t||r===t||!!s&&s===t}var Da=200;async function ql(e,t,n){let r=0,s=new Set,o="";while(!0){let f={limit:"200"};if(o)f.cursor=o;let l=await be(e,"users.list",f,n);for(let d of l.members??[]){if(r++,d.id)s.add(d.id);if(ca(d,t))return{id:d.id??"",workspaceCount:r,connectCount:0,skipped:0,capped:!1}}if(o=l.response_metadata?.next_cursor??"",!o)break}let i=0,a=0,c=!1,u="";while(!0){let f={types:"im",limit:"200"};if(u)f.cursor=u;let l=await be(e,"conversations.list",f,n);for(let d of l.channels??[]){let p=d.user;if(!p||s.has(p))continue;if(i>=Da){c=!0;break}s.add(p),i++;let m;try{m=(await be(e,"users.info",{user:p},n)).user}catch(h){if(h instanceof Ke)throw h;a++;continue}if(m&&ca(m,t))return{id:p,dm:String(d.id??""),workspaceCount:r,connectCount:i,skipped:a,capped:c}}if(c)break;if(u=l.response_metadata?.next_cursor??"",!u)break}return{id:"",workspaceCount:r,connectCount:i,skipped:a,capped:c}}function Yl(e,t){if(t.workspaceCount===0)return Error(`Cannot resolve ${e}: users.list returned no members at all, so nothing could have matched.
|
|
107
107
|
`+`That is a token or scope fault, not a wrong handle — this says nothing about whether ${e} exists.
|
|
108
108
|
Check who you are: slack auth ls`);let n=t.connectCount?`${t.workspaceCount} workspace account(s) and ${t.connectCount} Slack Connect DM partner(s)`:`${t.workspaceCount} workspace account(s)`,r=[];if(t.capped)r.push(`stopped after ${Da} Slack Connect DM partners, so there may be more`);if(t.skipped)r.push(`${t.skipped} DM partner profile(s) could not be read and were never compared`);return Error(`User not found: ${e} — searched ${n}, none matched.
|
|
109
109
|
`+(r.length?`This search was incomplete: ${r.join("; ")}.
|
|
110
110
|
`:"")+`Slack Connect people from another workspace are not in users.list, so if they never
|
|
111
111
|
DMed you they cannot be found by name at all. Look them up and use their ID:
|
|
112
|
-
slack user ls --external`)}function
|
|
112
|
+
slack user ls --external`)}function Sr(e){let t=e.match(/(?:app\.slack\.com\/client\/T[A-Za-z0-9]+|[A-Za-z0-9-]+\.slack\.com\/archives)\/([A-Za-z0-9]+)(?:\/p(\d{10})(\d{6}))?/);if(!t)return;let n=t[1],r=t[2]&&t[3]?`${t[2]}.${t[3]}`:void 0,s=e.indexOf("?"),o=s>=0?new URLSearchParams(e.slice(s)):void 0,i=o?.get("thread_ts")??void 0,u={channel:o?.get("cid")??void 0??n};if(r)u.ts=r;if(i)u.threadTs=i;return u}function Xl(e){return Sr(e)?.channel}function ua(e){return/^[CDG][A-Z0-9]{8,}$/.test(e)}function la(e){return/^[UW][A-Z0-9]{6,}$/.test(e)}async function ya(e,t,n){let r=Xl(t);if(r)return r;if(!t.startsWith("@")&&!t.startsWith("#")){if(ua(t))return t;if(la(t))return xr(e,t,n);throw Error(`Target must start with # or @ (or be a Slack URL/ID), got: ${t}`)}if(t.startsWith("#")&&ua(t.slice(1)))return t.slice(1);let s=t.startsWith("@"),o=t.slice(1),i=fn(o);if(s){if(la(o))return xr(e,o,n);let u=await be(e,"auth.test",{},n);if(i==="you"||i==="me"||fn(u.user??"")===i){let d=u.user_id;if(!d)throw Error("auth.test did not return user_id");return await ma(e,d,n)||Hl(e,d,n)}let l=await ql(e,i,n);if(!l.id)throw Yl(t,l);if(l.dm)return l.dm;return xr(e,l.id,n,t)}let a=o.toLowerCase(),c="";while(!0){let u={limit:"200",types:"public_channel,private_channel",exclude_archived:"true"};if(c)u.cursor=c;let f=await be(e,"conversations.list",u,n);for(let l of f.channels??[])if(String(l.name??"").toLowerCase()===a)return String(l.id??"");if(c=f.response_metadata?.next_cursor??"",!c)break}throw Error(`channel not found: ${t}`)}async function ss(e,t,n){try{let r=await be(e,"users.info",{user:t},n),s=r.user?.profile?.display_name,o=s&&s.length>0?s:r.user?.real_name??r.user?.name??t,i=r.user?.name??t;return[o,i]}catch{return[t,t]}}async function rs(e,t,n){try{let r=await be(e,"users.info",{user:t},n),s=r.user?.profile?.display_name;if(s&&s.length>0)return s;return r.user?.real_name??r.user?.name??t}catch{return t}}async function os(e,t){let n=[],r="";while(!0){let s={limit:"200"};if(r)s.cursor=r;let o=await be(e,"users.list",s,t);if(n.push(...o.members??[]),r=o.response_metadata?.next_cursor??"",!r)break}return{members:n}}async function Ar(e,t,n){let r=[],s="";while(!0){let o={channel:t,limit:"200"};if(s)o.cursor=s;let i=await be(e,"conversations.members",o,n);if(r.push(...i.members??[]),s=i.response_metadata?.next_cursor??"",!s)break}return r}async function $r(e,t,n){return be(e,"users.info",{user:t},n)}async function ba(e,t,n){return be(e,"conversations.info",{channel:t},n)}async function wa(e,t){let n=await zl(e,"client.boot",{},t),r=typeof n.url==="string"?n.url:void 0;if(!r){let o=Object.keys(n).join(", ");throw Error(`client.boot did not return a WebSocket URL. Keys: ${o}`)}let s=n.self&&typeof n.self==="object"&&!Array.isArray(n.self)?n.self:{};return{wsUrl:r,selfId:typeof s.id==="string"?s.id:""}}var Gl=["chat:write","im:write"],Vl=["im:history","im:read"];async function is(e){let{userId:t,botId:n,team:r,scopes:s}=await da(e),o="";if(n)try{o=(await ha(e,n)).appId}catch{o=""}let i=(u)=>s.includes(u),a=Gl.filter((u)=>!i(u)),c=Vl.filter((u)=>!i(u));return{canSend:a.length===0,canReceiveReplies:c.length===0,ok:a.length===0&&c.length===0,botUserId:t,appId:o,team:r,grantedScopes:s,missingSendScopes:a,missingReplyScopes:c}}function Fa(e){return["",` Bot user: ${e.botUserId||"(unknown)"}`,` App ID: ${e.appId||"(unknown — bots.info unavailable)"}`,` Granted scopes: ${e.grantedScopes.join(", ")||"(none reported)"}`]}function as(e,t=!1){let n=e.appId?`https://api.slack.com/apps/${e.appId}`:"https://api.slack.com/apps";if(e.ok){let s=["✓ Bot DM scopes are complete (send + read replies)."," Two-way replies also require the Messages Tab, which is not API-detectable.",' If recipients see "Sending messages to this app is turned off", enable it:',` ${n} → App Home → "Messages Tab" ON + "Allow users to send messages".`];return t?s:[...s,...Fa(e)]}let r=[];if(!e.canSend)r.push(`⚠ This bot CANNOT send DMs — missing scope(s): ${e.missingSendScopes.join(", ")}.`);else r.push("⚠ This bot can send DMs, but the user's replies will NOT be readable.");return r.push(" Make escalation DMs two-way:"),r.push(` 1. ${n} → App Home → enable "Messages Tab" and check`),r.push(' "Allow users to send Slash commands and messages".'),r.push(` 2. OAuth & Permissions → add Bot Token Scopes: ${[...e.missingSendScopes,...e.missingReplyScopes].join(", ")}`),r.push(" 3. Reinstall the app to apply the new scopes."),t?r:[...r,...Fa(e)]}import{createInterface as It}from"node:readline/promises";import{join as Or}from"node:path";import{homedir as cf}from"node:os";import{readdirSync as cs,readFileSync as hn,existsSync as Ot,copyFileSync as Ca,unlinkSync as Ea}from"node:fs";import{homedir as us,tmpdir as xa}from"node:os";import{join as pe,dirname as Zl}from"node:path";import{pbkdf2Sync as _a,createDecipheriv as ka}from"node:crypto";import{execSync as Sa}from"node:child_process";function Ql(){let e=us();if(process.platform==="darwin")return pe(e,"Library","Application Support","Slack","Local Storage","leveldb");if(process.platform==="linux")return pe(e,".config","Slack","Local Storage","leveldb");if(process.platform==="win32"){let t=process.env.APPDATA??pe(e,"AppData","Roaming");return pe(t,"Slack","Local Storage","leveldb")}throw Error(`Unsupported platform: ${process.platform}`)}function ef(){let e=us();if(process.platform==="darwin")return pe(e,"Library","Application Support","Slack","Cookies");return""}function tf(e,t){if(e.length<35||e.slice(0,3).toString()!=="v10")throw Error("Not a v10 encrypted cookie");let n=e.slice(19,35),r=e.slice(35),s=ka("aes-128-cbc",t,n);return s.setAutoPadding(!0),Buffer.concat([s.update(r),s.final()]).toString("utf8")}function nf(){if(process.platform!=="darwin")return;let e=ef();if(!Ot(e))return;let t;try{t=Sa('security find-generic-password -w -s "Slack Safe Storage" -a "Slack Key"',{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trimEnd()}catch{return}let n=_a(t,"saltysalt",1003,16,"sha1");try{let{default:r}=Bs("bun:sqlite"),s=new r(e,{readonly:!0}),o=s.prepare("SELECT encrypted_value FROM cookies WHERE name='d' AND host_key LIKE '%slack%'").get();if(s.close(),!o)return;return tf(Buffer.from(o.encrypted_value),n)}catch{return}}async function Aa(){let e=Ql();if(!Ot(e))throw Error(`Slack desktop app LevelDB not found at:
|
|
113
113
|
${e}
|
|
114
|
-
Is Slack installed and opened at least once?`);let t=cs(e).filter((a)=>a.endsWith(".ldb")||a.endsWith(".log"));if(t.length===0)throw Error(`No LevelDB data files found in ${e}`);let n=new Map;for(let a of t){let c;try{c=
|
|
115
|
-
`)){let a=i.trim();if(a.startsWith("[")){s="",o="";continue}let c=a.indexOf("=");if(c===-1)continue;let u=a.slice(0,c).trim().toLowerCase(),f=a.slice(c+1).trim();if(u==="name")s=f;if(u==="path")o=f.split(/[\\/]/).pop()??f;if(s&&o)n[o]=s,s="",o=""}}catch{}return n}function Oa(){let e=of();if(!e||!Ot(e))return[];let t=af(e),n=[],r;try{r=cs(e)}catch{return[]}for(let s of r){let o=pe(e,s,"cookies.sqlite");if(!Ot(o))continue;let i=pe(xa(),`slack-firefox-cookies-${Date.now()}-${s}.db`);try{Ca(o,i);let{default:a}=Bs("bun:sqlite"),c=new a(i,{readonly:!0}),u=c.prepare("SELECT value FROM moz_cookies WHERE name='d' AND host LIKE '%slack%' LIMIT 1").get();if(c.close(),!u?.value||!u.value.startsWith("xoxd-"))continue;let f=t[s]??s;n.push({profileDir:s,profileName:f,cookie:u.value})}catch{}finally{try{Ea(i)}catch{}}}return n}var uf=["search:read","channels:history","groups:history","im:history","mpim:history","channels:read","groups:read","im:read","mpim:read","users:read","chat:write","files:write"],lf=["channels:history","groups:history","im:history","mpim:history","channels:read","groups:read","im:read","mpim:read","users:read","chat:write","files:write"];function ls(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function ff(){return JSON.stringify({display_information:{name:"slack-term"},oauth_config:{scopes:{user:uf}},settings:{org_deploy_enabled:!1,socket_mode_enabled:!1,token_rotation_enabled:!1}},null,2)}function df(){return JSON.stringify({display_information:{name:"slack-term"},features:{bot_user:{display_name:"slack-term",always_online:!1}},oauth_config:{scopes:{bot:lf}},settings:{org_deploy_enabled:!1,socket_mode_enabled:!1,token_rotation_enabled:!1}},null,2)}async function Tt(e,t){return(await e.question(t)).trim()}async function Pt(e,t,n,r){console.error("Verifying token...");let s=await Xt(t),o=ls(s.team),i;if(n)i=n;else if(e)i=await Tt(e,`Workspace name [${o}]: `)||o;else i=o;let a=null;if(e){console.log(""),console.log("Where to save the token?"),console.log(" 1) ./.env.local (current directory) [default]"),console.log(" 2) ./.slack-term/.env.local (current directory, slack-specific)"),console.log(" 3) ~/.slack-term/.env.local (global, available everywhere)"),console.log(" 4) profiles.json (multi-workspace: slack auth use)"),console.log("");let c=await Tt(e,"Choice [1/2/3/4, Enter=1]: ");if(c==="2")a
|
|
114
|
+
Is Slack installed and opened at least once?`);let t=cs(e).filter((a)=>a.endsWith(".ldb")||a.endsWith(".log"));if(t.length===0)throw Error(`No LevelDB data files found in ${e}`);let n=new Map;for(let a of t){let c;try{c=hn(pe(e,a),"latin1")}catch{continue}if(a.endsWith(".log"))for(let u of c.matchAll(/"token":"(xoxc-[^"]+)"/g)){let f=u[1],l=f.split("-")[1]??"";if(!l||f.length<40)continue;let d=Math.max(0,u.index-2000),p=Math.min(c.length,u.index+2000),m=c.slice(d,p),h=m.match(/"url":"(https:\/\/[a-z0-9-]+\.slack\.com\/)"/),y=m.match(/"(?:team_name|name)":"([^"]{2,60})"/),E=n.get(l);if(!E||f.length>E.token.length){let F={token:f,teamId:l},A=h?.[1]??E?.url,k=y?.[1]??E?.teamName;if(A)F.url=A;if(k)F.teamName=k;n.set(l,F)}}else for(let u of c.matchAll(/xoxc-(\d+)-(\d+)-(\d+)/g)){let f=u[1];if(n.has(f))continue;let l=u.index+u[0].length,d=Math.min(l+10,c.length);while(l<d&&(c.charCodeAt(l)<48||c.charCodeAt(l)>57))l++;let p="";while(l<c.length&&c.charCodeAt(l)>=48&&c.charCodeAt(l)<=57)p+=c[l++];if(c[l]!=="-")continue;l++;let m="";while(l<c.length){let y=c.charCodeAt(l);if(y>=48&&y<=57||y>=97&&y<=102)m+=c[l++];else break}if(m.length<20)continue;let h=`${u[0]}${p}-${m}`;n.set(f,{token:h,teamId:f})}}let s=cs(e).filter((a)=>a.endsWith(".ldb")||a.endsWith(".log")).map((a)=>{try{return hn(pe(e,a),"latin1").replace(/[^\x20-\x7e]/g," ")}catch{return""}}).join(" ");for(let a of n.values()){if(a.teamName)continue;let c=s.indexOf(a.teamId);if(c!==-1){let u=Math.max(0,c-500),f=Math.min(s.length,c+500),d=s.slice(u,f).match(/"(?:team_name|name)":"([^"]{2,60})"/);if(d?.[1]){a.teamName=d[1];continue}}if(!a.teamName&&a.url){let u=a.url.match(/https:\/\/([a-z0-9-]+)\.slack\.com\//)?.[1];if(u){let f=s.indexOf(u);if(f!==-1){let l=Math.max(0,f-500),d=Math.min(s.length,f+500),m=s.slice(l,d).match(/"(?:team_name|name)":"([^"]{2,60})"/);if(m?.[1]){a.teamName=m[1];continue}}a.teamName=u.split("-").map((l)=>l.charAt(0).toUpperCase()+l.slice(1)).join(" ")}}}let o=nf(),i=[...n.values()];if(o)for(let a of i)a.cookie=o;return i}function sf(e,t){let n=(r,s)=>{try{let o=ka("aes-128-cbc",t,r);o.setAutoPadding(!0);let i=Buffer.concat([o.update(s),o.final()]).toString("utf8");return i.startsWith("xoxd-")?i:void 0}catch{return}};return n(Buffer.alloc(16,32),e.slice(3))??(e.length>=35?n(e.slice(19,35),e.slice(35)):void 0)}function rf(e,t){let n=(r,s)=>{if(r&&s)return`${r} (${s})`;return r||s||t};try{let s=JSON.parse(hn(pe(e,"Local State"),"utf8")).profile?.info_cache?.[t];if(s&&(s.name||s.user_name))return n(s.name??"",s.user_name??"")}catch{}try{let s=JSON.parse(hn(pe(e,t,"Preferences"),"utf8")).profile;return n(s?.name??"",s?.user_name??"")}catch{return t}}function $a(){if(process.platform!=="darwin")return{candidates:[],totalProfiles:0};let e=pe(us(),"Library","Application Support","Google","Chrome");if(!Ot(e))return{candidates:[],totalProfiles:0};let t;try{t=Sa('security find-generic-password -a Chrome -s "Chrome Safe Storage" -w',{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trimEnd()}catch{return{candidates:[],totalProfiles:0}}if(!t)return{candidates:[],totalProfiles:0};let n=_a(t,"saltysalt",1003,16,"sha1"),r=["Default",...cs(e).filter((o)=>o.startsWith("Profile "))],s=[];for(let o of r){let i=pe(e,o,"Cookies");if(!Ot(i))continue;let a=pe(xa(),`slack-chrome-cookies-${Date.now()}-${o}.db`);try{Ca(i,a);let{default:c}=Bs("bun:sqlite"),u=new c(a,{readonly:!0}),f=u.prepare("SELECT encrypted_value FROM cookies WHERE name='d' AND host_key LIKE '%slack%'").get();if(u.close(),!f)continue;let l=Buffer.from(f.encrypted_value),d=l.slice(0,3).toString();if(d==="v10"){let p=sf(l,n);if(!p)continue;s.push({profileDir:o,profileName:rf(e,o),cookie:p})}else if(d==="v20")throw Error(`Chrome cookie uses v20 (app-bound AES-256-GCM) which is not supported yet. Prefix found: ${l.slice(0,4).toString("hex")}`);else throw Error(`Unknown cookie encryption prefix: ${l.slice(0,4).toString("hex")}`)}catch(c){if(c instanceof Error&&(c.message.includes("app-bound")||c.message.includes("Unknown cookie")))throw c}finally{try{Ea(a)}catch{}}}return{candidates:s,totalProfiles:r.length}}function of(){let e=us();if(process.platform==="darwin")return pe(e,"Library","Application Support","Firefox","Profiles");if(process.platform==="linux")return pe(e,".mozilla","firefox");if(process.platform==="win32")return pe(process.env.APPDATA??pe(e,"AppData","Roaming"),"Mozilla","Firefox","Profiles");return""}function af(e){let t=pe(Zl(e),"profiles.ini"),n={};if(!Ot(t))return n;try{let r=hn(t,"utf8"),s="",o="";for(let i of r.split(`
|
|
115
|
+
`)){let a=i.trim();if(a.startsWith("[")){s="",o="";continue}let c=a.indexOf("=");if(c===-1)continue;let u=a.slice(0,c).trim().toLowerCase(),f=a.slice(c+1).trim();if(u==="name")s=f;if(u==="path")o=f.split(/[\\/]/).pop()??f;if(s&&o)n[o]=s,s="",o=""}}catch{}return n}function Oa(){let e=of();if(!e||!Ot(e))return[];let t=af(e),n=[],r;try{r=cs(e)}catch{return[]}for(let s of r){let o=pe(e,s,"cookies.sqlite");if(!Ot(o))continue;let i=pe(xa(),`slack-firefox-cookies-${Date.now()}-${s}.db`);try{Ca(o,i);let{default:a}=Bs("bun:sqlite"),c=new a(i,{readonly:!0}),u=c.prepare("SELECT value FROM moz_cookies WHERE name='d' AND host LIKE '%slack%' LIMIT 1").get();if(c.close(),!u?.value||!u.value.startsWith("xoxd-"))continue;let f=t[s]??s;n.push({profileDir:s,profileName:f,cookie:u.value})}catch{}finally{try{Ea(i)}catch{}}}return n}var uf=["search:read","channels:history","groups:history","im:history","mpim:history","channels:read","groups:read","im:read","mpim:read","users:read","chat:write","files:write"],lf=["channels:history","groups:history","im:history","mpim:history","channels:read","groups:read","im:read","mpim:read","users:read","chat:write","files:write"];function ls(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function ff(){return JSON.stringify({display_information:{name:"slack-term"},oauth_config:{scopes:{user:uf}},settings:{org_deploy_enabled:!1,socket_mode_enabled:!1,token_rotation_enabled:!1}},null,2)}function df(){return JSON.stringify({display_information:{name:"slack-term"},features:{bot_user:{display_name:"slack-term",always_online:!1}},oauth_config:{scopes:{bot:lf}},settings:{org_deploy_enabled:!1,socket_mode_enabled:!1,token_rotation_enabled:!1}},null,2)}async function Tt(e,t){return(await e.question(t)).trim()}async function Pt(e,t,n,r){console.error("Verifying token...");let s=await Xt(t),o=ls(s.team),i;if(n)i=n;else if(e)i=await Tt(e,`Workspace name [${o}]: `)||o;else i=o;let a=null;if(e){console.log(""),console.log("Where to save the token?"),console.log(" 1) ./.env.local (current directory) [default]"),console.log(" 2) ./.slack-term/.env.local (current directory, slack-specific)"),console.log(" 3) ~/.slack-term/.env.local (global, available everywhere)"),console.log(" 4) profiles.json (multi-workspace: slack auth use)"),console.log("");let c=await Tt(e,"Choice [1/2/3/4, Enter=1]: ");if(c==="2")a=Or(process.cwd(),".slack-term",".env.local");else if(c==="3")a=Or(cf(),".slack-term",".env.local");else if(c==="4")a=null;else a=Or(process.cwd(),".env.local")}if(a===null)if(Cr(i,{token:t,...s,...r?{cookie:r}:{}}),console.log(`Saved workspace "${i}" to profiles.json: ${s.team} (${s.user})`),process.env.SLACK_MCP_XOXP_TOKEN)console.log(""),console.log("Warning: SLACK_MCP_XOXP_TOKEN is set — it conflicts with profiles."),console.log(" Unset it: unset SLACK_MCP_XOXP_TOKEN (and remove from ~/.zshrc / ~/.bashrc)");else console.log(` Run: slack auth use -g ${i}`);else{let c={SLACK_TOKEN:t};if(r)c.SLACK_COOKIE=r;aa(a,c),console.log(`Saved token to ${a}`),console.log(" SLACK_TOKEN will be picked up automatically in this directory tree.")}return i}async function hf(e){console.error("Scanning Slack desktop app...");let t=await Aa();if(t.length===0)console.error("No sessions found. Make sure Slack is installed and you have signed in at least once."),process.exit(1);if(t.length===1&&e){let n=t[0],r=n.teamName??n.teamId;console.log(`Found workspace: ${r}${n.cookie?" (+ xoxd cookie)":""}`),await Pt(e,n.token,ls(r),n.cookie),console.log(""),console.log("Note: desktop app tokens (xoxc-) are internal Slack tokens."),console.log("If API calls fail, replace with an xoxp- token: slack auth login");return}for(let n of t){let r=n.teamName??n.teamId,s=ls(r);Cr(s,{token:n.token,team:r,teamId:n.teamId,url:n.url??"",user:"",...n.cookie?{cookie:n.cookie}:{}}),console.log(`Added workspace "${s}": ${r}${n.cookie?" + xoxd cookie":""}`)}if(console.log(""),t.length===1){let n=ls(t[0].teamName??t[0].teamId);console.log(`Run: slack auth use -g ${n}`)}else console.log("Run: slack auth ls then: slack auth use -g <name>");console.log(""),console.log("Note: desktop app tokens (xoxc-) are internal Slack tokens."),console.log("If API calls fail, replace with an xoxp- user token by re-running: slack auth login")}async function Ia(e){console.log("Which token type does your app use?"),console.log(""),console.log(" 1) User token (xoxp-) -full access including search [recommended]"),console.log(" 2) Bot token (xoxb-) -search and news unavailable"),console.log("");let n=await Tt(e,"Choice [1/2]: ")==="2"?"bot":"user",r=n==="user"?"xoxp-":"xoxb-",s=n==="user"?"User OAuth Token":"Bot User OAuth Token";console.log(""),console.log("Find your token here:"),console.log(" https://api.slack.com/apps"),console.log(" -> Select your app -> OAuth & Permissions"),console.log(` -> Copy the "${s}" (starts with ${r})`),console.log("");let o=await Tt(e,"Paste your token: ");if(!o)console.error("No token provided."),process.exit(1);if(!o.startsWith(r))console.error(`Expected a ${r} token, got: ${o.slice(0,10)}...`),process.exit(1);await Pt(e,o)}async function fs(e,t){let n=t==="user"?ff():df(),r=t==="user"?"User OAuth Token (xoxp-...)":"Bot User OAuth Token (xoxb-...)",s=t==="user"?"xoxp-":"xoxb-";if(t==="bot")console.log("Note: bot tokens cannot use search:read (user-only scope)."),console.log(" The news and search commands will not work with a bot token."),console.log("");console.log("Step 1 -Create your Slack app:"),console.log(" Open: https://api.slack.com/apps"),console.log(' Click "Create New App" -> "From a manifest" -> select your workspace'),console.log(" Paste this manifest (JSON tab):"),console.log(""),console.log("-------------------------------------------------------------"),console.log(n),console.log("-------------------------------------------------------------"),console.log(""),console.log('Step 2 -Install: "Install App" -> "Install to Workspace" -> Authorize'),console.log(""),console.log("Step 3 -Copy your token:"),console.log(` OAuth & Permissions -> ${r}`),console.log("");let o=await Tt(e,"Paste your token: ");if(!o)console.error("No token provided."),process.exit(1);if(!o.startsWith(s))console.error(`Expected a ${s} token, got: ${o.slice(0,10)}...`),process.exit(1);await Pt(e,o)}async function Ta(e={}){if(process.platform!=="darwin")console.error("Chrome cookie extraction is only supported on macOS."),process.exit(1);let t=es();if(t.length===0)console.error("No workspaces configured. Run: slack auth login"),process.exit(1);let n;if(e.workspace){if(!t.find((c)=>c.name===e.workspace))console.error(`Workspace "${e.workspace}" not found. Available: ${t.map((c)=>c.name).join(", ")}`),process.exit(1);n=e.workspace}else if(t.length===1)n=t[0].name;else{let a=t.find((c)=>c.current);if(a)n=a.name,console.log(`Using active workspace: ${n}`);else{console.log("Multiple workspaces found. Choose one:"),t.forEach((l,d)=>console.log(` ${d+1}) ${l.name} (${l.profile.team})`));let c=It({input:process.stdin,output:process.stdout}),u=(await c.question("Choice: ")).trim();c.close();let f=parseInt(u,10)-1;if(isNaN(f)||f<0||f>=t.length)console.error("Invalid choice."),process.exit(1);n=t[f].name}}if(t.find((a)=>a.name===n).profile.token.startsWith("xoxb-")){console.error(`
|
|
116
116
|
Workspace "${n}" uses a bot token (xoxb-). A Chrome session cookie only
|
|
117
117
|
`+`augments a user session token (xoxc-) — it has no effect on a bot token, so user-level
|
|
118
|
-
`+"actions (tail @user, DMs, listing users) would still fail.");let a=t.filter((c)=>c.profile.token.startsWith("xoxc-")||c.profile.token.startsWith("xoxp-"));if(a.length>0)console.error(` Target a user-token workspace instead: ${a.map((c)=>c.name).join(", ")}`),console.error(` slack auth chrome -w ${a[0].name}`);else console.error(" Import your Slack desktop user session instead: slack auth login");process.exit(1)}console.log("Scanning Chrome profiles for Slack session..."),console.log("macOS may show a dialog asking for your login password — click Allow.");let s,o;try{({candidates:s,totalProfiles:o}=$a())}catch(a){console.error(`Failed: ${a instanceof Error?a.message:String(a)}`),process.exit(1)}if(s.length===0)console.error(`No Slack session found in Chrome (scanned ${o} profile${o!==1?"s":""}). Possible reasons:`),console.error(" - You denied the keychain dialog (try running again and click Allow)"),console.error(" - Chrome is not installed or has no Slack session"),console.error(" - You're not logged in to Slack in Chrome"),process.exit(1);let i;if(s.length===1&&o<=1)i=s[0].cookie,console.log(`Found session in Chrome profile: ${s[0].profileName}`);else{let a=s.length===1?`Found 1 Slack session across ${o} Chrome profiles:`:`Found ${s.length} Slack sessions across ${o} Chrome profiles:`;console.log(a),s.forEach((d,p)=>console.log(` ${p+1}) ${d.profileName} [${d.profileDir}]`)),console.log("");let c=It({input:process.stdin,output:process.stdout}),u=s.length===1?" [Enter=1]":"",f=(await c.question(`Choice [1-${s.length}]${u}: `)).trim();c.close();let l=f===""&&s.length===1?0:parseInt(f,10)-1;if(isNaN(l)||l<0||l>=s.length)console.error("Invalid choice."),process.exit(1);i=s[l].cookie}
|
|
118
|
+
`+"actions (tail @user, DMs, listing users) would still fail.");let a=t.filter((c)=>c.profile.token.startsWith("xoxc-")||c.profile.token.startsWith("xoxp-"));if(a.length>0)console.error(` Target a user-token workspace instead: ${a.map((c)=>c.name).join(", ")}`),console.error(` slack auth chrome -w ${a[0].name}`);else console.error(" Import your Slack desktop user session instead: slack auth login");process.exit(1)}console.log("Scanning Chrome profiles for Slack session..."),console.log("macOS may show a dialog asking for your login password — click Allow.");let s,o;try{({candidates:s,totalProfiles:o}=$a())}catch(a){console.error(`Failed: ${a instanceof Error?a.message:String(a)}`),process.exit(1)}if(s.length===0)console.error(`No Slack session found in Chrome (scanned ${o} profile${o!==1?"s":""}). Possible reasons:`),console.error(" - You denied the keychain dialog (try running again and click Allow)"),console.error(" - Chrome is not installed or has no Slack session"),console.error(" - You're not logged in to Slack in Chrome"),process.exit(1);let i;if(s.length===1&&o<=1)i=s[0].cookie,console.log(`Found session in Chrome profile: ${s[0].profileName}`);else{let a=s.length===1?`Found 1 Slack session across ${o} Chrome profiles:`:`Found ${s.length} Slack sessions across ${o} Chrome profiles:`;console.log(a),s.forEach((d,p)=>console.log(` ${p+1}) ${d.profileName} [${d.profileDir}]`)),console.log("");let c=It({input:process.stdin,output:process.stdout}),u=s.length===1?" [Enter=1]":"",f=(await c.question(`Choice [1-${s.length}]${u}: `)).trim();c.close();let l=f===""&&s.length===1?0:parseInt(f,10)-1;if(isNaN(l)||l<0||l>=s.length)console.error("Invalid choice."),process.exit(1);i=s[l].cookie}Er(n,i),console.log(`Saved xoxd cookie to workspace "${n}".`),console.log("RTM WebSocket mode is now available: slack tail @you")}async function Pa(e={}){let t=es();if(t.length===0)console.error("No workspaces configured. Run: slack auth login"),process.exit(1);let n;if(e.workspace){if(!t.find((i)=>i.name===e.workspace))console.error(`Workspace "${e.workspace}" not found. Available: ${t.map((i)=>i.name).join(", ")}`),process.exit(1);n=e.workspace}else if(t.length===1)n=t[0].name;else{let o=t.find((i)=>i.current);if(o)n=o.name,console.log(`Using active workspace: ${n}`);else{console.log("Multiple workspaces found. Choose one:"),t.forEach((u,f)=>console.log(` ${f+1}) ${u.name} (${u.profile.team})`));let i=It({input:process.stdin,output:process.stdout}),a=(await i.question("Choice: ")).trim();i.close();let c=parseInt(a,10)-1;if(isNaN(c)||c<0||c>=t.length)console.error("Invalid choice."),process.exit(1);n=t[c].name}}console.log("Scanning Firefox profiles for Slack session...");let r=Oa();if(r.length===0)console.error("No Slack session found in Firefox. Possible reasons:"),console.error(" - Firefox is not installed"),console.error(" - You are not logged in to Slack in Firefox"),process.exit(1);let s;if(r.length===1)s=r[0].cookie,console.log(`Found session in Firefox profile: ${r[0].profileName}`);else{console.log("Multiple Firefox profiles have a Slack session. Choose one:"),r.forEach((c,u)=>console.log(` ${u+1}) ${c.profileName} [${c.profileDir}]`));let o=It({input:process.stdin,output:process.stdout}),i=(await o.question("Choice: ")).trim();o.close();let a=parseInt(i,10)-1;if(isNaN(a)||a<0||a>=r.length)console.error("Invalid choice."),process.exit(1);s=r[a].cookie}Er(n,s),console.log(`Saved xoxd cookie to workspace "${n}".`),console.log("RTM WebSocket mode is now available: slack tail @you")}async function Ra(e={}){if(e.token){await Pt(null,e.token,e.name);return}if(!process.stdin.isTTY){let n=[];for await(let s of process.stdin)n.push(s);let r=Buffer.concat(n).toString("utf8").trim();if(!r)console.error("No token provided on stdin."),process.exit(1);await Pt(null,r,e.name);return}let t=It({input:process.stdin,output:process.stdout});try{await Ia(t)}finally{t.close()}}async function Ma(e={}){let t=It({input:process.stdin,output:process.stdout});try{if(e.bot!==void 0){await fs(t,e.bot?"bot":"user");return}console.log("Which token type?"),console.log(" 1) User token (xoxp-) -full access including search [default]"),console.log(" 2) Bot token (xoxb-) -search and news unavailable"),console.log("");let n=await Tt(t,"Choice [1/2, Enter=1]: ");await fs(t,n==="2"?"bot":"user")}finally{t.close()}}async function ds(e={}){let t=es();if(t.length>0){console.log("Currently logged in:");for(let{name:r,profile:s,current:o}of t)console.log(` ${o?"*":" "} ${r} ${s.team} (${s.user||"unknown"})`);console.log(""),console.log("Adding another workspace:"),console.log("")}if(e.token){await Pt(null,e.token,e.name);return}if(!process.stdin.isTTY){let r=[];for await(let o of process.stdin)r.push(o);let s=Buffer.concat(r).toString("utf8").trim();if(!s)console.error("No token provided on stdin."),process.exit(1);await Pt(null,s,e.name);return}console.log("How would you like to authenticate with Slack?"),console.log(""),console.log(" 1) Slack desktop app - import session token"),console.log(" Reads the xoxc- token directly from the installed app."),console.log(" Token: all platforms | xoxd cookie: macOS only"),console.log(""),console.log(" 2) Connect existing Slack app [recommended if you have one]"),console.log(" Paste a token from an app you already created."),console.log(""),console.log(" 3) Create new Slack app - user token (xoxp-)"),console.log(" Guided setup with manifest. Full access including search."),console.log(""),console.log(" 4) Create new Slack app - bot token (xoxb-)"),console.log(" Bot is invited to channels. Search and news unavailable."),console.log("");let n=It({input:process.stdin,output:process.stdout});try{let r=await Tt(n,"Choice [1/2/3/4]: ");if(console.log(""),r==="1")await hf(n);else if(r==="2")await Ia(n);else if(r==="3")await fs(n,"user");else if(r==="4")await fs(n,"bot");else console.error(`Invalid choice: "${r}". Enter 1, 2, 3, or 4.`),process.exit(1)}finally{n.close()}}async function hs(e,t,n,r){let s=t,o=[],i=s,a=0;while(!0){let c=i.indexOf("<@U",a);if(c===-1)break;let u=i.slice(c+2),f=u.search(/[>|]/),l=f===-1?u:u.slice(0,f);if(l.length>=9)o.push(l);a=c+1}for(let c of o){if(!n.has(c))n.set(c,await rs(e,c,r));let u=n.get(c)??c;s=s.replaceAll(`<@${c}>`,`@${u}`),s=s.replace(new RegExp(`<@${c}\\|[^>]*>`,"g"),`@${u}`)}return s}function ps(e){return e.replace(/<!date\^(\d+)\^[^|>]*(?:\|([^>]*))?>/g,(t,n,r)=>{let s=Number(n);if(!Number.isFinite(s))return r??"date";let o=new Date(s*1000);if(Number.isNaN(o.getTime()))return r??"date";let i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],c=i[o.getUTCDay()]??"",u=a[o.getUTCMonth()]??"";return`${c}, ${u} ${String(o.getUTCDate()).padStart(2,"0")}, ${o.getUTCFullYear()}`})}function Na(e){let t=typeof e.ts==="string"?e.ts:"",n=typeof e.thread_ts==="string"?e.thread_ts:"";return n!==""&&n!==t}function pf(e){let[t,n="000000"]=e.split("."),r=new Date(Number(t)*1000),s=r.getUTCFullYear(),o=String(r.getUTCMonth()+1).padStart(2,"0"),i=String(r.getUTCDate()).padStart(2,"0"),a=String(r.getUTCHours()).padStart(2,"0"),c=String(r.getUTCMinutes()).padStart(2,"0"),u=String(r.getUTCSeconds()).padStart(2,"0"),f=n.padEnd(6,"0").slice(0,6);return`${s}-${o}-${i}T${a}:${c}:${u}.${f}`}async function gf(e,t,n){let r=typeof t.ts==="string"?t.ts:"0.000000",s=pf(r),o="?";if(typeof t.user==="string"){let l=t.user,d="@"+l;if(!n.has(d)){let[,p]=await ss(e,l);n.set(d,p)}o=n.get(d)??l}else if(typeof t.username==="string")o=t.username;let i=typeof t.text==="string"?t.text:"",c=ps(await hs(e,i,n)).split(`
|
|
119
119
|
`),u=c[0]+(c.length>1?`
|
|
120
120
|
`+c.slice(1).map((l)=>` ${l}`).join(`
|
|
121
121
|
`):""),f=Na(t)?"↳ ":"";return`${s} ${f}@${o}: ${u}`}async function mf(e,t,n,r,s,o,i,a){if(a?.aborted)return;return new Promise((c)=>{let u=new e(n);a?.addEventListener("abort",()=>{u.close(),c()},{once:!0}),u.addEventListener("open",()=>{process.stderr.write(`Connected via RTM (experimental).
|
|
122
122
|
`)}),u.addEventListener("close",()=>c()),u.addEventListener("error",()=>c()),u.addEventListener("message",(f)=>{(async()=>{try{let l;try{l=JSON.parse(String(f.data))}catch{return}let d=typeof l.type==="string"?l.type:"";if(d==="ping"){u.send(JSON.stringify({type:"pong",reply_to:l.id??0}));return}if(d!=="message")return;if((typeof l.channel==="string"?l.channel:"")!==r)return;let m=typeof l.ts==="string"?l.ts:"";if(!m||o.has(m))return;let h=typeof l.subtype==="string"?l.subtype:"";if(h==="message_changed"||h==="message_deleted")return;if(s.thread){if((typeof l.thread_ts==="string"?l.thread_ts:m)!==s.thread&&m!==s.thread)return}if(s.watchThread&&Na(l)){if((typeof l.thread_ts==="string"?l.thread_ts:"")!==s.watchThread)return}if(s.me&&s.myUserId){if(!(typeof l.text==="string"?l.text:"").includes(`<@${s.myUserId}>`))return}if(o.add(m),o.size>1000){let E=o.values().next().value;if(E!==void 0)o.delete(E)}let y=await gf(t,l,i);process.stdout.write(y+`
|
|
123
123
|
`)}catch(l){process.stderr.write(`RTM message error: ${l instanceof Error?l.message:String(l)}
|
|
124
|
-
`)}})()})})}var Ba=3,Df=2000,
|
|
124
|
+
`)}})()})})}var Ba=3,Df=2000,Ir={sleep:(e)=>new Promise((t)=>setTimeout(t,e)),clientBoot:wa,getWebSocket:()=>{let e=globalThis.WebSocket;return typeof e==="function"?e:void 0}};async function va(e,t,n,r,s,o,i){let a=Ir.getWebSocket();if(!a)return;for(let c=0;c<Ba;c++){if(i?.aborted)return;try{let{wsUrl:u}=await Ir.clientBoot(e,t);await mf(a,e,u,n,r,s,o,i)}catch{}if(i?.aborted)return;if(c<Ba-1)await Ir.sleep(Df)}}function ja(e){let t=e.match(/^(\d+(?:\.\d+)?)(s|m|h|d)$/);if(!t)throw Error(`Invalid --since format: "${e}" (expected e.g. 10m, 2h, 1d)`);let n=parseFloat(t[1]);switch(t[2]){case"s":return n;case"m":return n*60;case"h":return n*3600;case"d":return n*86400}}var Je={sleep:(e)=>new Promise((t)=>setTimeout(t,e)),now:()=>Date.now(),tailRTM:va};function Qe(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function Tr(e){return Array.isArray(e)?e:[]}function La(e){return Number(e)||0}function Wa(e){let t=typeof e.ts==="string"?e.ts:"",n=typeof e.thread_ts==="string"?e.thread_ts:"";return n!==""&&n!==t}function yf(e){let[t,n="000000"]=e.split("."),r=new Date(Number(t)*1000),s=r.getUTCFullYear(),o=String(r.getUTCMonth()+1).padStart(2,"0"),i=String(r.getUTCDate()).padStart(2,"0"),a=String(r.getUTCHours()).padStart(2,"0"),c=String(r.getUTCMinutes()).padStart(2,"0"),u=String(r.getUTCSeconds()).padStart(2,"0"),f=n.padEnd(6,"0").slice(0,6);return`${s}-${o}-${i}T${a}:${c}:${u}.${f}`}async function bf(e,t,n,r,s){let o=typeof t.ts==="string"?t.ts:"0.000000",i=yf(o),a="?";if(typeof t.user==="string"){let m=t.user,h="@"+m;if(!n.has(h)){let[,y]=await ss(e,m,s);n.set(h,y)}a=n.get(h)??m}else if(typeof t.username==="string")a=t.username;let c=typeof t.text==="string"?t.text:"",f=ps(await hs(e,c,n,s)).split(`
|
|
125
125
|
`),l=f[0]+(f.length>1?`
|
|
126
126
|
`+f.slice(1).map((m)=>` ${m}`).join(`
|
|
127
|
-
`):""),d=Wa(t)?"↳ ":"",p=r?`${r} @${a}`:`@${a}`;return`${i} ${d}${p}: ${l}`}async function wf(e,t,n,r,s,o,i){let a=Qe(await
|
|
127
|
+
`):""),d=Wa(t)?"↳ ":"",p=r?`${r} @${a}`:`@${a}`;return`${i} ${d}${p}: ${l}`}async function wf(e,t,n,r,s,o,i){let a=Qe(await dn(e,t,20,i?void 0:n||void 0,i,r.cookie)),c=Tr(a.messages).map(Qe).reverse(),u=Qe(a.response_metadata),f=a.has_more===!0&&typeof u.next_cursor==="string"?u.next_cursor:void 0,l=[];if(r.watchThread&&!i){let y=Qe(await pa(e,t,r.watchThread,50,r.cookie));l=Tr(y.messages).map(Qe).filter((E)=>(typeof E.ts==="string"?E.ts:"")!==r.watchThread)}let d=[...c.map((y)=>({m:y,fromHistory:!0})),...l.map((y)=>({m:y,fromHistory:!1}))].sort((y,E)=>La(typeof y.m.ts==="string"?y.m.ts:"")-La(typeof E.m.ts==="string"?E.m.ts:"")),p=[],m=n,h=!1;for(let{m:y,fromHistory:E}of d){let F=typeof y.ts==="string"?y.ts:"";if(!F||s.has(F))continue;let A=typeof y.subtype==="string"?y.subtype:"";if(A==="message_changed"||A==="message_deleted")continue;if(r.thread){if((typeof y.thread_ts==="string"?y.thread_ts:F)!==r.thread&&F!==r.thread)continue}if(r.watchThread&&Wa(y)){if((typeof y.thread_ts==="string"?y.thread_ts:"")!==r.watchThread)continue}if(r.me&&r.myUserId){if(!(typeof y.text==="string"?y.text:"").includes(`<@${r.myUserId}>`))continue}if(s.add(F),s.size>1000){let B=s.values().next().value;if(B!==void 0)s.delete(B)}if(p.push(await bf(e,y,o,void 0,r.cookie)),E)m=F;let k=typeof y.user==="string"?y.user:"";if(!r.myUserId||k!==r.myUserId)h=!0}return{newCursor:m,lines:p,hasMore:a.has_more===!0,nextPageCursor:f,emittedOther:h}}function Ff(e){if(e.includes("slack.com")){let t=Sr(e),n=t?.threadTs??t?.ts;if(n)return n;throw Error(`--watch-thread: could not extract a timestamp from "${e}"`)}if(/^\d{10}\.\d{6}$/.test(e))return e;if(/^\d{16}$/.test(e))return`${e.slice(0,10)}.${e.slice(10)}`;throw Error(`--watch-thread: "${e}" is not a valid ts or permalink`)}async function Ua(e,t,n={},r){if(n.me&&!t)console.error(`slack tail --me requires a <target> channel.
|
|
128
128
|
Cross-channel mention streaming is not yet supported.
|
|
129
|
-
Use: slack tail "#channel" --me`),process.exit(1);if(!t)console.error("Usage: slack tail <#channel|@user>\n Run `slack tail --help` for details."),process.exit(1);let s=await ya(e,t,n.cookie),o=n.interval??60000,i=n.timeout?Je.now()+ja(n.timeout)*1000:1/0,a=new Map,c=new Set;try{let h=Qe(await ba(e,s,n.cookie));if(Qe(h.channel).is_archived===!0)console.error("Warning: this channel is archived — no new messages will arrive.")}catch(h){let y=h instanceof Error?h.message:String(h);if(y.includes("not_in_channel"))console.error("Error: you are not a member of that channel. Join it in Slack first, then retry."),process.exit(1);if(y.includes("missing_scope"))console.error("Error: token lacks the required history scope. Check your token's channels:history (or groups:history) permission."),process.exit(1);if(y.includes("channel_not_found"))console.error("Error: channel not found — it may be a private channel inaccessible with your token."),process.exit(1);console.error(`Warning: preflight check failed: ${y}`)}let u="";if(n.since){let h=ja(n.since);u=(Je.now()/1000-h).toFixed(6)}else{let h=Qe(await
|
|
129
|
+
Use: slack tail "#channel" --me`),process.exit(1);if(!t)console.error("Usage: slack tail <#channel|@user>\n Run `slack tail --help` for details."),process.exit(1);let s=await ya(e,t,n.cookie),o=n.interval??60000,i=n.timeout?Je.now()+ja(n.timeout)*1000:1/0,a=new Map,c=new Set;try{let h=Qe(await ba(e,s,n.cookie));if(Qe(h.channel).is_archived===!0)console.error("Warning: this channel is archived — no new messages will arrive.")}catch(h){let y=h instanceof Error?h.message:String(h);if(y.includes("not_in_channel"))console.error("Error: you are not a member of that channel. Join it in Slack first, then retry."),process.exit(1);if(y.includes("missing_scope"))console.error("Error: token lacks the required history scope. Check your token's channels:history (or groups:history) permission."),process.exit(1);if(y.includes("channel_not_found"))console.error("Error: channel not found — it may be a private channel inaccessible with your token."),process.exit(1);console.error(`Warning: preflight check failed: ${y}`)}let u="";if(n.since){let h=ja(n.since);u=(Je.now()/1000-h).toFixed(6)}else{let h=Qe(await dn(e,s,1,void 0,void 0,n.cookie)),y=Tr(h.messages).map(Qe);if(y.length>0&&typeof y[0]?.ts==="string")u=y[0].ts,c.add(u);else u=(Je.now()/1000).toFixed(6)}let f;if(n.me||n.exitOnMessage)f=(await Xt(e,n.cookie)).userId||void 0;let l;if(n.watchThread!==void 0)try{l=Ff(n.watchThread)}catch(h){console.error(h instanceof Error?h.message:String(h)),process.exit(1)}let d={...n.thread!==void 0?{thread:n.thread}:{},...l!==void 0?{watchThread:l}:{},...n.me!==void 0?{me:n.me}:{},...f!==void 0?{myUserId:f}:{},...n.cookie!==void 0?{cookie:n.cookie}:{}};if(e.startsWith("xoxc-")&&n.cookie!==void 0&&n.noRtm!==!0&&n.since===void 0&&n.timeout===void 0&&n.exitOnMessage!==!0){if(await Je.tailRTM(e,n.cookie,s,d,c,a,r),r?.aborted)return;console.error("RTM unavailable — switching to polling.")}let p=!0,m=Je.now();while(!r?.aborted){if(Je.now()>=i)return;let h=!1;try{let F=Je.now()-m,A=o>0&&F>o*5,k,B=!0;do{let{newCursor:I,lines:R,nextPageCursor:V,emittedOther:L}=await wf(e,s,u,d,c,a,k);if(u=I,p&&B&&n.since&&R.length===0)process.stdout.write(`(no messages in the last ${n.since} — watching for new)
|
|
130
130
|
`);B=!1;for(let ne of R)process.stdout.write(ne+`
|
|
131
|
-
`);if(L)h=!0;k=A?V:void 0}while(k);p=!1}catch(E){if(E instanceof Ke){console.error(`Warning: Slack rate limit hit — backing off for ${E.retryAfter}s`),await Je.sleep(E.retryAfter*1000);continue}throw E}if(n.exitOnMessage&&h)return;m=Je.now();let y=i-Je.now();if(y<=0)return;await Je.sleep(Math.min(o,y))}}var Be=[{name:"one",glyph:"1️⃣"},{name:"two",glyph:"2️⃣"},{name:"three",glyph:"3️⃣"},{name:"four",glyph:"4️⃣"},{name:"five",glyph:"5️⃣"},{name:"six",glyph:"6️⃣"},{name:"seven",glyph:"7️⃣"},{name:"eight",glyph:"8️⃣"},{name:"nine",glyph:"9️⃣"},{name:"keycap_ten",glyph:"\uD83D\uDD1F"}],ms=Be.length,Ds="question";function
|
|
132
|
-
`),n=t[t.length-2];if(n===void 0||!n.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")||!n.endsWith("_"))return[];return[...n.matchAll(/<@([UW][A-Z0-9]+)>/g)].map((r)=>r[1])}function
|
|
133
|
-
`);if(n.length<2)return e;if(
|
|
134
|
-
`);return r===e?e:r}function Cf(e){return e!==void 0&&e.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")&&e.endsWith("_")}var
|
|
131
|
+
`);if(L)h=!0;k=A?V:void 0}while(k);p=!1}catch(E){if(E instanceof Ke){console.error(`Warning: Slack rate limit hit — backing off for ${E.retryAfter}s`),await Je.sleep(E.retryAfter*1000);continue}throw E}if(n.exitOnMessage&&h)return;m=Je.now();let y=i-Je.now();if(y<=0)return;await Je.sleep(Math.min(o,y))}}var Be=[{name:"one",glyph:"1️⃣"},{name:"two",glyph:"2️⃣"},{name:"three",glyph:"3️⃣"},{name:"four",glyph:"4️⃣"},{name:"five",glyph:"5️⃣"},{name:"six",glyph:"6️⃣"},{name:"seven",glyph:"7️⃣"},{name:"eight",glyph:"8️⃣"},{name:"nine",glyph:"9️⃣"},{name:"keycap_ten",glyph:"\uD83D\uDD1F"}],ms=Be.length,Ds="question";function Rr(e){let t=e.split(`
|
|
132
|
+
`),n=t[t.length-2];if(n===void 0||!n.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")||!n.endsWith("_"))return[];return[...n.matchAll(/<@([UW][A-Z0-9]+)>/g)].map((r)=>r[1])}function Mr(e,t){let n=e.split(`
|
|
133
|
+
`);if(n.length<2)return e;if(Rr(e).length)n.splice(n.length-2,1);if(t.length)n.splice(n.length-1,0,`${"_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: "}${t.map((s)=>`<@${s}>`).join(", ")}_`);let r=n.join(`
|
|
134
|
+
`);return r===e?e:r}function Cf(e){return e!==void 0&&e.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")&&e.endsWith("_")}var Br="white_check_mark",gs=`:${Br}: `;function Ka(e){return`:${Be[e].name}:`}function Ja(e,t){let n=Be[t];for(let r of[Ka(t),n.glyph]){if(e.startsWith(`${r} `))return e.slice(r.length+1);if(e===r)return""}return null}function Ef(e){return Be.some((t,n)=>Ja(e,n)!==null)}function Gt(e){return e.replace(/\s*\n\s*/g," ")}function za(e,t,n,r,s){let o=[`:question: *${e}*`];if(t)o.push("",t);if(n.length){if(o.push(""),o.push(...n.map((i,a)=>`${Ka(a)} ${Gt(i)}`)),r.length)o.push(""),o.push(...r.map((i,a)=>`(${a+11}) ${Gt(i)}`)),o.push("_11 番目以降はリアクションがないので、返信で答えてください。_");o.push(""),o.push(s?"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージの *スレッド* で返信してください (チャンネルへの通常投稿は回答として拾いません)。_":"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージに返信してください。_")}else o.push(""),o.push(s?"_このメッセージの *スレッド* で返信してください。本文がそのまま回答になります (チャンネルへの通常投稿は回答として拾いません)。_":"_このメッセージに返信してください。本文がそのまま回答になります。_");return o.join(`
|
|
135
135
|
`)}function Ha(e,t,n){let r=t.answer.split(`
|
|
136
136
|
`).map((s)=>`> ${s}`).join(`
|
|
137
137
|
`);return`${gs}*${e}*
|
|
@@ -141,83 +141,83 @@ ${r}`}function qa(e){if(!e.trim())return"本文が空です (bot 投稿や添付
|
|
|
141
141
|
`),n=t[t.length-1]??"";if(e.startsWith(gs))return"回答済みマーク付きですが、引用された回答本文が見つかりません";if(!/_$/.test(n))return"末尾が `ask` の案内文ではありません — このメッセージは `slack ask` で投稿されたものではないか、本文が編集されています";if(!t[0].startsWith(":question: ")&&!t[0].startsWith("*"))return"先頭が質問文 (太字) ではありません — 本文が編集されている可能性があります";return"選択肢の並びを読み取れません — 番号が 1 から連番になっていないか、本文が編集されています"}function Ya(e){let t=e.split(`
|
|
142
142
|
`);if(e.startsWith(gs)){let l=t[0].slice(gs.length).replace(/^\*/,"").replace(/\*$/,""),d=t.filter((p)=>p.startsWith("> ")).map((p)=>p.slice(2)).join(`
|
|
143
143
|
`);if(!d)return{kind:"other"};return{kind:"resolved",question:l,answer:d}}let n=t[t.length-1]??"",r,s;switch(n){case"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージの *スレッド* で返信してください (チャンネルへの通常投稿は回答として拾いません)。_":r=!0,s=!0;break;case"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージに返信してください。_":r=!1,s=!0;break;case"_このメッセージの *スレッド* で返信してください。本文がそのまま回答になります (チャンネルへの通常投稿は回答として拾いません)。_":r=!0,s=!1;break;case"_このメッセージに返信してください。本文がそのまま回答になります。_":r=!1,s=!1;break;default:return{kind:"other"}}let o=t[0].startsWith(":question: ")?t[0].slice(11):t[0];if(t[0]=o,!t[0].startsWith("*"))return{kind:"other"};let i=0;while(i<t.length&&!(t[i].endsWith("*")&&(i>0||t[0].length>1)))i++;if(i>=t.length)return{kind:"other"};let a=t.slice(0,i+1).join(`
|
|
144
|
-
`).replace(/^\*/,"").replace(/\*$/,""),c=[],u=[];if(s){let f=t.length-2;if(Cf(t[f]))f--;if(t[f]!=="")return{kind:"other"};if(f--,t[f]==="_11 番目以降はリアクションがないので、返信で答えてください。_"){f--;while(f>=0&&/^\(\d+\) /.test(t[f]))u.unshift(t[f].replace(/^\(\d+\) /,"")),f--;if(t[f]!=="")return{kind:"other"};f--}let l=[];while(f>=0){let d=t[f];if(!Ef(d))break;l.unshift(d),f--}if(!l.length||l.length>ms)return{kind:"other"};for(let d=0;d<l.length;d++){let p=Ja(l[d],d);if(p===null)return{kind:"other"};c.push(p)}if(t[f]!=="")return{kind:"other"};if(f<i+1)return{kind:"other"};for(let d=0;d<u.length;d++)if(!t.includes(`(${d+11}) ${u[d]}`))return{kind:"other"}}return{kind:"open",question:a,reactable:c,overflow:u,threadOnly:r}}function
|
|
144
|
+
`).replace(/^\*/,"").replace(/\*$/,""),c=[],u=[];if(s){let f=t.length-2;if(Cf(t[f]))f--;if(t[f]!=="")return{kind:"other"};if(f--,t[f]==="_11 番目以降はリアクションがないので、返信で答えてください。_"){f--;while(f>=0&&/^\(\d+\) /.test(t[f]))u.unshift(t[f].replace(/^\(\d+\) /,"")),f--;if(t[f]!=="")return{kind:"other"};f--}let l=[];while(f>=0){let d=t[f];if(!Ef(d))break;l.unshift(d),f--}if(!l.length||l.length>ms)return{kind:"other"};for(let d=0;d<l.length;d++){let p=Ja(l[d],d);if(p===null)return{kind:"other"};c.push(p)}if(t[f]!=="")return{kind:"other"};if(f<i+1)return{kind:"other"};for(let d=0;d<u.length;d++)if(!t.includes(`(${d+11}) ${u[d]}`))return{kind:"other"}}return{kind:"open",question:a,reactable:c,overflow:u,threadOnly:r}}function Pr(e){return e.normalize("NFKC").replace(/[*_`~]/g,"").trim().replace(/^[\s"'`「『((\[]+/,"").replace(/[\s"'`」』))\]。..!!??、,]+$/,"").replace(/\s+/g," ").trim().toLowerCase()}function Xa(e,t){let n=Pr(e);if(!n)return{kind:"none"};let r=t.map(Pr),s=new Set;r.forEach((u,f)=>{if(u&&u===n)s.add(f+1)}),Be.forEach((u,f)=>{if(f<t.length&&e.trim()===u.glyph)s.add(f+1)});let o=0,i="",a=n.match(/^(\d{1,2})$/);if(a)o=Number(a[1]);else if(a=n.match(/^(\d{1,2})(?:\s*[.)::、。\-\]]\s*|\s+)(.*)$/)){if(o=Number(a[1]),i=Pr(a[2]),!i)return{kind:"none"};if(/^\d+$/.test(i))return{kind:"none"}}if(o>=1&&o<=t.length&&(i===""||i===r[o-1]))s.add(o);let c=[...s].sort((u,f)=>u-f);if(!c.length)return{kind:"none"};if(c.length>1)return{kind:"ambiguous",indexes:c};return{kind:"chosen",index:c[0]}}var Nr=[{name:"one",glyph:"1️⃣"},{name:"two",glyph:"2️⃣"},{name:"three",glyph:"3️⃣"},{name:"four",glyph:"4️⃣"},{name:"five",glyph:"5️⃣"},{name:"six",glyph:"6️⃣"},{name:"seven",glyph:"7️⃣"},{name:"eight",glyph:"8️⃣"},{name:"nine",glyph:"9️⃣"},{name:"keycap_ten",glyph:"\uD83D\uDD1F"}],gm=Nr.length;function vr(e){let t=e.split(`
|
|
145
145
|
`),n=t[t.length-2];if(n===void 0||!n.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")||!n.endsWith("_"))return[];return[...n.matchAll(/<@([UW][A-Z0-9]+)>/g)].map((r)=>r[1])}function Ga(e,t){let n=e.split(`
|
|
146
|
-
`);if(n.length<2)return e;if(
|
|
147
|
-
`);return r===e?e:r}function Va(e){return e!==void 0&&e.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")&&e.endsWith("_")}var xf="white_check_mark",mm=`:${xf}: `;var ze=
|
|
148
|
-
`),s?[]:i)}function nc(e,t){let n=t.reduce((s,o)=>s+o.count,0),r=[`${
|
|
146
|
+
`);if(n.length<2)return e;if(vr(e).length)n.splice(n.length-2,1);if(t.length)n.splice(n.length-1,0,`${"_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: "}${t.map((s)=>`<@${s}>`).join(", ")}_`);let r=n.join(`
|
|
147
|
+
`);return r===e?e:r}function Va(e){return e!==void 0&&e.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")&&e.endsWith("_")}var xf="white_check_mark",mm=`:${xf}: `;var ze=Nr,Vt=ze.length,gn="ballot_box_with_ballot",jr=`:${gn}: `,Qa="_下のリアクションで投票してください (1 人 1 票、押し直しで変更できます)。_",ec="_下のリアクションで投票してください (当てはまるものを *いくつでも* 押せます)。_",ys="_締切: ",bs="_",Wr="bar_chart",Lr=`:${Wr}: `;function ws(e){return`:${ze[e].name}:`}function Za(e,t){for(let n of[ws(t),ze[t].glyph])if(e.startsWith(`${n} `))return e.slice(n.length+1);return null}function _f(e){return ze.some((t,n)=>e.startsWith(`${ws(n)} `)||e.startsWith(`${t.glyph} `))}function pn(e){return e.replace(/\s*\n\s*/g," ")}function tc(e,t,n,r={}){let s=!!r.multi,o=r.deadline??"",i=r.invalid??[];if(!n.length||n.length>Vt)throw Error(`poll needs 1..${Vt} choices, got ${n.length}`);let a=[`${jr}*${e}*`];if(t)a.push("",t);if(a.push(""),a.push(...n.map((c,u)=>`${ws(u)} ${pn(c)}`)),a.push(""),o)a.push(`${ys}${pn(o)}${bs}`);return a.push(s?ec:Qa),Ga(a.join(`
|
|
148
|
+
`),s?[]:i)}function nc(e,t){let n=t.reduce((s,o)=>s+o.count,0),r=[`${Lr}*${e}*`,`_投票終了 (計 ${n} 票)_`,""];return r.push(...t.map((s,o)=>`${ws(o)} ×${s.count} ${pn(s.choice)}`)),r.join(`
|
|
149
149
|
`)}function sc(e){let t=e.split(`
|
|
150
|
-
`);if(e.startsWith(
|
|
151
|
-
`).replace(/^\*/,"").replace(/\*$/,""),i=t.length-2,a=
|
|
150
|
+
`);if(e.startsWith(Lr)){let d=t[0].slice(Lr.length).replace(/^\*/,"").replace(/\*$/,""),p=[];for(let m=0;m<ze.length;m++){let h=t.map((E)=>Za(E,m)).find((E)=>E!==null&&E.startsWith("×"));if(h===void 0)break;let y=/^×(\d+) (.*)$/.exec(h);if(!y)return{kind:"other"};p.push({choice:y[2],count:Number(y[1])})}if(!p.length)return{kind:"other"};return{kind:"closed",question:d,tallies:p}}let n=t[t.length-1]??"",r;if(n===Qa)r=!1;else if(n===ec)r=!0;else return{kind:"other"};if(t[0].startsWith(jr))t[0]=t[0].slice(jr.length);if(!t[0].startsWith("*"))return{kind:"other"};let s=0;while(s<t.length&&!(t[s].endsWith("*")&&(s>0||t[0].length>1)))s++;if(s>=t.length)return{kind:"other"};let o=t.slice(0,s+1).join(`
|
|
151
|
+
`).replace(/^\*/,"").replace(/\*$/,""),i=t.length-2,a=vr(e);if(Va(t[i]))i--;let c="",u=t[i];if(u!==void 0&&u.startsWith(ys)&&u.endsWith(bs)&&u.length>ys.length+bs.length)c=u.slice(ys.length,-bs.length),i--;if(t[i]!=="")return{kind:"other"};i--;let f=[];while(i>=0){let d=t[i];if(!_f(d))break;f.unshift(d),i--}if(!f.length||f.length>Vt)return{kind:"other"};let l=[];for(let d=0;d<f.length;d++){let p=Za(f[d],d);if(p===null)return{kind:"other"};l.push(p)}if(t[i]!=="")return{kind:"other"};if(i<s+1)return{kind:"other"};return{kind:"open",question:o,choices:l,multi:r,deadline:c,invalid:a}}function rc(e,t,n,r){let s=new Map(t.map((u)=>[u.name,u.users])),o=e.map((u,f)=>(s.get(ze[f].name)??[]).filter((l)=>!n.has(l))),i=[];if(!r){let u=new Map;for(let f of o)for(let l of f)u.set(l,(u.get(l)??0)+1);for(let[f,l]of u)if(l>1)i.push(f)}let a=new Set(i),c=o.map((u)=>u.filter((f)=>!a.has(f)));return{tallies:e.map((u,f)=>({choice:u,count:c[f].length})),voters:c,ambiguous:i}}function kf(e=process.env){return!!e.VITEST||e.NODE_ENV==="test"||!!e.BUN_TEST}var oc={isTestEnv:()=>kf(),sleep:(e)=>oc.isTestEnv()?Promise.resolve():new Promise((t)=>setTimeout(t,e))};function Sf(e=process.env){let t=e.SLACK_REACTION_SEED_GAP_MS;if(t===void 0||t==="")return 1100;let n=Number(t);if(!Number.isFinite(n)||n<0)return 1100;return n}async function Ur(e,t,n,r=Sf()){for(let s=0;s<e.length;s++){let o=!0;try{await t(e[s])}catch(i){o=!1,n(e[s],i)}if(o&&r>0&&s<e.length-1)await oc.sleep(r)}}class Mt extends Error{retryAfter;constructor(e){super(`Slack rate limited — retry after ${e}s`);this.name="RateLimitError",this.retryAfter=e}}function zr(){return(process.env.SLACK_API_BASE??"https://slack.com/api").replace(/\/$/,"")}async function cc(e,t,n,r){r=e.startsWith("xoxc-")?r??Yt():void 0;let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${zr()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Mt(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Mt(60);if(a==="invalid_auth"&&e.startsWith("xoxc-")&&!r)throw Error(`Desktop app token (xoxc-) needs its session cookie to be accepted by the public Slack API.
|
|
152
152
|
Attach it: slack auth chrome (macOS) or slack auth firefox
|
|
153
153
|
Or replace the token with an xoxp- user token:
|
|
154
154
|
slack auth login`);if((a==="missing_scope"||a==="cannot_dm_bot")&&e.startsWith("xoxb-"))throw Error(`Slack error on ${t}: ${a} — ${a==="cannot_dm_bot"?`you're authenticated as a bot, so "@you" is the bot itself and it can't DM itself`:"this bot token lacks the user scope this action needs"}.
|
|
155
155
|
Tailing/DMing people and listing users need a user session, not a bot token.
|
|
156
156
|
Switch workspace: slack auth ls then slack auth use <name>
|
|
157
|
-
Or import your Slack desktop session: slack auth login`);throw Error(`Slack error on ${t}: ${a}`)}return i}async function Af(e,t,n,r){let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${
|
|
157
|
+
Or import your Slack desktop session: slack auth login`);throw Error(`Slack error on ${t}: ${a}`)}return i}async function Af(e,t,n,r){let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${zr()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Mt(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Mt(60);if((a==="invalid_auth"||a==="not_authed")&&!e.startsWith("xoxc-"))throw Error(`The draft API requires a desktop app session token (xoxc-).
|
|
158
158
|
Import from Slack desktop: slack auth login`);if((a==="invalid_auth"||a==="not_authed")&&!r)throw Error(`drafts.list also requires the xoxd session cookie.
|
|
159
|
-
Attach it with: slack auth chrome (macOS) or slack auth firefox`);throw Error(`Slack error on ${t}: ${a}`)}return i}function Bt(e,t,n={},r){let s=new URLSearchParams({token:e,...n});return Af(e,t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()},r)}function ie(e,t,n,r){let s=new URLSearchParams(n).toString();return cc(e,`${t}?${s}`,{method:"GET"},r)}function He(e,t,n,r){return cc(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)},r)}async function uc(e,t){let n=await ie(e,"auth.test",{},t);return{team:n.team??"",teamId:n.team_id??"",url:n.url??"",user:n.user??"",userId:n.user_id??""}}async function lc(e,t){t=e.startsWith("xoxc-")?t??Yt():void 0;let n={Authorization:`Bearer ${e}`};if(t)n.Cookie=`d=${t}`;let r=await fetch(`${
|
|
159
|
+
Attach it with: slack auth chrome (macOS) or slack auth firefox`);throw Error(`Slack error on ${t}: ${a}`)}return i}function Bt(e,t,n={},r){let s=new URLSearchParams({token:e,...n});return Af(e,t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()},r)}function ie(e,t,n,r){let s=new URLSearchParams(n).toString();return cc(e,`${t}?${s}`,{method:"GET"},r)}function He(e,t,n,r){return cc(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)},r)}async function uc(e,t){let n=await ie(e,"auth.test",{},t);return{team:n.team??"",teamId:n.team_id??"",url:n.url??"",user:n.user??"",userId:n.user_id??""}}async function lc(e,t){t=e.startsWith("xoxc-")?t??Yt():void 0;let n={Authorization:`Bearer ${e}`};if(t)n.Cookie=`d=${t}`;let r=await fetch(`${zr()}/auth.test`,{method:"GET",headers:n});if(r.status===429){let i=parseInt(r.headers.get("retry-after")??"60",10);throw new Mt(isNaN(i)?60:i)}let s=r.headers.get("x-oauth-scopes")??"",o=await r.json();if(o.ok!==!0)throw Error(`Slack error on auth.test: ${o.error??"unknown"}`);return{userId:o.user_id??"",user:o.user??"",botId:o.bot_id??"",team:o.team??"",url:o.url??"",scopes:s.split(",").map((i)=>i.trim()).filter(Boolean)}}async function Ve(e,t,n=20,r,s,o,i){let a={channel:t,limit:String(n)};if(r!==void 0)a.oldest=r;if(s!==void 0)a.cursor=s;if(i)a.inclusive="true";return ie(e,"conversations.history",a,o)}async function qe(e,t,n,r=50,s){return ie(e,"conversations.replies",{channel:t,ts:n,limit:String(r)},s)}async function fc(e,t,n){return ie(e,"files.info",{file:t},n)}async function dc(e,t={},n){let r={count:String(Math.min(Math.max(t.count??100,1),200)),page:String(Math.max(t.page??1,1))};if(t.types)r.types=t.types;if(t.channel)r.channel=t.channel;if(t.user)r.user=t.user;return ie(e,"files.list",r,n)}async function hc(e,t,n={},r){let s={list_id:t};if(n.limit)s.limit=String(n.limit);if(n.cursor)s.cursor=n.cursor;return Bt(e,"lists.records.list",s,r)}async function pc(e,t,n,r,s){return ie(e,"search.messages",{query:t,sort:"timestamp",sort_dir:"desc",count:String(Math.min(Math.max(n,1),100)),page:String(Math.max(r,1))},s)}async function gc(e,t,n){return pc(e,t,100,1,n)}async function Hr(e,t,n,r){let o=1,i=[],a={ok:!0,messages:{}};while(!0){let u=await pc(e,t,100,o,r),f=mn(u,["messages","matches"]),l=Array.isArray(f)?f:[];i.push(...l);let d=Number(mn(u,["messages","paging","pages"])??1);if(a=u,l.length===0||o>=d||i.length>=n)break;o+=1}let c=a;if(!c.messages)c.messages={};return c.messages.matches=i.slice(0,n),c}async function Fs(e,t,n,r,s,o,i){let a=i?{channel:t,text:n}:{channel:t,text:n,blocks:[{type:"markdown",text:n}]};if(r!==void 0)a.thread_ts=r;if(s&&r!==void 0)a.reply_broadcast=!0;return(await He(e,"chat.postMessage",a,o)).ts??""}async function mc(e,t,n,r,s,o){let i={channel:t,text:n,post_at:r,blocks:[{type:"markdown",text:n}]};if(s!==void 0)i.thread_ts=s;return(await He(e,"chat.scheduleMessage",i,o)).scheduled_message_id??""}async function Dc(e,t,n){let r={};if(t)r.channel=t;return ie(e,"chat.scheduledMessages.list",r,n)}async function yc(e,t,n,r){await He(e,"chat.deleteScheduledMessage",{channel:t,scheduled_message_id:n},r)}async function Dn(e,t,n,r){return(await ie(e,"chat.getPermalink",{channel:t,message_ts:n},r)).permalink??""}async function Zt(e,t,n,r,s,o){return(await He(e,"chat.update",o?{channel:t,ts:n,text:r}:{channel:t,ts:n,text:r,blocks:[{type:"markdown",text:r}]},s)).ts??n}async function bc(e,t,n,r){await He(e,"chat.delete",{channel:t,ts:n},r)}async function Qt(e,t,n,r,s){await He(e,"reactions.add",{channel:t,timestamp:n,name:r},s)}async function wc(e,t,n,r){return((await ie(e,"reactions.get",{channel:t,timestamp:n,full:"true"},r)).message?.reactions??[]).map((o)=>({name:String(o.name??""),users:Array.isArray(o.users)?o.users.map(String):[]}))}async function yn(e,t,n,r,s){await He(e,"reactions.remove",{channel:t,timestamp:n,name:r},s)}async function Fc(e,t,n=!1,r){let s=await He(e,"conversations.create",{name:t,is_private:n},r);return{id:s.channel?.id??"",name:s.channel?.name??t}}async function Cc(e,t,n,r){await He(e,"conversations.invite",{channel:t,users:n.join(",")},r)}async function bn(e,t){let n=[],r="";while(!0){let s={limit:"200",types:"public_channel,private_channel,im,mpim"};if(r)s.cursor=r;let o=await ie(e,"conversations.list",s,t);if(n.push(...o.channels??[]),r=o.response_metadata?.next_cursor??"",!r)break}return{channels:n}}async function et(e,t,n){let s=(await He(e,"conversations.open",{users:t},n)).channel?.id;if(!s)throw Error(`Failed to open DM with user ${t}`);return s}async function Ec(e,t,n){let r="";while(!0){let s={types:"im",limit:"200"};if(r)s.cursor=r;let o=await ie(e,"conversations.list",s,n);for(let i of o.channels??[])if(i.user===t)return String(i.id??"");if(r=o.response_metadata?.next_cursor??"",!r)break}return""}async function Kr(e,t,n,r){let s=await Ec(e,t,n);if(s)return s;let o=r?`${r} (${t})`:t;throw Error(`No existing DM with ${o}. Open it once in Slack first.`)}function Rt(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function ic(e,t){let n=Rt(e.name??""),r=Rt(e.real_name??e.profile?.real_name??""),s=Rt(e.profile?.display_name??"");return n===t||r===t||!!s&&s===t}var xc=200;async function _c(e,t,n){let r=0,s=new Set,o="";while(!0){let f={limit:"200"};if(o)f.cursor=o;let l=await ie(e,"users.list",f,n);for(let d of l.members??[]){if(r++,d.id)s.add(d.id);if(ic(d,t))return{id:d.id??"",workspaceCount:r,connectCount:0,skipped:0,capped:!1}}if(o=l.response_metadata?.next_cursor??"",!o)break}let i=0,a=0,c=!1,u="";while(!0){let f={types:"im",limit:"200"};if(u)f.cursor=u;let l=await ie(e,"conversations.list",f,n);for(let d of l.channels??[]){let p=d.user;if(!p||s.has(p))continue;if(i>=xc){c=!0;break}s.add(p),i++;let m;try{m=(await ie(e,"users.info",{user:p},n)).user}catch(h){if(h instanceof Mt)throw h;a++;continue}if(m&&ic(m,t))return{id:p,dm:String(d.id??""),workspaceCount:r,connectCount:i,skipped:a,capped:c}}if(c)break;if(u=l.response_metadata?.next_cursor??"",!u)break}return{id:"",workspaceCount:r,connectCount:i,skipped:a,capped:c}}function kc(e,t){if(t.workspaceCount===0)return Error(`Cannot resolve ${e}: users.list returned no members at all, so nothing could have matched.
|
|
160
160
|
`+`That is a token or scope fault, not a wrong handle — this says nothing about whether ${e} exists.
|
|
161
161
|
Check who you are: slack auth ls`);let n=t.connectCount?`${t.workspaceCount} workspace account(s) and ${t.connectCount} Slack Connect DM partner(s)`:`${t.workspaceCount} workspace account(s)`,r=[];if(t.capped)r.push(`stopped after ${xc} Slack Connect DM partners, so there may be more`);if(t.skipped)r.push(`${t.skipped} DM partner profile(s) could not be read and were never compared`);return Error(`User not found: ${e} — searched ${n}, none matched.
|
|
162
162
|
`+(r.length?`This search was incomplete: ${r.join("; ")}.
|
|
163
163
|
`:"")+`Slack Connect people from another workspace are not in users.list, so if they never
|
|
164
164
|
DMed you they cannot be found by name at all. Look them up and use their ID:
|
|
165
|
-
slack user ls --external`)}async function tt(e,t,n){let r=t.startsWith("@")?t.slice(1):t;if(
|
|
166
|
-
`)}catch{}}function Mc(e,t){return e?`${e} ${t}`:void 0}function xs(e,t,n){if(!Es)return;let r=Mc(t,n);if(!r)return;let s=
|
|
167
|
-
`)[0]??"",emoji:F,keep:F[0]})}if(f=p.response_metadata?.next_cursor||void 0,!f||m.length===0)break;if(u>=s){l=!0;break}}if(r.fix)for(let d of c)try{try{await _e("reactions.add",()=>ts(e,t,d.ts,d.keep,o))}catch(p){if(!(p instanceof Error)||!/already_reacted/.test(p.message))throw p}for(let p of d.emoji){if(p===d.keep)continue;await _e("reactions.remove",()=>ns(e,t,d.ts,p,o))}d.fixed=!0}catch(p){d.fixed=!1,d.error=p instanceof Error?p.message:String(p)}return{scanned:u,findings:c,truncated:l}}var qf=!0,Yf;function
|
|
168
|
-
`;case"t":return"\t";case"\\":case"¥":return n==="¥"?"¥":"\\";default:return t}})}function vt(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function dt(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function Xf(e,t){let n=vt(t),r=dt(e.profile);for(let o of[e.name,e.real_name,r.display_name,r.real_name])if(typeof o==="string"&&o&&vt(o)===n)return!0;let s=typeof r.email==="string"?r.email.toLowerCase():"";return s!==""&&s===t.toLowerCase()}function Gf(e){let t=dt(e.profile),n=new Set;for(let r of[t.display_name,e.real_name,e.name,t.real_name])if(typeof r==="string"&&r){let s=vt(r);if(s.length>=2)n.add(s)}return[...n]}function Vf(e,t){let n=vt(e),r,s=!1;for(let o of t){let i=typeof o.id==="string"?o.id:"";if(!i)continue;for(let a of Gf(o)){let c=-1;if(n===a)c=e.length;else for(let u of Xc)if(e.length>u.length&&e.endsWith(u)&&vt(e.slice(0,e.length-u.length))===a){c=e.length-u.length;break}if(c<0)continue;if(!r||a.length>r.formLen)r={userId:i,matchLen:c,formLen:a.length,display:
|
|
169
|
-
`)),o=await jt(e,t,n,r.cookie);for(let i of
|
|
170
|
-
⚠ QUIET HOURS (${o}:00-${i}:00) — this will buzz a phone.${r?"":" Their local time may differ."} Send only for a production incident; otherwise hold it until morning.`}function td(e){try{return new Intl.DateTimeFormat("en-GB",{timeZone:e}),!0}catch{return!1}}function
|
|
165
|
+
slack user ls --external`)}async function tt(e,t,n){let r=t.startsWith("@")?t.slice(1):t;if(Jr(r))return r;if(!t.startsWith("@"))throw Error(`Expected @user or a user ID, got: ${t}`);let s=Rt(r),o=await ie(e,"auth.test",{},n);if(s==="you"||s==="me"||Rt(o.user??"")===s){if(!o.user_id)throw Error("auth.test did not return user_id");return o.user_id}let i=await _c(e,s,n);if(i.id)return i.id;throw kc(t,i)}function Nt(e){let t=e.match(/(?:app\.slack\.com\/client\/T[A-Za-z0-9]+|[A-Za-z0-9-]+\.slack\.com\/archives)\/([A-Za-z0-9]+)(?:\/p(\d{10})(\d{6}))?/);if(!t)return;let n=t[1],r=t[2]&&t[3]?`${t[2]}.${t[3]}`:void 0,s=e.indexOf("?"),o=s>=0?new URLSearchParams(e.slice(s)):void 0,i=o?.get("thread_ts")??void 0,u={channel:o?.get("cid")??void 0??n};if(r)u.ts=r;if(i)u.threadTs=i;return u}function $f(e){return Nt(e)?.channel}function ac(e){return/^[CDG][A-Z0-9]{8,}$/.test(e)}function Jr(e){return/^[UW][A-Z0-9]{6,}$/.test(e)}async function De(e,t,n){let r=$f(t);if(r)return r;if(!t.startsWith("@")&&!t.startsWith("#")){if(ac(t))return t;if(Jr(t))return Kr(e,t,n);throw Error(`Target must start with # or @ (or be a Slack URL/ID), got: ${t}`)}if(t.startsWith("#")&&ac(t.slice(1)))return t.slice(1);let s=t.startsWith("@"),o=t.slice(1),i=Rt(o);if(s){if(Jr(o))return Kr(e,o,n);let u=await ie(e,"auth.test",{},n);if(i==="you"||i==="me"||Rt(u.user??"")===i){let d=u.user_id;if(!d)throw Error("auth.test did not return user_id");return await Ec(e,d,n)||et(e,d,n)}let l=await _c(e,i,n);if(!l.id)throw kc(t,l);if(l.dm)return l.dm;return Kr(e,l.id,n,t)}let a=o.toLowerCase(),c="";while(!0){let u={limit:"200",types:"public_channel,private_channel",exclude_archived:"true"};if(c)u.cursor=c;let f=await ie(e,"conversations.list",u,n);for(let l of f.channels??[])if(String(l.name??"").toLowerCase()===a)return String(l.id??"");if(c=f.response_metadata?.next_cursor??"",!c)break}throw Error(`channel not found: ${t}`)}async function wn(e,t,n){try{let r=await ie(e,"users.info",{user:t},n),s=r.user?.profile?.display_name,o=s&&s.length>0?s:r.user?.real_name??r.user?.name??t,i=r.user?.name??t;return[o,i]}catch{return[t,t]}}async function Ne(e,t,n){try{let r=await ie(e,"users.info",{user:t},n),s=r.user?.profile?.display_name;if(s&&s.length>0)return s;return r.user?.real_name??r.user?.name??t}catch{return t}}async function Sc(e,t){let n=[],r="";while(!0){let s={limit:"200"};if(r)s.cursor=r;let o=await ie(e,"users.list",s,t);if(n.push(...o.members??[]),r=o.response_metadata?.next_cursor??"",!r)break}return{members:n}}async function Ac(e,t,n){let r=[],s="";while(!0){let o={channel:t,limit:"200"};if(s)o.cursor=s;let i=await ie(e,"conversations.members",o,n);if(r.push(...i.members??[]),s=i.response_metadata?.next_cursor??"",!s)break}return r}async function Fn(e,t){return Bt(e,"drafts.list",{},t)}async function $c(e,t,n,r){let{randomUUID:s}=await import("node:crypto"),o=JSON.stringify([{type:"rich_text",elements:[{type:"rich_text_section",elements:[{type:"text",text:n}]}]}]);return Bt(e,"drafts.create",{client_msg_id:s(),destinations:JSON.stringify([{channel_id:t}]),blocks:o,file_ids:JSON.stringify([]),is_from_composer:"true"},r)}async function Oc(e,t,n,r,s){let o=JSON.stringify([{type:"rich_text",elements:[{type:"rich_text_section",elements:[{type:"text",text:r}]}]}]),i=(Date.now()/1000).toFixed(6);return Bt(e,"drafts.update",{draft_id:t,client_last_updated_ts:i,destinations:JSON.stringify([{channel_id:n}]),blocks:o,file_ids:JSON.stringify([])},s)}async function Ic(e,t,n){return Bt(e,"conversations.info",{channel:t},n)}async function Cn(e,t,n){return ie(e,"users.info",{user:t},n)}async function En(e,t,n){return ie(e,"conversations.info",{channel:t},n)}async function Tc(e,t,n){let r=(Date.now()/1000).toFixed(6);return Bt(e,"drafts.delete",{draft_id:t,client_last_updated_ts:r},n)}async function qr(e,t){let n=await Bt(e,"auth.test",{},t);return{userId:String(n.user_id??""),teamId:String(n.team_id??"")}}async function Pc(e,t,n,r={},s){let{statSync:o,readFileSync:i}=await import("node:fs"),{basename:a}=await import("node:path"),c=o(n),u=a(n),f=await ie(e,"files.getUploadURLExternal",{filename:u,length:String(c.size)},s),{upload_url:l,file_id:d}=f;if(!l||!d)throw Error("files.getUploadURLExternal returned no upload_url/file_id");let p=i(n),m=await fetch(l,{method:"POST",headers:{"Content-Type":"application/octet-stream"},body:p});if(!m.ok)throw Error(`Upload PUT failed: ${m.status} ${m.statusText}`);let h={files:[{id:d,title:r.title??u}],channel_id:t};if(r.threadTs)h.thread_ts=r.threadTs;if(r.initialComment)h.initial_comment=r.initialComment;let y=await He(e,"files.completeUploadExternal",h,s),E={fileId:d},F=y.files?.[0]?.permalink;if(F)E.permalink=F;return E}function mn(e,t){let n=e;for(let r of t){if(n===void 0||n===null)return;if(typeof r==="number"){if(!Array.isArray(n))return;n=n[r]??void 0}else{if(typeof n!=="object"||Array.isArray(n))return;n=n[r]}}return n}import{existsSync as jf,readFileSync as Lf}from"node:fs";import{homedir as Wf}from"node:os";import{join as Uf}from"node:path";import{existsSync as Of,mkdirSync as If,readFileSync as Tf,writeFileSync as Pf}from"node:fs";import{homedir as Rf}from"node:os";import{dirname as Mf,join as Bf}from"node:path";var Nf=3600000,Cs={now:()=>Date.now(),path:()=>Bf(process.env.HOME||Rf(),".config","slack-cli","cache.json")},Es=!0,lt;function Rc(){return{channels:{},users:{}}}function Yr(){if(lt)return lt;if(lt=Rc(),!Es)return lt;try{let e=Cs.path();if(!Of(e))return lt;let t=JSON.parse(Tf(e,"utf8"));for(let n of["channels","users"]){let r=t?.[n];if(!r||typeof r!=="object"||Array.isArray(r))continue;for(let[s,o]of Object.entries(r))if(o&&typeof o==="object"&&typeof o.value==="string"&&typeof o.expires==="number")lt[n][s]={value:o.value,expires:o.expires}}}catch{lt=Rc()}return lt}function vf(e){if(!Es)return;try{let t=Cs.path();If(Mf(t),{recursive:!0}),Pf(t,JSON.stringify(e,null,2)+`
|
|
166
|
+
`)}catch{}}function Mc(e,t){return e?`${e} ${t}`:void 0}function xs(e,t,n){if(!Es)return;let r=Mc(t,n);if(!r)return;let s=Yr()[e][r];if(!s)return;if(s.expires<=Cs.now()){delete Yr()[e][r];return}return s.value}function _s(e,t,n,r,s=Nf){if(!Es)return;let o=Mc(t,n);if(!o)return;let i=Yr();i[e][o]={value:r,expires:Cs.now()+s},vf(i)}var Xr={marker:"pushpin",progress:{done:"white_check_mark",dropped:"no_entry_sign",doing:"eyes",pending:"hourglass_flowing_sand"},flags:{alert:"exclamation","needs-discussion":"thinking_face",waiting:"speech_balloon",blocked:"lock"}},en=["done","dropped","doing","pending"],jc=["alert","needs-discussion","waiting","blocked"];function Kf(){return Uf(process.env.HOME||Wf(),".config","slack-cli","todo.json")}function ks(e){return e.replace(/^:+|:+$/g,"")}function xn(e=Kf()){let t={marker:Xr.marker,progress:{...Xr.progress},flags:{...Xr.flags}};try{if(!jf(e))return t;let n=JSON.parse(Lf(e,"utf8"));if(typeof n.marker==="string"&&n.marker.trim())t.marker=ks(n.marker.trim());for(let r of en){let s=n.progress?.[r];if(typeof s==="string"&&s.trim())t.progress[r]=ks(s.trim())}for(let r of jc){let s=n.flags?.[r];if(typeof s==="string"&&s.trim())t.flags[r]=ks(s.trim())}}catch{}return t}function Bc(e,t,n=!1){return`${n?"-":""}${t?"has":"hasmy"}::${ks(e)}:`}function Lc(e,t,n={}){let r=n.shared===!0,s=(a)=>Bc(a,r),o=(a)=>Bc(a,r,!0),i=[];if(e==="untriaged")i.push(s(t.marker),...en.map((a)=>o(t.progress[a])));else if(e==="stuck")i.push(s(t.marker),o(t.progress.done),o(t.progress.dropped),`(${jc.map((a)=>s(t.flags[a])).join(" OR ")})`);else if(e==="open")i.push(s(t.marker),o(t.progress.done),o(t.progress.dropped));else{let a=en.indexOf(e);i.push(s(t.progress[e]));for(let c of en.slice(0,a))i.push(o(t.progress[c]))}if(n.in){let a=n.in.startsWith("#")||n.in.startsWith("@")?n.in:`#${n.in}`;i.push(`in:${a}`)}if(n.from){let a=n.from==="me"||n.from.startsWith("@")?n.from:`@${n.from}`;i.push(`from:${a}`)}return i.join(" ")}var Jf=3,zf={sleep:(e)=>Hf()?Promise.resolve():new Promise((t)=>setTimeout(t,e))};function Hf(){return!!process.env.VITEST||!1||!!process.env.BUN_TEST}async function _e(e,t,n=Jf){for(let r=0;;r++)try{return await t()}catch(s){if(!(s instanceof Ke))throw s;if(r>=n)throw Error(`Slack rate limit hit on ${e} — gave up after ${n} retries. Try again in a minute.`);console.error(`Warning: Slack rate limit hit on ${e} — backing off for ${s.retryAfter}s`),await zf.sleep(s.retryAfter*1000)}}var Nc=new Map;async function Wc(e,t){let n=Nc.get(e);if(n)return n;let r=await _e("auth.test",()=>Xt(e,t)),s={userId:r.userId,teamId:r.teamId};return Nc.set(e,s),s}async function Uc(e,t){return(await Wc(e,t)).userId}async function Gr(e,t){try{return(await Wc(e,t)).teamId}catch{return""}}async function Vr(e,t,n,r){if(!t.startsWith("#"))return n(e,t,r);let s=await Gr(e,r),o=xs("channels",s,t);if(o)return o;let i=await _e("resolveChannel",()=>n(e,t,r));return _s("channels",s,t,i),i}async function Kc(e,t,n,r){let s=await Gr(e,r),o=xs("users",s,t);if(o)return o;let i=await _e("users.info",()=>n(e,t,r));if(i&&i!==t)_s("users",s,t,i);return i}async function Jc(e,t,n,r){let s=await Gr(e,r),o=xs("users",s,`tz:${t}`);if(o)return o==="?"?null:o;let i=null;try{let a=await _e("users.info",()=>n(e,t,r));if(a?.user?.is_bot===!0||t==="USLACKBOT")return vc(s,t,null);let c=a?.user?.tz;i=typeof c==="string"&&c?c:null}catch{return null}return vc(s,t,i)}function vc(e,t,n){return _s("users",e,`tz:${t}`,n??"?"),n}async function zc(e,t,n,r,s,o){let i=s.progress[r],a=await Uc(e,o),c=await _e("reactions.get",()=>ga(e,t,n,o)),u=new Set(c.filter((p)=>p.users.includes(a)).map((p)=>p.name)),f=en.map((p)=>s.progress[p]).filter((p)=>u.has(p));if(f.length===1&&f[0]===i)return{noop:!0,removed:[],leftover:[]};if(!u.has(i))await _e("reactions.add",()=>ts(e,t,n,i,o));let l=[],d=[];for(let p of f){if(p===i)continue;try{await _e("reactions.remove",()=>ns(e,t,n,p,o)),l.push(p)}catch{d.push(p)}}return{noop:!1,added:r,removed:l,leftover:d}}async function Hc(e,t,n,r,s,o,i){let a=s.flags[r];if(o)await _e("reactions.remove",()=>ns(e,t,n,a,i));else await _e("reactions.add",()=>ts(e,t,n,a,i));return a}var Zr=1000;async function qc(e,t,n,r={}){let s=r.limit??Zr,o=r.cookie,i=await Uc(e,o),a=en.map((d)=>n.progress[d]),c=[],u=0,f,l=!1;while(u<s){let d=Math.min(200,s-u),p=await _e("conversations.history",()=>dn(e,t,d,void 0,f,o)),m=p.messages??[];u+=m.length;for(let h of m){let y=String(h.ts??"");if(!y)continue;let E=new Set((h.reactions??[]).filter((A)=>(A.users??[]).map(String).includes(i)).map((A)=>String(A.name??""))),F=a.filter((A)=>E.has(A));if(F.length<2)continue;c.push({ts:y,text:String(h.text??"").split(`
|
|
167
|
+
`)[0]??"",emoji:F,keep:F[0]})}if(f=p.response_metadata?.next_cursor||void 0,!f||m.length===0)break;if(u>=s){l=!0;break}}if(r.fix)for(let d of c)try{try{await _e("reactions.add",()=>ts(e,t,d.ts,d.keep,o))}catch(p){if(!(p instanceof Error)||!/already_reacted/.test(p.message))throw p}for(let p of d.emoji){if(p===d.keep)continue;await _e("reactions.remove",()=>ns(e,t,d.ts,p,o))}d.fixed=!0}catch(p){d.fixed=!1,d.error=p instanceof Error?p.message:String(p)}return{scanned:u,findings:c,truncated:l}}var qf=!0,Yf;function Qr(e){if(qf=e,!e)Yf=void 0}function ft(e){return e.replace(new RegExp(`[${"\\\\¥"}](.)`,"gs"),(t,n)=>{switch(n){case"n":return`
|
|
168
|
+
`;case"t":return"\t";case"\\":case"¥":return n==="¥"?"¥":"\\";default:return t}})}function vt(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function dt(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function Xf(e,t){let n=vt(t),r=dt(e.profile);for(let o of[e.name,e.real_name,r.display_name,r.real_name])if(typeof o==="string"&&o&&vt(o)===n)return!0;let s=typeof r.email==="string"?r.email.toLowerCase():"";return s!==""&&s===t.toLowerCase()}function Gf(e){let t=dt(e.profile),n=new Set;for(let r of[t.display_name,e.real_name,e.name,t.real_name])if(typeof r==="string"&&r){let s=vt(r);if(s.length>=2)n.add(s)}return[...n]}function Vf(e,t){let n=vt(e),r,s=!1;for(let o of t){let i=typeof o.id==="string"?o.id:"";if(!i)continue;for(let a of Gf(o)){let c=-1;if(n===a)c=e.length;else for(let u of Xc)if(e.length>u.length&&e.endsWith(u)&&vt(e.slice(0,e.length-u.length))===a){c=e.length-u.length;break}if(c<0)continue;if(!r||a.length>r.formLen)r={userId:i,matchLen:c,formLen:a.length,display:no(o)},s=!1;else if(a.length===r.formLen&&r.userId!==i)s=!0}}if(!r)return;return s?"ambiguous":{userId:r.userId,matchLen:r.matchLen,display:r.display}}async function jt(e,t,n,r){let s=`[${Gc}ー]+`,o=`${s}(?:[._-]+${s})*`,i=new RegExp(`(?<![A-Za-z0-9._@<-])@(${o})`,"gu"),a=new Set;for(let F of t.matchAll(i))a.add(F[1]);if(a.size===0)return{text:t,resolved:[],unresolved:[]};let c=new Map;for(let F of a)c.set(F,{status:"pending"});let u=(F)=>{for(let A of a){if(c.get(A).status!=="pending")continue;if(to(A)){let k=Vf(A,F);if(k==="ambiguous")c.set(A,{status:"ambiguous"});else if(k)c.set(A,{status:"resolved",userId:k.userId,matchLen:k.matchLen,display:k.display})}else{let k=F.filter((I)=>Xf(I,A)),B=new Set(k.map((I)=>typeof I.id==="string"?I.id:"").filter(Boolean));if(B.size===1){let I=k.find((R)=>typeof R.id==="string");c.set(A,{status:"resolved",userId:I.id,matchLen:A.length,display:no(I)})}else if(B.size>1)c.set(A,{status:"ambiguous"})}}},f=!1;try{let F=await os(e,r);u((F.members??[]).map(dt)),f=!0}catch{f=!1}let l=[...a].some((F)=>c.get(F).status==="pending"),d=!1,p=!0;if(l&&n){d=!0;try{let F=await Ar(e,n,r),A=[];for(let k of F){let B=dt(await $r(e,k,r)),I=dt(B.user);if(typeof I.id!=="string")I.id=k;A.push(I)}u(A)}catch{p=!1}}let m=f&&(n?d&&p:!0),h=[],y=[];for(let F of a){let A=c.get(F);if(A.status==="resolved")h.push({surface:`@${F.slice(0,A.matchLen)}`,display:A.display,userId:A.userId});else if(A.status==="ambiguous")y.push({surface:`@${F}`,reason:"ambiguous"});else y.push({surface:`@${F}`,reason:m?"no-match":"unavailable"})}return{text:t.replace(i,(F,A)=>{let k=c.get(A);if(k&&k.status==="resolved")return`<@${k.userId}>${A.slice(k.matchLen)}`;return F}),resolved:h,unresolved:y}}function _n(e){let t=[],n=!1;for(let r of e)if(r.reason==="ambiguous")t.push(`${r.surface} matches multiple people — not tagged, sent as plain text (use <@USERID> to tag)`);else if(r.reason==="unavailable"){if(n)continue;t.push("could not fetch the user list (users:read missing or an API/connection error) — @mentions not tagged, sent as plain text"),n=!0}else t.push(`${r.surface} matched no one — not tagged, sent as plain text`);return t}async function Yc(e,t,n,r={}){let s=r.warn??((i)=>process.stderr.write(`${i}
|
|
169
|
+
`)),o=await jt(e,t,n,r.cookie);for(let i of _n(o.unresolved))s(`warn: ${i}`);return o.text}var Xc=["さん","さま","様","君","くん","ちゃん","氏","先生","先輩","殿","老师","老師","兄","姐","哥","姐妹"],Gc="\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}A-Za-z0-9";function to(e){return/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}]/u.test(e)}function Zf(e){let t=[],n=new RegExp(`([${Gc}]{1,12})(${Xc.join("|")})`,"gu");for(let r of e.matchAll(n))t.push({ref:r[1],honorific:r[2]});for(let r of e.matchAll(/\b(?:dear|hi|hello|hey)\b[ \t]+([A-Z][A-Za-z'’-]{1,20})/gi))t.push({ref:r[1],honorific:""});for(let r of e.matchAll(/(?:^|\n)[ \t]*([A-Z][A-Za-z'’-]{1,20}),/g))t.push({ref:r[1],honorific:""});return t}function Qf(e){let t=dt(e.profile),n=new Set;for(let r of[e.name,e.real_name,t.display_name,t.real_name]){if(typeof r!=="string"||!r)continue;for(let s of[r,...r.split(/\s+/)]){let o=vt(s);if(o.length>=2)n.add(o)}}return[...n]}function ed(e,t){let n=vt(e);if(n.length<2)return;for(let r of t)if(n===r)return r;if(to(e)){for(let r of t)if(n.includes(r)||r.includes(n))return r}return}function no(e){return[dt(e.profile).display_name,e.real_name,e.name].filter((r)=>typeof r==="string"&&r!=="")[0]??String(e.id??"?")}async function Vc(e,t,n){let r=Zf(t);if(r.length===0)return[];let s=new Set;for(let u of t.matchAll(/<@([A-Z0-9]+)(?:\|[^>]*)?>/g))s.add(u[1]);let i=((await os(e,n)).members??[]).map(dt).filter((u)=>u.deleted!==!0&&u.is_bot!==!0&&u.id!=="USLACKBOT").map((u)=>({id:typeof u.id==="string"?u.id:"",forms:Qf(u),display:no(u)})).filter((u)=>u.id!==""),a=[],c=new Set;for(let{ref:u,honorific:f}of r)for(let l of i){let d=ed(u,l.forms);if(!d)continue;if(s.has(l.id)||c.has(l.id))break;c.add(l.id),a.push({surface:to(u)?`${d}${f}`:u,display:l.display,userId:l.id});break}return a}async function tn(e,t,n,r){let s=t,o=[],i=s,a=0;while(!0){let c=i.indexOf("<@U",a);if(c===-1)break;let u=i.slice(c+2),f=u.search(/[>|]/),l=f===-1?u:u.slice(0,f);if(l.length>=9)o.push(l);a=c+1}for(let c of o){if(!n.has(c))n.set(c,await rs(e,c,r));let u=n.get(c)??c;s=s.replaceAll(`<@${c}>`,`@${u}`),s=s.replace(new RegExp(`<@${c}\\|[^>]*>`,"g"),`@${u}`)}return s}function kn(e){return e.replace(/<!date\^(\d+)\^[^|>]*(?:\|([^>]*))?>/g,(t,n,r)=>{let s=Number(n);if(!Number.isFinite(s))return r??"date";let o=new Date(s*1000);if(Number.isNaN(o.getTime()))return r??"date";let i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],c=i[o.getUTCDay()]??"",u=a[o.getUTCMonth()]??"";return`${c}, ${u} ${String(o.getUTCDate()).padStart(2,"0")}, ${o.getUTCFullYear()}`})}function Zc(e,t=new Date){let n=new Date(e*1000),r=eo(t),s=eo(new Date(t.getTime()-86400000)),o=eo(n);if(o===r)return"Today";if(o===s)return"Yesterday";let i=n.toLocaleDateString("en-US",{weekday:"long"}),a=n.toLocaleDateString("en-US",{month:"short"});return`${i}, ${a} ${String(n.getDate()).padStart(2,"0")}`}function eo(e){return`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`}function Qc(e){let t=new Date(e*1000),n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),o=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${s} ${o}:${i}`}function eu(e=new Date,t){let n=process.env.SLACK_QUIET_TZ??"Asia/Tokyo",r=!!t&&td(t),s=r?t:n,o=Number(process.env.SLACK_QUIET_START??23),i=Number(process.env.SLACK_QUIET_END??8),a,c;try{let p=new Intl.DateTimeFormat("en-GB",{timeZone:s,hour12:!1,weekday:"short",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"});c=p.format(e),a=Number(p.formatToParts(e).find((m)=>m.type==="hour")?.value??"12")}catch{return null}let u=o>i?a>=o||a<i:a>=o&&a<i,f=r?`${s}, recipient`:`${s}, sender — recipient's timezone unknown`,l=`\uD83D\uDD50 ${c} (${f})`;if(!u)return l;return`${l}
|
|
170
|
+
⚠ QUIET HOURS (${o}:00-${i}:00) — this will buzz a phone.${r?"":" Their local time may differ."} Send only for a production incident; otherwise hold it until morning.`}function td(e){try{return new Intl.DateTimeFormat("en-GB",{timeZone:e}),!0}catch{return!1}}function Sn(e){if(!lu(e))return;let t=sd(e,"utf8");for(let n of t.split(`
|
|
171
171
|
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);if(!(o in process.env))process.env[o]=i}}function od(e){rd(e,{recursive:!0});let t=ht(e,".gitignore");if(!lu(t))fu(t,`*
|
|
172
|
-
`)}function id(){
|
|
172
|
+
`)}function id(){Sn(ht(tu(),".slack-cli",".env.local")),Sn(ht(tu(),".config/slack-cli",".env")),Sn(ht(process.cwd(),".slack-cli",".env.local")),Sn(ht(process.cwd(),".env.local")),Sn(ht(process.cwd(),".env"))}function ad(e){return nd("sha256").update(e).digest("hex")}function P(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function X(e){return Array.isArray(e)?e:[]}function Ss(e){return Number(e.ts??0)}async function du(e,t,n){let r=t.user;if(typeof r==="string"){if(!n.has(r))n.set(r,await Ne(e,r));return n.get(r)??r}return typeof t.username==="string"?t.username:"bot"}function ro(e){let t=new Date(e*1000),n=t.getUTCFullYear(),r=String(t.getUTCMonth()+1).padStart(2,"0"),s=String(t.getUTCDate()).padStart(2,"0"),o=String(t.getUTCHours()).padStart(2,"0"),i=String(t.getUTCMinutes()).padStart(2,"0"),a=String(t.getUTCSeconds()).padStart(2,"0");return`${n}-${r}-${s} ${o}:${i}:${a}`}function ao(e){let[t,n="000000"]=e.split("."),r=Number(t),s=new Date(r*1000),o=s.getUTCFullYear(),i=String(s.getUTCMonth()+1).padStart(2,"0"),a=String(s.getUTCDate()).padStart(2,"0"),c=String(s.getUTCHours()).padStart(2,"0"),u=String(s.getUTCMinutes()).padStart(2,"0"),f=String(s.getUTCSeconds()).padStart(2,"0"),l=n.padEnd(6,"0").slice(0,6);return`${o}-${i}-${a}T${c}:${u}:${f}.${l}`}function co(e){let t=e.match(/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})\.(\d{6})$/);if(!t)throw Error(`Invalid message timestamp "${e}" \u2014 expected 2026-05-11T06:01:04.000100`);let n=Date.parse(t[1]+"Z");if(isNaN(n))throw Error(`Cannot parse date in "${e}"`);return`${Math.floor(n/1000)}.${t[2]}`}function cd(e){return/^\d{4}-\d{2}-\d{2}T/.test(e)?co(e):e}async function Os(e,t,n,r,s){let o=typeof t.ts==="string"?t.ts:`${Ss(t)}.000000`,i=ao(o),a="?";if(typeof t.user==="string"){let F=t.user,A="@"+F;if(!n.has(A)){let k=await Kc(e,F,async(B,I,R)=>(await wn(B,I,R))[1],s);n.set(A,k)}a=n.get(A)??F}else if(typeof t.username==="string")a=t.username;let c=typeof t.text==="string"?t.text:"",f=kn(await tn(e,c,n,s)).split(`
|
|
173
173
|
`),l=f[0]+(f.length>1?`
|
|
174
174
|
`+f.slice(1).map((F)=>` ${F}`).join(`
|
|
175
175
|
`):""),d=r?`${r} @${a}`:`@${a}`,p=X(t.reactions).map(P).map((F)=>{let A=typeof F.name==="string"?F.name:"",k=Number(F.count??X(F.users).length??0);return A?`:${A}:\xD7${k}`:""}).filter(Boolean).join(" "),m=X(t.files).map(P).map((F)=>{let A=typeof F.name==="string"?F.name:typeof F.title==="string"?F.title:"(file)",k=typeof F.size==="number"?` (${Is(F.size)})`:"",B=typeof F.id==="string"?` [${F.id}]`:"";return`
|
|
176
176
|
\uD83D\uDCCE ${A}${k}${B}`}).join(""),h=Number(t.reply_count??0),y=h>0?` [+${h} ${h===1?"reply":"replies"}]`:"",E=(p?`
|
|
177
|
-
${p}`:"")+m;return`${i} ${d}: ${l}${y}${E}`}function Is(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function ud(e){return X(e.files).map(P).map((t)=>({id:t.id??null,name:t.name??t.title??null,mimetype:t.mimetype??null,size:t.size??null,url_private_download:t.url_private_download??t.url_private??null,permalink:t.permalink??null}))}function hu(e){let t=ud(e);return{ts:e.ts??null,user:e.user??null,username:e.username??null,bot_id:e.bot_id??null,thread_ts:e.thread_ts??null,text:typeof e.text==="string"?e.text:"",...Array.isArray(e.reactions)&&e.reactions.length?{reactions:X(e.reactions).map(P).map((n)=>({name:n.name??null,count:n.count??null,users:Array.isArray(n.users)?n.users:[]}))}:{},...e.reply_count!==void 0?{reply_count:e.reply_count}:{},...e.reply_users_count!==void 0?{reply_users_count:e.reply_users_count}:{},...e.latest_reply!==void 0?{latest_reply:e.latest_reply}:{},...t.length>0?{files:t}:{}}}async function ld(e,t,n,r,s){let o=[];for(let i of n){let a=i;if(Number(i.reply_count??0)>0&&typeof i.ts==="string"){let c=await qe(e,t,i.ts,200,s),u=X(c.messages).map(P);a=u[u.length-1]??i}if(a.user!==r)o.push(i)}return o}async function fd(e,t,n,r="text",s=!1,o){let i=Nt(t),a=await De(e,t,o),c=new Map,f=await(async()=>{if(i?.threadTs){let d=await qe(e,a,i.threadTs,n,o);return X(d.messages).map(P)}let l=await Ve(e,a,n,void 0,void 0,o);return X(l.messages).map(P).reverse()})();if(s){let{userId:l}=await uc(e,o);f=await ld(e,a,f,l,o)}if(r==="jsonl"){for(let l of f)console.log(JSON.stringify(hu(l)));return}for(let l of f)console.log(await Os(e,l,c,void 0,o))}async function dd(e,t,n,r,s="text",o){let i=await De(e,t,o),a=await qe(e,i,cd(n),r,o),c=X(a.messages).map(P);if(s==="jsonl"){for(let f of c)console.log(JSON.stringify(hu(f)));return}let u=new Map;for(let f of c)console.log(await Os(e,f,u,void 0,o))}async function hd(e){let t=await
|
|
178
|
-
`)[0]??"",d=await tn(e,l,r);console.log(` ${f}: ${d}`)}}}async function pd(e,t){let n=await gc(e,"to:me"),r=X(
|
|
179
|
-
`)[0]?.slice(0,60)}`:"";console.log(`${d}${u} ${c}${p}${h}`)}}function md(e){let t=(s)=>s.startsWith("xoxp-")||s.startsWith("xoxc-"),n=yr(),r=n.find((s)=>s.profile.token===e);if(!r)return;return n.find((s)=>t(s.profile.token)&&s.profile.teamId===r.profile.teamId)}async function pu(e,t,n,r,s){let o=e,i=s,a;try{a=await
|
|
177
|
+
${p}`:"")+m;return`${i} ${d}: ${l}${y}${E}`}function Is(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function ud(e){return X(e.files).map(P).map((t)=>({id:t.id??null,name:t.name??t.title??null,mimetype:t.mimetype??null,size:t.size??null,url_private_download:t.url_private_download??t.url_private??null,permalink:t.permalink??null}))}function hu(e){let t=ud(e);return{ts:e.ts??null,user:e.user??null,username:e.username??null,bot_id:e.bot_id??null,thread_ts:e.thread_ts??null,text:typeof e.text==="string"?e.text:"",...Array.isArray(e.reactions)&&e.reactions.length?{reactions:X(e.reactions).map(P).map((n)=>({name:n.name??null,count:n.count??null,users:Array.isArray(n.users)?n.users:[]}))}:{},...e.reply_count!==void 0?{reply_count:e.reply_count}:{},...e.reply_users_count!==void 0?{reply_users_count:e.reply_users_count}:{},...e.latest_reply!==void 0?{latest_reply:e.latest_reply}:{},...t.length>0?{files:t}:{}}}async function ld(e,t,n,r,s){let o=[];for(let i of n){let a=i;if(Number(i.reply_count??0)>0&&typeof i.ts==="string"){let c=await qe(e,t,i.ts,200,s),u=X(c.messages).map(P);a=u[u.length-1]??i}if(a.user!==r)o.push(i)}return o}async function fd(e,t,n,r="text",s=!1,o){let i=Nt(t),a=await De(e,t,o),c=new Map,f=await(async()=>{if(i?.threadTs){let d=await qe(e,a,i.threadTs,n,o);return X(d.messages).map(P)}let l=await Ve(e,a,n,void 0,void 0,o);return X(l.messages).map(P).reverse()})();if(s){let{userId:l}=await uc(e,o);f=await ld(e,a,f,l,o)}if(r==="jsonl"){for(let l of f)console.log(JSON.stringify(hu(l)));return}for(let l of f)console.log(await Os(e,l,c,void 0,o))}async function dd(e,t,n,r,s="text",o){let i=await De(e,t,o),a=await qe(e,i,cd(n),r,o),c=X(a.messages).map(P);if(s==="jsonl"){for(let f of c)console.log(JSON.stringify(hu(f)));return}let u=new Map;for(let f of c)console.log(await Os(e,f,u,void 0,o))}async function hd(e){let t=await bn(e),n=X(t.channels).map(P).filter((s)=>s.is_member===!0).sort((s,o)=>Number(o.updated??0)-Number(s.updated??0)).slice(0,10),r=new Map;for(let s of n){let o=String(s.id??""),i=typeof s.name==="string"?s.name:typeof s.user==="string"?s.user:o,a=await Ve(e,o,5),c=X(a.messages).map(P).filter((u)=>u.subtype===void 0||u.subtype===null).filter((u)=>{let f=typeof u.text==="string"?u.text:"";return f.length>0&&!f.startsWith("<@")}).slice(0,3).reverse();if(c.length===0)continue;console.log(`-- #${i} --------------------------------`);for(let u of c){let f=await du(e,u,r),l=(typeof u.text==="string"?u.text:"").split(`
|
|
178
|
+
`)[0]??"",d=await tn(e,l,r);console.log(` ${f}: ${d}`)}}}async function pd(e,t){let n=await gc(e,"to:me"),r=X(mn(n,["messages","matches"])).map(P).slice(0,t),s=new Map,o=[];for(let i of r){let a=Zc(Ss(i)),c=o[o.length-1];if(c?.label===a)c.msgs.push(i);else o.push({label:a,msgs:[i]})}for(let i=0;i<o.length;i++){let{label:a,msgs:c}=o[i];if(i>0)console.log("");console.log(` ${a}`),console.log(" ----------------------------");for(let u of[...c].reverse()){let f=P(u.channel),l=f.is_im===!0,d=typeof f.name==="string"?f.name:"dm",p;if(l&&d.startsWith("U")){let m="@"+d;if(!s.has(m)){let[,h]=await wn(e,d);s.set(m,h)}p=`@${s.get(m)??d}`}else if(l)p=`@${d}`;else p=`#${d}`;console.log(await Os(e,u,s,p))}}}async function gd(e,t,n,r,s="text"){let o=await bn(e),i=X(o.channels).map(P).filter((a)=>r||a.is_member===!0).filter((a)=>{if(!n)return!0;return(typeof a.name==="string"?a.name:"").toLowerCase().includes(n.toLowerCase())}).sort((a,c)=>Number(c.updated??0)-Number(a.updated??0)).slice(0,t);if(s==="jsonl"){for(let a of i)console.log(JSON.stringify(a));return}for(let a of i){let c=String(a.id??""),u=typeof a.name==="string"?a.name:typeof a.user==="string"?a.user:c,f=a.is_im===!0,l=a.is_mpim===!0,d=f||l?"@":"#",p=a.is_member===!0?"":" (not joined)",m=typeof P(a.purpose).value==="string"?String(P(a.purpose).value):"",h=m?` ${m.split(`
|
|
179
|
+
`)[0]?.slice(0,60)}`:"";console.log(`${d}${u} ${c}${p}${h}`)}}function md(e){let t=(s)=>s.startsWith("xoxp-")||s.startsWith("xoxc-"),n=yr(),r=n.find((s)=>s.profile.token===e);if(!r)return;return n.find((s)=>t(s.profile.token)&&s.profile.teamId===r.profile.teamId)}async function pu(e,t,n,r,s){let o=e,i=s,a;try{a=await Hr(o,t,n,i)}catch(f){let l=f instanceof Error?f.message:String(f);if(e.startsWith("xoxb-")&&l.includes("not_allowed_token_type")){let d=md(e);if(d)console.error(`Note: search.messages needs a user token \u2014 the active profile is a bot token (xoxb-); falling back to profile "${d.name}".`),o=d.profile.token,i=d.profile.cookie,a=await Hr(o,t,n,i);else console.error(`Error: search requires a user token (xoxp-/xoxc-) \u2014 the active profile is a bot token (xoxb-), which Slack rejects for search.messages.
|
|
180
180
|
`+` Add a user-token profile: slack auth login (or slack auth login --token <token>)
|
|
181
|
-
Then select it: slack auth use <name> (or pass --workspace <name>)`),process.exit(1)}else throw f}if(r){console.log(JSON.stringify(a,null,2));return}let c=X(
|
|
182
|
-
`);for(let h of[...m].reverse()){let y=await du(e,h,a),E=typeof h.text==="string"?h.text:"",A=
|
|
183
|
-
`).join(" \u21B5 ");console.log(`[${Qc(Ss(h))}] ${y}: ${A}`)}console.log("")}console.error(`Dumped ${c} messages across ${u} channels (cutoff: ${t}d)`)}function Cd(e){let t=[];function n(r){if(typeof r==="string"){t.push(r);return}if(Array.isArray(r)){for(let s of r)n(s);return}if(r&&typeof r==="object"){let s=r;if(typeof s.text==="string"){t.push(s.text);return}if(Array.isArray(s.elements))n(s.elements);else if(Array.isArray(s.content))n(s.content)}}for(let r of e)n(r);return t.join("").trim()}async function mu(e,t,n){let r=new Map;return async(s)=>{if(!s)return"(unknown)";if(r.has(s))return r.get(s);try{let o=await Ic(e,s,t),i=P(o.channel),a;if(i.is_im===!0){let c=typeof i.user==="string"?i.user:"";if(!c||c===n)a="@self";else{let[u]=await
|
|
184
|
-
`))console.log(` ${F}`)}}async function xd(e,t,n){let r=await
|
|
185
|
-
`)).slice(0,4)}function Q(e){return e.replace(/\x1b\[[0-9;:?]*[ -/]*[@-~]/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"").replace(/[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g,"")}var _d={"reactions.add":"reactions:write","reactions.remove":"reactions:write","chat.postMessage":"chat:write","chat.update":"chat:write","chat.delete":"chat:write","conversations.replies":"channels:history (or groups:history)","conversations.history":"channels:history (or groups:history)"};function nt(e){let t=e instanceof Error?e.message:String(e),n=t.match(/Slack error on (\S+): (\w+)/);if(!n)return t;let[,r,s]=n;switch(s){case"missing_scope":return`Error: token lacks the ${_d[r]??"the required"} scope (needed for ${r}). Add it to your Slack App's User Token Scopes (or Bot Token Scopes if you use a bot token / --as-bot) \u2014 it must be on the token type the CLI actually uses \u2014 then reinstall to the workspace.`;case"invalid_name":return"Error: not a valid emoji shortcode \u2014 use the name without colons (e.g. white_check_mark), and make sure it exists in the workspace.";case"already_reacted":return"Error: you've already added that reaction to the message.";case"no_reaction":return"Error: that reaction isn't on the message \u2014 nothing to remove.";case"message_not_found":return"Error: no message found at that timestamp in the channel \u2014 check the target ts/permalink.";case"channel_not_found":return"Error: channel not found \u2014 check the target.";default:return t}}async function Ts(e,t,n){if(!t.startsWith("D"))return null;try{let r=await Rs(e,t,n);if(!r)return null;return await Jc(e,r,
|
|
186
|
-
`)[0]??"",i=o.length>n?`${o.slice(0,n)}\u2026`:o,a=typeof t.ts==="string"?t.ts:"";return`${a?
|
|
187
|
-
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);if(r)return{botToken:s};let{ref:o}=
|
|
181
|
+
Then select it: slack auth use <name> (or pass --workspace <name>)`),process.exit(1)}else throw f}if(r){console.log(JSON.stringify(a,null,2));return}let c=X(mn(a,["messages","matches"])).map(P),u=new Map;for(let f of c){let l=P(f.channel),d=l.is_im===!0,p=typeof l.name==="string"?l.name:"dm",m;if(d&&p.startsWith("U")){let h="@"+p;if(!u.has(h)){let[,y]=await wn(o,p,i);u.set(h,y)}m=`@${u.get(h)??p}`}else if(d)m=`@${p}`;else m=`#${p}`;console.log(await Os(o,f,u,m,i))}}async function gu(e,t,n,r){let{ref:s,ts:o}=An(t);if(!o)console.error("Error: target must embed a message ts (e.g. #chan:1700000000.000100 or a Slack permalink URL)"),process.exit(2);return{channelId:n??await Vr(e,s,De,r),ts:o}}async function Dd(e,t){let n=xn(),r={};if(!t.mine)r.shared=!0;if(t.in)r.in=t.in;if(t.from)r.from=t.from;let s=Lc(t.state,n,r);if(!t.json){let o=await nn(e,t.cookie),i=t.mine?"your reactions only [hasmy:]":"anyone's reactions [has:]";console.error(`(From: ${Du(o)} \xB7 matching ${i})`),console.error(`(query: ${s})`)}await _e("search.messages",()=>pu(e,s,t.count,t.json,t.cookie))}async function yd(e,t){let n=xn(),{channelId:r,ts:s}=await gu(e,t.target,t.channelId,t.cookie),o=await zc(e,r,s,t.state,n,t.cookie);if(o.noop){console.log(`= Already ${t.state} (ts: ${s})`);return}let i=o.removed.length?`, removed ${o.removed.map((a)=>`:${a}:`).join(" ")}`:"";if(console.log(`\u2713 ${t.state} :${n.progress[t.state]}: (ts: ${s})${i}`),o.leftover.length)console.error(`\u26A0 ${o.leftover.map((a)=>`:${a}:`).join(" ")} could not be removed \u2014 this message now carries more than one `+"progress reaction. Readers collapse by priority so nothing is lost; repair with: slack todo doctor --in <#chan> --fix")}async function bd(e,t){let n=xn(),{channelId:r,ts:s}=await gu(e,t.target,t.channelId,t.cookie),o=await Hc(e,r,s,t.flag,n,t.remove===!0,t.cookie);console.log(`\u2713 ${t.remove?"Cleared":"Flagged"} ${t.flag} :${o}: (ts: ${s})`)}async function wd(e,t){let n=xn(),r=t.channelId??await Vr(e,t.channel,De,t.cookie),s={limit:t.limit};if(t.fix)s.fix=!0;if(t.cookie)s.cookie=t.cookie;let o=await qc(e,r,n,s);if(o.findings.length===0)console.log(`\u2713 No multi-state tasks in ${o.scanned} message(s).`);else{for(let i of o.findings){let a=i.fixed===!0?"fixed":i.fixed===!1?`FAILED: ${i.error??"?"}`:"needs --fix";console.log(`${i.ts} ${i.emoji.map((c)=>`:${c}:`).join(" ")} \u2192 keep :${i.keep}: [${a}] ${Q(i.text).slice(0,60)}`)}console.log(`${o.findings.length} multi-state task(s) in ${o.scanned} message(s).`)}if(o.truncated)console.error(`\u26A0 Scan limit reached (${t.limit} messages) \u2014 older history was NOT checked. Raise it with --limit N.`)}async function Fd(e,t,n,r){let s=Math.floor(Date.now()/1000)-t*86400,o=await bn(e),i=X(o.channels).map(P).filter((f)=>f.is_member===!0&&f.is_im!==!0&&f.is_mpim!==!0).filter((f)=>{if(!r)return!0;return(typeof f.name==="string"?f.name:"").toLowerCase().includes(r.toLowerCase())}).sort((f,l)=>Number(l.updated??0)-Number(f.updated??0)),a=new Map,c=0,u=0;for(let f of i){let l=String(f.id??""),d=typeof f.name==="string"?f.name:l,p;try{p=await Ve(e,l,n)}catch(h){console.error(` SKIP #${d}: ${h.message}`);continue}let m=X(p.messages).map(P).filter((h)=>(h.subtype===void 0||h.subtype===null)&&Ss(h)>=s);if(m.length===0)continue;u+=1,c+=m.length,console.log(`## #${d} (${m.length} msgs)
|
|
182
|
+
`);for(let h of[...m].reverse()){let y=await du(e,h,a),E=typeof h.text==="string"?h.text:"",A=kn(await tn(e,E,a)).split(`
|
|
183
|
+
`).join(" \u21B5 ");console.log(`[${Qc(Ss(h))}] ${y}: ${A}`)}console.log("")}console.error(`Dumped ${c} messages across ${u} channels (cutoff: ${t}d)`)}function Cd(e){let t=[];function n(r){if(typeof r==="string"){t.push(r);return}if(Array.isArray(r)){for(let s of r)n(s);return}if(r&&typeof r==="object"){let s=r;if(typeof s.text==="string"){t.push(s.text);return}if(Array.isArray(s.elements))n(s.elements);else if(Array.isArray(s.content))n(s.content)}}for(let r of e)n(r);return t.join("").trim()}async function mu(e,t,n){let r=new Map;return async(s)=>{if(!s)return"(unknown)";if(r.has(s))return r.get(s);try{let o=await Ic(e,s,t),i=P(o.channel),a;if(i.is_im===!0){let c=typeof i.user==="string"?i.user:"";if(!c||c===n)a="@self";else{let[u]=await wn(e,c);a=`@${u}`}}else a=`#${typeof i.name==="string"?i.name:s}`;return r.set(s,a),a}catch{return s}}}function uo(e){let t=P(X(e.destinations)[0]);return String(t.channel_id??e.channel_id??e.channel??"")}function As(e){return Cd(X(e.blocks))||(typeof e.text==="string"?e.text:"(no text)")}async function Ed(e,t,n=!1){let r=await Fn(e,t),s=X(r.drafts??r.messages??[]).map(P).filter((u)=>u.is_deleted!==!0),o=n?s:s.filter((u)=>u.is_sent!==!0);if(o.length===0){console.log(n?"No drafts.":"No pending drafts. Run with --all to include sent.");return}let i="";try{({userId:i}=await qr(e,t))}catch{}let a=await mu(e,t,i),c=new Map;for(let u of o){let f=uo(u),l=As(u),d=Number(u.date_created??u.date_create??0),p=d?ro(d):"?",m=await a(f),h=typeof u.id==="string"?u.id:"",y=u.is_sent===!0?" [SENT]":"",E=kn(await tn(e,l,c));console.log(`-- ${h} ${m} [${p}]${y}`);for(let F of E.split(`
|
|
184
|
+
`))console.log(` ${F}`)}}async function xd(e,t,n){let r=await Fn(e,t),s=X(r.drafts).map(P).find((m)=>String(m.id)===n);if(!s)console.error(`Draft not found: ${n}`),process.exit(1);let o="";try{({userId:o}=await qr(e,t))}catch{}let i=await mu(e,t,o),a=uo(s),c=As(s),u=Number(s.date_created??0),f=String(s.last_updated_ts??"?"),l=await i(a),p=kn(await tn(e,c,new Map));console.log(`id: ${s.id}`),console.log(`channel: ${l} (${a})`),console.log(`created: ${u?ro(u):"?"}`),console.log(`updated: ${ro(Number(f.split(".")[0]))}`),console.log(`status: ${s.is_sent===!0?"sent":"pending"}`),console.log("---"),console.log(p)}function Ye(...e){return ad(e.join(`
|
|
185
|
+
`)).slice(0,4)}function Q(e){return e.replace(/\x1b\[[0-9;:?]*[ -/]*[@-~]/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"").replace(/[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g,"")}var _d={"reactions.add":"reactions:write","reactions.remove":"reactions:write","chat.postMessage":"chat:write","chat.update":"chat:write","chat.delete":"chat:write","conversations.replies":"channels:history (or groups:history)","conversations.history":"channels:history (or groups:history)"};function nt(e){let t=e instanceof Error?e.message:String(e),n=t.match(/Slack error on (\S+): (\w+)/);if(!n)return t;let[,r,s]=n;switch(s){case"missing_scope":return`Error: token lacks the ${_d[r]??"the required"} scope (needed for ${r}). Add it to your Slack App's User Token Scopes (or Bot Token Scopes if you use a bot token / --as-bot) \u2014 it must be on the token type the CLI actually uses \u2014 then reinstall to the workspace.`;case"invalid_name":return"Error: not a valid emoji shortcode \u2014 use the name without colons (e.g. white_check_mark), and make sure it exists in the workspace.";case"already_reacted":return"Error: you've already added that reaction to the message.";case"no_reaction":return"Error: that reaction isn't on the message \u2014 nothing to remove.";case"message_not_found":return"Error: no message found at that timestamp in the channel \u2014 check the target ts/permalink.";case"channel_not_found":return"Error: channel not found \u2014 check the target.";default:return t}}async function Ts(e,t,n){if(!t.startsWith("D"))return null;try{let r=await Rs(e,t,n);if(!r)return null;return await Jc(e,r,Cn,n)}catch{return null}}function je(e,t,n,r,s=new Date){for(let i of n)console.log(i);let o=eu(s,r);if(o)console.log(o);if(e!==void 0)console.error(`Code mismatch (got ${e}, expected ${t})`);console.error(`Rerun with --code=${t}`),process.exit(1)}function An(e){let t=Nt(e);if(t)return t.ts?{ref:t.channel,ts:t.ts}:{ref:t.channel};if(e.startsWith("#")||e.startsWith("@")){let n=e.indexOf(":");if(n>0){let r=e.slice(n+1);if(/^\d{10}\.\d{6}$/.test(r))return{ref:e.slice(0,n),ts:r};if(/^\d{4}-\d{2}-\d{2}T/.test(r))return{ref:e.slice(0,n),ts:co(r)}}}return{ref:e}}function $n(e,t=!0){let n=Nt(e);if(n){if(!t)return{ref:n.channel};let s=n.threadTs??n.ts;return s?{ref:n.channel,threadTs:s}:{ref:n.channel}}let r=e.indexOf(":");if(r>0){let s=e.slice(r+1);if(/^\d{10}\.\d{6}$/.test(s))return{ref:e.slice(0,r),threadTs:s};if(/^\d{4}-\d{2}-\d{2}T/.test(s))return{ref:e.slice(0,r),threadTs:co(s)}}return{ref:e}}async function Ps(e,t,n,r){let s=n;if(/^#?[CDG][A-Z0-9]{8,}$/.test(n)||!n.startsWith("#")&&!n.startsWith("@"))try{let i=P(await En(e,t,r)),a=P(i.channel);if(a.is_im===!0){let c=typeof a.user==="string"?a.user:"";s=c?`@${await Ne(e,c,r)}`:t}else s=typeof a.name==="string"?`#${a.name}`:t}catch{s=t}return s===t?t:`${s} (${t})`}async function nn(e,t){try{return await lc(e,t)}catch{return null}}function Lt(e,t){let n;return async()=>{if(n===void 0)n=await nn(e,t);return n}}function Du(e,t){let n=t?" [as bot]":"";if(!e)return`(unknown \u2014 auth.test failed)${n}`;let r=Q(e.user||e.userId||"?"),s=e.userId?` (${e.userId})`:"",o=e.team?` \u2014 ${Q(e.team)}`:"";return`@${r}${s}${o}${n}`}function Le(e,t={}){return` ${"From:".padEnd(t.pad??6)}${Du(e,t.asBot)}`}async function oo(e,t,n=60,r){let s=typeof t.user==="string"?await Ne(e,t.user,r):typeof t.username==="string"?t.username:"?",o=(typeof t.text==="string"?t.text:"").split(`
|
|
186
|
+
`)[0]??"",i=o.length>n?`${o.slice(0,n)}\u2026`:o,a=typeof t.ts==="string"?t.ts:"";return`${a?ao(a).slice(0,16).replace("T"," "):""} @${s}${i?`: ${i}`:""}`}async function kd(e,t,n,r){let s=n.find((o)=>String(o.ts)===t)??n[0];if(!s)return t;return oo(e,s,40,r)}function nu(e){return e.toLowerCase().replace(/<[@#!][^>]+>/g," ").replace(/[^\p{L}\p{N}\s]/gu," ").replace(/\s+/g," ").trim()}function Sd(e,t){let n=nu(e),r=nu(t);if(!n||!r)return 0;if(n===r)return 1;let s=(u)=>{let f=new Map;for(let l=0;l<u.length-1;l++){let d=u.slice(l,l+2);f.set(d,(f.get(d)??0)+1)}return f},o=s(n),i=s(r);if(o.size===0||i.size===0)return 0;let a=0;for(let[u,f]of o){let l=i.get(u);if(l)a+=Math.min(f,l)}let c=su(o)+su(i);return c===0?0:2*a/c}function su(e){let t=0;for(let n of e.values())t+=n;return t}async function ru(e,t,n,r){let s=ut();if(!s)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
|
|
187
|
+
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);if(r)return{botToken:s};let{ref:o}=An(e);if(!o.startsWith("@"))return{botToken:s};try{let i=await tt(t,o,n);return{botToken:s,channelId:await et(s,i)}}catch(i){console.error(`Error: could not resolve ${Q(o)} to the bot's DM.
|
|
188
188
|
${i instanceof Error?i.message:String(i)}
|
|
189
|
-
`+" Tip: pass the message permalink, or --channel-id <D\u2026>, to skip the lookup."),process.exit(1)}}async function Ad(e,t){let n=Lt(e,t.cookie),{ref:r,ts:s}=
|
|
189
|
+
`+" Tip: pass the message permalink, or --channel-id <D\u2026>, to skip the lookup."),process.exit(1)}}async function Ad(e,t){let n=Lt(e,t.cookie),{ref:r,ts:s}=An(t.target);if(!s)console.error("Error: target must embed a message ts (e.g. #chan:2026-05-11T06:01:04.000100 or a Slack permalink URL)"),process.exit(2);let o;if(t.channelId)o=t.channelId;else o=await De(e,r,t.cookie);let i=await qe(e,o,s,1,t.cookie),c=X(i.messages).map(P).find((h)=>String(h.ts)===s);if(!c)console.error(`Message not found at ts=${s} in channel ${o}`),process.exit(1);let u=typeof c.text==="string"?c.text:"",f=t.mentionCookie??t.cookie,l=t.mentions?await Yc(t.mentionToken??e,t.newText,o,f?{cookie:f}:{}):t.newText;Hn(l,t.allowUrlAdjacent);let d=await n(),p=Ye(u,l,d?.userId??"");if(t.code!==p)je(t.code,p,["--- Editing as -------------------------------",Le(d,{asBot:t.asBot}),"--- Original message -------------------------",...u.split(`
|
|
190
190
|
`).map((h)=>` ${h}`),"--- Replacing with ---------------------------",...l.split(`
|
|
191
|
-
`).map((h)=>` ${h}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let m=await Zt(e,o,s,l,t.cookie);console.log(`\u2713 Edited (ts: ${m})`)}async function $d(e,t){let n=Lt(e,t.cookie),{ref:r,ts:s}=
|
|
192
|
-
`).map((p)=>` ${p}`),"---------------------------------------------"])}await bc(e,o,s,t.cookie),console.log(`\u2713 Deleted (ts: ${s})`)}async function Od(e,t){let{ref:n,ts:r}=
|
|
193
|
-
`+` To reach yourself with a notification, send as the bot: slack send '${t.target}' '...' --as-bot`);let a=ft(t.message);
|
|
194
|
-
`)[0]?.slice(0,100)??"(empty)"}`,...f,"--- Sending ----------------------------------",R,` \u2192 ${I} \u2014 NEW top-level message`,` Message: ${c}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],F)}let k=await Fs(e,i,c,r,t.broadcast,s),B="";try{B=await
|
|
195
|
-
`+` To reach yourself with a notification, ask as the bot: slack ask '${t.target}' '...' --as-bot`);let u=$s(ft(t.question)),f=$s(ft(t.body??"")),l=new Set([...u.kinds,...f.kinds]),d=t.mentionToken??e,p=await jt(d,u.text,i,t.mentionCookie),m=f.text?await jt(d,f.text,i,t.mentionCookie):{text:"",resolved:[],unresolved:[]},h=p.text,y=m.text,E=[...p.resolved,...m.resolved],F=[...p.unresolved,...m.unresolved];for(let ee of
|
|
191
|
+
`).map((h)=>` ${h}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let m=await Zt(e,o,s,l,t.cookie);console.log(`\u2713 Edited (ts: ${m})`)}async function $d(e,t){let n=Lt(e,t.cookie),{ref:r,ts:s}=An(t.target);if(!s)console.error("Error: target must embed a message ts (e.g. #chan:2026-05-11T06:01:04.000100 or a Slack permalink URL)"),process.exit(2);let o;if(t.channelId)o=t.channelId;else o=await De(e,r,t.cookie);let i=await qe(e,o,s,1,t.cookie),c=X(i.messages).map(P).find((d)=>String(d.ts)===s);if(!c)console.error(`Message not found at ts=${s} in channel ${o}`),process.exit(1);let u=typeof c.text==="string"?c.text:"",f=await n(),l=Ye(o,s,u,f?.userId??"");if(t.code!==l){let d=await Ps(e,o,r,t.cookie);je(t.code,l,["--- Deleting message -------------------------",Le(f,{asBot:t.asBot}),` \u2192 ${d} at ${ao(s)}`,...u.split(`
|
|
192
|
+
`).map((p)=>` ${p}`),"---------------------------------------------"])}await bc(e,o,s,t.cookie),console.log(`\u2713 Deleted (ts: ${s})`)}async function Od(e,t){let{ref:n,ts:r}=An(t.target);if(!r)console.error("Error: target must embed a message ts (e.g. #chan:2026-05-11T06:01:04.000100 or a Slack permalink URL)"),process.exit(2);let s=t.emoji.replace(/^:|:$/g,""),o;if(t.channelId)o=t.channelId;else o=await De(e,n,t.cookie);if(t.remove)await yn(e,o,r,s,t.cookie),console.log(`\u2713 Removed :${s}: (ts: ${r})`);else await Qt(e,o,r,s,t.cookie),console.log(`\u2713 Reacted :${s}: (ts: ${r})`)}async function lo(e,t,n,r){if(!n||!t.startsWith("D"))return!1;try{let s=P(await En(e,t,r)),o=P(s.channel);return o.is_im===!0&&o.user===n}catch{return!1}}async function Id(e,t){let{ref:n,threadTs:r}=$n(t.target),s=t.cookie,o=Lt(e,s),i;if(t.channelId)i=t.channelId;else if(t.userId)i=await et(e,t.userId,s);else i=await De(e,n,s);if(!t.asBot&&await lo(e,i,(await o())?.userId,s))console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own message.
|
|
193
|
+
`+` To reach yourself with a notification, send as the bot: slack send '${t.target}' '...' --as-bot`);let a=ft(t.message);Hn(a,t.allowUrlAdjacent);let c=a,u=null;if(t.mentions){u=await jt(t.mentionToken??e,a,i,t.mentionCookie),c=u.text;for(let I of _n(u.unresolved))console.error(`\u26A0 ${Q(I)}`)}try{for(let I of await Vc(t.mentionToken??e,c,t.mentionCookie))console.error(`\u26A0 possible untagged mention: ${Q(I.surface)} \u2014 @${Q(I.display)} won't be notified (did you mean <@${I.userId}>?)`)}catch{}let f=[];if(u&&(u.resolved.length>0||u.unresolved.length>0)){f.push("--- Mentions ---------------------------------");for(let I of u.resolved)f.push(` \u2713 ${Q(I.surface)} \u2192 @${Q(I.display)} (${I.userId}) \u2014 will notify`);for(let I of u.unresolved){let R=I.reason==="ambiguous"?"ambiguous":I.reason==="unavailable"?"lookup unavailable":"no match";f.push(` \u26A0 ${Q(I.surface)} \u2014 plain text, NOT notified (${R})`)}}let l="",d="?",p=[],m,h,y;if(r)try{let I=await qe(e,i,r,100,s);p=X(I.messages).map(P);let R=p[p.length-1];l=typeof R?.text==="string"?R.text:"",m=typeof R?.user==="string"?R.user:void 0,h=typeof R?.bot_id==="string"?R.bot_id:void 0,y=typeof R?.ts==="string"?R.ts:void 0}catch{}else try{let I=await Ve(e,i,1,void 0,void 0,s),R=X(I.messages).map(P),V=R.filter((ne)=>ne.subtype===void 0||ne.subtype===null)[0];l=typeof V?.text==="string"?V.text:"",d=typeof V?.user==="string"?await Ne(e,V.user,s):typeof V?.username==="string"?V.username:"?";let L=R[0];m=typeof L?.user==="string"?L.user:void 0,h=typeof L?.bot_id==="string"?L.bot_id:void 0,y=typeof L?.ts==="string"?L.ts:void 0}catch{}if(process.env.SLACK_UNREPLIED_WARN!=="0"&&y&&(m||h))try{let I=await o();if(!!I&&(!!m&&!!I.userId&&I.userId===m||!!h&&!!I.botId&&I.botId===h)){let V=`slack edit "#${i}:${y}" "<\u65B0\u3057\u3044\u672C\u6587>" --channel-id ${i}`;try{let L=await Dn(e,i,y,s);if(L)V=`slack edit "${L}" "<\u65B0\u3057\u3044\u672C\u6587>"`}catch{}console.error("\u26A0 \u76F8\u624B\u306F\u307E\u3060\u8FD4\u4FE1\u3057\u3066\u3044\u307E\u305B\u3093(\u6700\u5F8C\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u3042\u306A\u305F\u306E\u3082\u306E\u3067\u3059)\u3002"),console.error(" \u9023\u6295\u3092\u907F\u3051\u308B\u305F\u3081\u3001\u65B0\u898F\u9001\u4FE1\u3067\u306A\u304F\u76F4\u524D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306E edit \u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044:"),console.error(` ${V}`),console.error(" \u3053\u306E\u307E\u307E\u9001\u4FE1\u3059\u308B\u5834\u5408\u306F --code=XXXX \u3067\u78BA\u5B9A\u3002")}}catch{}if(r&&p.length){let I={sim:0,msg:null};for(let R of p){let V=typeof R.text==="string"?R.text:"";if(!V)continue;let L=Sd(c,V);if(L>I.sim)I={sim:L,msg:R}}if(I.msg&&I.sim>=0.82){let R=Math.round(I.sim*100);console.error(`\u26A0 possible duplicate: ${R}% similar to an existing thread message \u2014 ${await oo(e,I.msg,60,s)}`)}}let E=await o(),F=await Ts(e,i,s),A=Ye(i,r??"",l,c,E?.userId??"");if(t.code!==A){let I=await Ps(e,i,n,s),R=Le(E,{asBot:t.asBot});if(r){let V=await kd(e,r,p,s),L=p.slice(-3),ne=L.length?await Promise.all(L.map(async(_)=>` ${await oo(e,_,60,s)}`)):[" (thread context unavailable)"];je(t.code,A,["--- Recent messages in thread ----------------",...ne,...f,"--- Sending ----------------------------------",R,` \u2192 ${I} thread of ${V} \u2014 THREAD REPLY`,` Message: ${c}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],F)}else je(t.code,A,["--- Last message in channel ------------------",` ${d}: ${l.split(`
|
|
194
|
+
`)[0]?.slice(0,100)??"(empty)"}`,...f,"--- Sending ----------------------------------",R,` \u2192 ${I} \u2014 NEW top-level message`,` Message: ${c}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],F)}let k=await Fs(e,i,c,r,t.broadcast,s),B="";try{B=await Dn(e,i,k,s)}catch{}if(B)console.log(`\u2713 Sent: ${B}`);else console.log(`\u2713 Sent (ts: ${k})`);if(t.asBot&&i.startsWith("D"))try{let I=await is(e);if(!I.ok)for(let R of as(I,!0))console.error(R);else{let R=I.appId?`https://api.slack.com/apps/${I.appId}`:"https://api.slack.com/apps";console.error(`Note: if ${t.target} can't reply (app messaging may be off), enable Messages Tab: ${R} \u2192 App Home.`)}}catch{}}var Td=2,Ee=3,Pd=4,Rd=1.618033988749895,Md=1000,Bd=5000,ou=8,Nd=(e)=>new Promise((t)=>setTimeout(t,e)),vd=new Set(["thread_broadcast"]),jd=/(?<![A-Za-z0-9._@<-])@(here|channel|everyone)(?![A-Za-z0-9._-])/giu;function $s(e){let t=new Set;return{text:e.replace(jd,(r,s)=>{let o=s.toLowerCase();return t.add(o),`<!${o}>`}),kinds:t}}async function Rs(e,t,n){if(!t.startsWith("D"))return;try{let r=P(await En(e,t,n)),s=P(r.channel);return s.is_im===!0&&typeof s.user==="string"?s.user:void 0}catch{return}}async function yu(e,t){let{channelId:n,ts:r,question:s,reactable:o,threadOnly:i,audience:a,broadcast:c,cookie:u,timeout:f,shown:l}=t,{askerUserId:d,askerBotId:p}=t,m=(_)=>typeof _==="string"&&!!_&&_!==d&&(c||a.has(_)),h,y="";function E(_){let C=X(_.reactions).map(P),S=[];for(let O=0;O<o.length;O++){let W=C.find((q)=>q.name===Be[O].name),G=W?X(W.users).filter(m):[];if(G.length)S.push({index:O,users:G})}return S}async function F(_,C){let S=typeof _.text==="string"?_.text:"";if(!S)return;let O=Mr(S,C);if(O===S)return;try{await Zt(e,n,r,O,u,!0)}catch(W){console.error(` (\u8CEA\u554F\u6587\u306B\u6CE8\u610F\u66F8\u304D\u3092\u5165\u308C\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${W instanceof Error?W.message:String(W)})`)}}async function A(_){let C=E(_);if(C.length<=1&&Rr(typeof _.text==="string"?_.text:"").length)await F(_,[]);if(!C.length)return null;if(C.length===1){let{index:W,users:G}=C[0];return{answer:o[W],how:`\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3 ${Be[W].glyph}`,who:G[0]}}let S=C.map((W)=>Be[W.index].glyph).join(" / ");console.error(` (${S} \u304C\u540C\u6642\u306B\u9078\u3070\u308C\u3066\u3044\u307E\u3059\u30021 \u3064\u306B\u7D5E\u3063\u3066\u3082\u3089\u3046\u307E\u3067\u5F85\u3061\u307E\u3059)`);let O=[...new Set(C.flatMap((W)=>W.users))].sort();return await F(_,O),null}let k=[...o,...t.overflow];function B(_,C=1/0){let S=[..._].sort((O,W)=>Number(O.ts)-Number(W.ts));for(let O of S){if(!(Number(O.ts)>Number(r)))continue;if(!m(O.user))continue;if(typeof O.subtype==="string"&&!vd.has(O.subtype))continue;if(Number(O.ts)>=C)break;let W=typeof O.text==="string"?O.text.trim():"";if(!W)continue;if(!k.length)return{answer:W,how:"\u8FD4\u4FE1",who:O.user};let G=Xa(W,k);if(G.kind==="chosen")return{answer:k[G.index-1],how:`\u8FD4\u4FE1 (${G.index})`,who:O.user};if(!h||Number(O.ts)<Number(h.ts))h={text:W,who:typeof O.user==="string"?O.user:"",ts:String(O.ts),ambiguous:G.kind==="ambiguous"}}return null}async function I(){if(h=void 0,t.threadParentTs){let O=P(await qe(e,n,t.threadParentTs,100,u)),W=X(O.messages).map(P),G=W.find((q)=>q.ts===r);if(G){let q=await A(G);if(q)return q}return B(W)}let _=P(await Ve(e,n,30,r,void 0,u,!0)),C=X(_.messages).map(P),S=C.find((O)=>O.ts===r);if(S){let O=await A(S);if(O)return O}if(!i){let O=C.filter((G)=>Number(G.ts)>Number(r)&&(p&&G.bot_id===p||d&&G.user===d)).reduce((G,q)=>Math.min(G,Number(q.ts)),1/0),W=B(C,O);if(W)return W}if(S&&Number(S.reply_count)>0){let O=P(await qe(e,n,r,30,u)),W=B(X(O.messages).map(P));if(W)return W}return null}async function R(_){for(let S=0;S<o.length;S++)try{await yn(e,n,r,Be[S].name,u)}catch{}let C="";if(_.who)try{C=await Ne(e,_.who,u)}catch{C=_.who}if(C)console.error(` \u56DE\u7B54\u8005: ${Q(C)}`);try{await Zt(e,n,r,Ha(s,_,C),u,!0);try{await Qt(e,n,r,Br,u),await yn(e,n,r,Ds,u)}catch{}}catch(S){console.error(` (\u5143\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u66F4\u65B0\u306B\u5931\u6557: ${S instanceof Error?S.message:String(S)})`)}}let V=Date.now()+f*1000,L=0,ne=Md;for(;;){let _=null;try{_=await I(),L=0}catch(C){if(L++,L>=ou)console.error(`Error: Slack \u3078\u306E\u554F\u3044\u5408\u308F\u305B\u306B ${L} \u56DE\u9023\u7D9A\u3067\u5931\u6557\u3057\u307E\u3057\u305F: ${C instanceof Error?C.message:String(C)}`),process.exit(Ee);console.error(` (Slack \u30A8\u30E9\u30FC ${L}/${ou}, \u518D\u8A66\u884C\u3057\u307E\u3059: ${C instanceof Error?C.message:String(C)})`)}if(_)await R(_),console.log(_.answer),process.exit(0);if(h&&h.ts!==y){y=h.ts;let C=h.who;try{if(C)C=await Ne(e,C,u)}catch{}console.error(h.ambiguous?` (${Q(C)} \u306E\u8FD4\u4FE1\u306F\u8907\u6570\u306E\u9078\u629E\u80A2\u306B\u4E00\u81F4\u3057\u307E\u3059\u30021 \u3064\u306B\u7D5E\u3063\u3066\u3082\u3089\u3046\u307E\u3067\u5F85\u3061\u307E\u3059)`:` (${Q(C)} \u304C\u8FD4\u4FE1\u3057\u307E\u3057\u305F\u304C\u3001\u9078\u629E\u80A2\u306E\u3069\u308C\u3067\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u5F85\u6A5F\u3092\u7D9A\u3051\u307E\u3059)`),console.error(` \u300C${Q(h.text)}\u300D`)}if(Date.now()>=V)break;await Nd(Math.min(ne,Math.max(0,V-Date.now()))),ne=Math.min(ne*Rd,Bd)}if(h)console.error(h.ambiguous?"Error: \u8FD4\u4FE1\u306F\u3042\u308A\u307E\u3057\u305F\u304C\u3001\u8907\u6570\u306E\u9078\u629E\u80A2\u306B\u4E00\u81F4\u3059\u308B\u305F\u3081\u78BA\u5B9A\u3067\u304D\u307E\u305B\u3093 (\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u6B8B\u3063\u3066\u3044\u307E\u3059)":"Error: \u8FD4\u4FE1\u306F\u3042\u308A\u307E\u3057\u305F\u304C\u3001\u9078\u629E\u80A2\u306E\u3069\u308C\u3082\u9078\u3070\u308C\u3066\u3044\u307E\u305B\u3093 (\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u6B8B\u3063\u3066\u3044\u307E\u3059)"),console.error(` \u8FD4\u4FE1: \u300C${Q(h.text)}\u300D`),console.error(` \u9078\u629E\u80A2: ${k.map((_,C)=>`${C+1}. ${Q(Gt(_))}`).join(" ")}`),console.error(` ${l}`),console.error(` \u8FD4\u7B54\u3057\u3066\u304B\u3089\u56DE\u53CE\u3059\u308B: ${io(l,t.asBot)}`),process.exit(Pd);if(f===0)console.error(`\u307E\u3060\u56DE\u7B54\u304C\u3042\u308A\u307E\u305B\u3093: ${l}`);else console.error(`Error: ${f}s \u4EE5\u5185\u306B\u56DE\u7B54\u304C\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F (\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u6B8B\u3063\u3066\u3044\u307E\u3059)`),console.error(` ${l}`),console.error(` \u3042\u3068\u3067\u56DE\u53CE\u3059\u308B: ${io(l,t.asBot)}`);process.exit(Td)}function io(e,t){return`slack ask --waitFor='${e}'${t?" --as-bot":""}`}async function Ld(e,t){let{ref:n,threadTs:r}=$n(t.target,!1),s=t.cookie,o=Lt(e,s),i;if(t.channelId)i=t.channelId;else if(t.userId)i=await et(e,t.userId,s);else i=await De(e,n,s);let a=(await o())?.userId??"",c=await Rs(e,i,s);if(!t.asBot&&!!a&&c===a)console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own message.
|
|
195
|
+
`+` To reach yourself with a notification, ask as the bot: slack ask '${t.target}' '...' --as-bot`);let u=$s(ft(t.question)),f=$s(ft(t.body??"")),l=new Set([...u.kinds,...f.kinds]),d=t.mentionToken??e,p=await jt(d,u.text,i,t.mentionCookie),m=f.text?await jt(d,f.text,i,t.mentionCookie):{text:"",resolved:[],unresolved:[]},h=p.text,y=m.text,E=[...p.resolved,...m.resolved],F=[...p.unresolved,...m.unresolved];for(let ee of _n(F))console.error(`\u26A0 ${Q(ee)}`);let A=l.size>0,k=new Set(E.map((ee)=>ee.userId).filter((ee)=>ee!==a)),B=new Map(E.map((ee)=>[ee.userId,ee.display])),I;if(A)I=`anyone in ${n} (${[...l].map((ee)=>`@${ee}`).join(", ")})`;else{if(!k.size&&c&&c!==a)k.add(c),B.set(c,await Ne(e,c,s));if(!k.size)console.error("Error: `ask` will not post a question nobody is addressed to \u2014 no one is tagged.\n"+(F.length?` (${F.map((ee)=>Q(ee.surface)).join(", ")} matched no one, so it names nobody.)
|
|
196
196
|
`:"")+` Tag the person who should answer: slack ask '${t.target}' '@alice ${t.question}' ...
|
|
197
197
|
Or open it to the whole channel: slack ask '${t.target}' '@here ${t.question}' ...
|
|
198
|
-
(In a 1:1 DM the other person counts automatically.)`),process.exit(Ee);I=[...k].map((ee)=>`@${Q(B.get(ee)??ee)} (${ee})`).join(", ")}let R=t.choices.map(ft),V=R.slice(0,ms),L=R.slice(ms),ne=!i.startsWith("D")||!!r,_=za(h,y,V,L,ne);
|
|
199
|
-
`)[0]?.slice(0,100)??"(empty)"}`,...N,"--- Asking -----------------------------------",Le(O,{asBot:t.asBot}),` \u2192 ${ee}${r?" \u2014 THREAD REPLY":" \u2014 NEW top-level message"}`,` Question: ${h}`,` Answerable by: ${I}`,` Via: ${ne?"reactions or thread replies":"reactions or replies in this DM"}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],W)}let q=await Fs(e,i,_,r,!1,s,!0);await
|
|
198
|
+
(In a 1:1 DM the other person counts automatically.)`),process.exit(Ee);I=[...k].map((ee)=>`@${Q(B.get(ee)??ee)} (${ee})`).join(", ")}let R=t.choices.map(ft),V=R.slice(0,ms),L=R.slice(ms),ne=!i.startsWith("D")||!!r,_=za(h,y,V,L,ne);Hn(_,t.allowUrlAdjacent);let C="",S="?";try{let ee=await Ve(e,i,1,void 0,void 0,s),N=X(ee.messages).map(P).filter((we)=>we.subtype===void 0||we.subtype===null)[0];C=typeof N?.text==="string"?N.text:"",S=typeof N?.user==="string"?await Ne(e,N.user,s):typeof N?.username==="string"?N.username:"?"}catch{}let O=await o(),W=await Ts(e,i,s),G=Ye(i,r??"",C,_,O?.userId??"");if(t.code!==G){let ee=await Ps(e,i,n,s),N=V.length?["--- Choices (seeded as reactions) ------------",...V.map((we,Wt)=>` ${Be[Wt].glyph} ${Gt(we)}`),...L.map((we,Wt)=>` (${Wt+11}) ${Gt(we)} \u2014 text answer only`)]:["--- Choices ----------------------------------"," (none \u2014 free-text reply)"];je(t.code,G,["--- Last message in channel ------------------",` ${S}: ${C.split(`
|
|
199
|
+
`)[0]?.slice(0,100)??"(empty)"}`,...N,"--- Asking -----------------------------------",Le(O,{asBot:t.asBot}),` \u2192 ${ee}${r?" \u2014 THREAD REPLY":" \u2014 NEW top-level message"}`,` Question: ${h}`,` Answerable by: ${I}`,` Via: ${ne?"reactions or thread replies":"reactions or replies in this DM"}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],W)}let q=await Fs(e,i,_,r,!1,s,!0);await Ur([Ds,...V.map((ee,N)=>Be[N].name)],(ee)=>Qt(e,i,q,ee,s),(ee,N)=>{let we=N instanceof Error?N.message:String(N);if(ee===Ds)console.error(` (marker ${ee} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${we})`);else console.error(` (\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3 ${ee} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${we})`)});let ae="";try{ae=await Dn(e,i,q,s)}catch{}let Ie=ae||`${i}:${q}`;if(console.error(`\u2713 Asked: ${Ie}`),!t.wait){console.log(io(Ie,!!t.asBot));return}let te=t.timeout??3600;console.error(` \u56DE\u7B54\u3092\u5F85\u3063\u3066\u3044\u307E\u3059 (\u6700\u5927 ${te}s)\u2026 Ctrl-C \u3067\u4E2D\u65AD`);let ke={channelId:i,ts:q,question:h,reactable:V,overflow:L,threadOnly:ne,audience:k,broadcast:A,askerUserId:O?.userId??"",askerBotId:O?.botId??"",timeout:te,shown:Ie,asBot:!!t.asBot};if(r)ke.threadParentTs=r;if(s)ke.cookie=s;await yu(e,ke)}async function Wd(e,t){let n=Nt(t.link),r,s,o;if(n?.ts)r=n.channel,s=n.ts,o=n.threadTs&&n.threadTs!==n.ts?n.threadTs:void 0;else{let m=t.link.match(/^([A-Za-z0-9]+):(\d{10}\.\d{6})$/);if(!m)console.error(`Error: --waitFor needs the permalink of a question (or 'C\u2026:1700000000.000100').
|
|
200
200
|
`+` Got: ${Q(t.link)}`),process.exit(Ee);r=m[1],s=m[2]}let i;if(o){let m=P(await qe(e,r,o,100,t.cookie));i=X(m.messages).map(P).find((h)=>h.ts===s)}else{let m=P(await Ve(e,r,1,s,void 0,t.cookie,!0));i=X(m.messages).map(P).find((h)=>h.ts===s)}if(!i)console.error(`Error: \u305D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${Q(t.link)}`),process.exit(Ee);let a=typeof i.text==="string"?i.text:"",c=Ya(a);if(c.kind==="other")console.error("Error: \u3053\u308C\u306F `slack ask` \u306E\u8CEA\u554F\u3068\u3057\u3066\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3002\n"+` \u7406\u7531: ${qa(a)}
|
|
201
201
|
${Q(t.link)}
|
|
202
|
-
`+` (\u62BC\u3055\u308C\u305F\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u6B8B\u3063\u3066\u3044\u307E\u3059: slack read '${Q(t.link)}' \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059)`),process.exit(Ee);if(c.kind==="resolved"){console.error(`\u2713 \u56DE\u7B54\u6E08\u307F: ${Q(c.question)}`),console.log(c.answer);return}let u=typeof i.user==="string"?i.user:"",f=typeof i.bot_id==="string"?i.bot_id:"",l=/<!(here|channel|everyone)(\^[^>]*)?(\|[^>]*)?>/.test(a),d=new Set;for(let m of a.matchAll(/<@([UW][A-Z0-9]+)>/g))if(m[1]!==u)d.add(m[1]);if(!d.size&&!l){let m=await Rs(e,r,t.cookie);if(m&&m!==u)d.add(m)}if(!d.size&&!l)console.error(`Error: \u3053\u306E\u8CEA\u554F\u306F\u8AB0\u306B\u3082\u5B9B\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u6709\u52B9\u306A\u56DE\u7B54\u8005\u3092\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093: ${Q(t.link)}`),process.exit(Ee);if(t.timeout>0)console.error(` \u56DE\u7B54\u3092\u5F85\u3063\u3066\u3044\u307E\u3059 (\u6700\u5927 ${t.timeout}s)\u2026 Ctrl-C \u3067\u4E2D\u65AD`);let p={channelId:r,ts:s,question:c.question,reactable:c.reactable,overflow:c.overflow,threadOnly:c.threadOnly,audience:d,broadcast:l,askerUserId:u,askerBotId:f,timeout:t.timeout,shown:t.link,asBot:t.asBot};if(o)p.threadParentTs=o;if(t.cookie)p.cookie=t.cookie;await yu(e,p)}var ve=3;function Ud(e){return`slack poll --results='${e}'`}async function Kd(e,t){let{ref:n,threadTs:r}
|
|
203
|
-
`+` To reach yourself with a notification, post as the bot: slack poll '${t.target}' '...' --as-bot`);let u=$s(ft(t.question)),f=$s(ft(t.body??"")),l=t.mentionToken??e,d=await jt(l,u.text,i,t.mentionCookie),p=f.text?await jt(l,f.text,i,t.mentionCookie):{text:"",resolved:[],unresolved:[]},m=d.text,h=p.text;for(let C of
|
|
204
|
-
`)[0]?.slice(0,100)??"(empty)"}`,"--- Ballot (seeded as reactions) -------------",...y.map((S,O)=>` ${ze[O].glyph} ${
|
|
205
|
-
`+` Got: ${Q(t)}`),process.exit(ve);s=c[1],o=c[2]}let a;if(i){let c=P(await qe(e,s,i,100,n));a=X(c.messages).map(P).find((u)=>u.ts===o)}else{let c=P(await Ve(e,s,1,o,void 0,n,!0));a=X(c.messages).map(P).find((u)=>u.ts===o)}if(!a)console.error(`Error: \u305D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${Q(t)}`),process.exit(ve);return{channelId:s,ts:o,msg:a}}function iu(e){let t=Math.max(1,...e.map((n)=>n.count));return e.map((n,r)=>`${ze[r].glyph} ${String(n.count).padStart(3)} ${"\u2588".repeat(Math.round(n.count/t*20))}${n.count?" ":""}${n.choice}`)}async function zd(e,t){let{channelId:n,ts:r,msg:s}=await Jd(e,t.link,t.cookie),o=typeof s.text==="string"?s.text:"",i=sc(o);if(i.kind==="other")console.error("Error: \u3053\u308C\u306F `slack poll` \u306E\u6295\u7968\u3067\u306F\u3042\u308A\u307E\u305B\u3093 (\u7968\u306E\u6570\u3048\u65B9\u304C\u5206\u304B\u308A\u307E\u305B\u3093)\u3002\n"+` ${Q(t.link)}`),process.exit(ve);if(i.kind==="closed"){console.error(`\u2713 \u6295\u7968\u7D42\u4E86: ${Q(i.question)}`);for(let p of iu(i.tallies))console.log(p);return}let a=new Set;if(typeof s.user==="string"&&s.user)a.add(s.user);let c=await wc(e,n,r,t.cookie),u=rc(i.choices,c,a,i.multi);console.error(`${Q(i.question)}${i.deadline?` (\u7DE0\u5207 ${i.deadline})`:""}`);for(let p of iu(u.tallies))console.log(p);let f=u.tallies.reduce((p,m)=>p+m.count,0);if(console.error(` \u8A08 ${f} \u7968${i.multi?" (\u8907\u6570\u9078\u629E\u53EF)":""}`),t.names)for(let p=0;p<u.voters.length;p++){if(!u.voters[p].length)continue;let m=await Promise.all(u.voters[p].map((h)=>Ne(e,h,t.cookie)));console.error(` ${ze[p].glyph} ${m.map((h)=>`@${Q(h)}`).join(", ")}`)}let l=i.multi?[]:u.ambiguous,d=
|
|
206
|
-
`+" \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u66F8\u304D\u63DB\u3048\u3089\u308C\u308B\u306E\u306F\u6295\u7A3F\u8005\u3060\u3051\u3067\u3059 \u2014 bot \u304C\u6295\u7A3F\u3057\u305F\u6295\u7968\u306A\u3089 --as-bot \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002")}if(u.ambiguous.length){let p=await Promise.all(u.ambiguous.map((m)=>Ne(e,m,t.cookie)));console.error(`\u26A0 1 \u4EBA 1 \u7968\u306A\u306E\u306B\u8907\u6570\u62BC\u3057\u3066\u3044\u308B\u4EBA\u304C\u3044\u307E\u3059 (\u7121\u52B9\u7968): ${p.map((m)=>`@${Q(m)}`).join(", ")}`)}if(!t.close)return;await Zt(t.writeToken??e,n,r,nc(i.question,u.tallies),t.writeToken?t.writeCookie:t.cookie,!0);try{await Qt(t.writeToken??e,n,r,
|
|
207
|
-
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);return e}async function au(e,t,n,r){let s=await tt(n,e,r);return et(t,s)}function qd(e){if(/^\d{10,}$/.test(e))return parseInt(e,10);let t=new Date(e.replace(" ","T"));if(isNaN(t.getTime()))throw Error(`Cannot parse time: ${e}`);return Math.floor(t.getTime()/1000)}function Yd(e){let t=new Date(e*1000);return`${new Intl.DateTimeFormat("sv-SE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZoneName:"short"}).format(t).replace(/\u2212/g,"-")} (local) / ${t.toISOString()} (Unix: ${e})`}async function Xd(e,t){let n=Lt(e,t.cookie),{ref:r,threadTs:s}
|
|
202
|
+
`+` (\u62BC\u3055\u308C\u305F\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u6B8B\u3063\u3066\u3044\u307E\u3059: slack read '${Q(t.link)}' \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059)`),process.exit(Ee);if(c.kind==="resolved"){console.error(`\u2713 \u56DE\u7B54\u6E08\u307F: ${Q(c.question)}`),console.log(c.answer);return}let u=typeof i.user==="string"?i.user:"",f=typeof i.bot_id==="string"?i.bot_id:"",l=/<!(here|channel|everyone)(\^[^>]*)?(\|[^>]*)?>/.test(a),d=new Set;for(let m of a.matchAll(/<@([UW][A-Z0-9]+)>/g))if(m[1]!==u)d.add(m[1]);if(!d.size&&!l){let m=await Rs(e,r,t.cookie);if(m&&m!==u)d.add(m)}if(!d.size&&!l)console.error(`Error: \u3053\u306E\u8CEA\u554F\u306F\u8AB0\u306B\u3082\u5B9B\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u6709\u52B9\u306A\u56DE\u7B54\u8005\u3092\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093: ${Q(t.link)}`),process.exit(Ee);if(t.timeout>0)console.error(` \u56DE\u7B54\u3092\u5F85\u3063\u3066\u3044\u307E\u3059 (\u6700\u5927 ${t.timeout}s)\u2026 Ctrl-C \u3067\u4E2D\u65AD`);let p={channelId:r,ts:s,question:c.question,reactable:c.reactable,overflow:c.overflow,threadOnly:c.threadOnly,audience:d,broadcast:l,askerUserId:u,askerBotId:f,timeout:t.timeout,shown:t.link,asBot:t.asBot};if(o)p.threadParentTs=o;if(t.cookie)p.cookie=t.cookie;await yu(e,p)}var ve=3;function Ud(e){return`slack poll --results='${e}'`}async function Kd(e,t){let{ref:n,threadTs:r}=$n(t.target,!1),s=t.cookie,o=Lt(e,s),i;if(t.channelId)i=t.channelId;else if(t.userId)i=await et(e,t.userId,s);else i=await De(e,n,s);let a=(await o())?.userId??"",c=await Rs(e,i,s);if(!t.asBot&&!!a&&c===a)console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own message.
|
|
203
|
+
`+` To reach yourself with a notification, post as the bot: slack poll '${t.target}' '...' --as-bot`);let u=$s(ft(t.question)),f=$s(ft(t.body??"")),l=t.mentionToken??e,d=await jt(l,u.text,i,t.mentionCookie),p=f.text?await jt(l,f.text,i,t.mentionCookie):{text:"",resolved:[],unresolved:[]},m=d.text,h=p.text;for(let C of _n([...d.unresolved,...p.unresolved]))console.error(`\u26A0 ${Q(C)}`);let y=t.choices.map(ft),E=!!t.multi,F=t.until??"",A=tc(m,h,y,{multi:E,deadline:F}),k="",B="?";try{let C=await Ve(e,i,1,void 0,void 0,s),S=X(C.messages).map(P).filter((O)=>O.subtype===void 0||O.subtype===null)[0];k=typeof S?.text==="string"?S.text:"",B=typeof S?.user==="string"?await Ne(e,S.user,s):typeof S?.username==="string"?S.username:"?"}catch{}let I=await o(),R=await Ts(e,i,s),V=Ye(i,r??"",k,A,I?.userId??"");if(t.code!==V){let C=await Ps(e,i,n,s);je(t.code,V,["--- Last message in channel ------------------",` ${B}: ${k.split(`
|
|
204
|
+
`)[0]?.slice(0,100)??"(empty)"}`,"--- Ballot (seeded as reactions) -------------",...y.map((S,O)=>` ${ze[O].glyph} ${pn(S)}`),"--- Posting ----------------------------------",Le(I,{asBot:t.asBot}),` \u2192 ${C}${r?" \u2014 THREAD REPLY":" \u2014 NEW top-level message"}`,` Question: ${m}`,` Rule: ${E?"1 \u4EBA \u4F55\u7968\u3067\u3082 (--multi)":"1 \u4EBA 1 \u7968"}${F?` \u2014 \u7DE0\u5207 ${F}`:""}`," Note: \u3042\u306A\u305F\u81EA\u8EAB\u306E\u7968\u306F\u6570\u3048\u307E\u305B\u3093 (\u30D4\u30EB\u306F\u3042\u306A\u305F\u304C\u4ED8\u3051\u305F\u7A2E\u306A\u306E\u3067\u533A\u5225\u3067\u304D\u307E\u305B\u3093)","--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],R)}let L=await Fs(e,i,A,r,!1,s,!0);await Ur([gn,...y.map((C,S)=>ze[S].name)],(C)=>Qt(e,i,L,C,s),(C,S)=>{let O=S instanceof Error?S.message:String(S);if(C===gn)console.error(` (marker ${C} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${O})`);else console.error(` (\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3 ${C} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${O})`)});let ne="";try{ne=await Dn(e,i,L,s)}catch{}let _=ne||`${i}:${L}`;console.error(`\u2713 Posted: ${_}`),console.log(Ud(_)),console.error(` \u7DE0\u3081\u5207\u308B: slack poll --close='${_}'${t.asBot?" --as-bot":""}`)}async function Jd(e,t,n){let r=Nt(t),s,o,i;if(r?.ts)s=r.channel,o=r.ts,i=r.threadTs&&r.threadTs!==r.ts?r.threadTs:void 0;else{let c=t.match(/^([A-Za-z0-9]+):(\d{10}\.\d{6})$/);if(!c)console.error(`Error: --results/--close needs the permalink of a poll (or 'C\u2026:1700000000.000100').
|
|
205
|
+
`+` Got: ${Q(t)}`),process.exit(ve);s=c[1],o=c[2]}let a;if(i){let c=P(await qe(e,s,i,100,n));a=X(c.messages).map(P).find((u)=>u.ts===o)}else{let c=P(await Ve(e,s,1,o,void 0,n,!0));a=X(c.messages).map(P).find((u)=>u.ts===o)}if(!a)console.error(`Error: \u305D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${Q(t)}`),process.exit(ve);return{channelId:s,ts:o,msg:a}}function iu(e){let t=Math.max(1,...e.map((n)=>n.count));return e.map((n,r)=>`${ze[r].glyph} ${String(n.count).padStart(3)} ${"\u2588".repeat(Math.round(n.count/t*20))}${n.count?" ":""}${n.choice}`)}async function zd(e,t){let{channelId:n,ts:r,msg:s}=await Jd(e,t.link,t.cookie),o=typeof s.text==="string"?s.text:"",i=sc(o);if(i.kind==="other")console.error("Error: \u3053\u308C\u306F `slack poll` \u306E\u6295\u7968\u3067\u306F\u3042\u308A\u307E\u305B\u3093 (\u7968\u306E\u6570\u3048\u65B9\u304C\u5206\u304B\u308A\u307E\u305B\u3093)\u3002\n"+` ${Q(t.link)}`),process.exit(ve);if(i.kind==="closed"){console.error(`\u2713 \u6295\u7968\u7D42\u4E86: ${Q(i.question)}`);for(let p of iu(i.tallies))console.log(p);return}let a=new Set;if(typeof s.user==="string"&&s.user)a.add(s.user);let c=await wc(e,n,r,t.cookie),u=rc(i.choices,c,a,i.multi);console.error(`${Q(i.question)}${i.deadline?` (\u7DE0\u5207 ${i.deadline})`:""}`);for(let p of iu(u.tallies))console.log(p);let f=u.tallies.reduce((p,m)=>p+m.count,0);if(console.error(` \u8A08 ${f} \u7968${i.multi?" (\u8907\u6570\u9078\u629E\u53EF)":""}`),t.names)for(let p=0;p<u.voters.length;p++){if(!u.voters[p].length)continue;let m=await Promise.all(u.voters[p].map((h)=>Ne(e,h,t.cookie)));console.error(` ${ze[p].glyph} ${m.map((h)=>`@${Q(h)}`).join(", ")}`)}let l=i.multi?[]:u.ambiguous,d=Mr(o,l);if(d!==o&&!t.noNotify)try{await Zt(t.writeToken??e,n,r,d,t.writeToken?t.writeCookie:t.cookie,!0)}catch(p){console.error(` (\u6295\u7968\u6587\u306B\u6CE8\u610F\u66F8\u304D\u3092\u5165\u308C\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${p instanceof Error?p.message:String(p)})
|
|
206
|
+
`+" \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u66F8\u304D\u63DB\u3048\u3089\u308C\u308B\u306E\u306F\u6295\u7A3F\u8005\u3060\u3051\u3067\u3059 \u2014 bot \u304C\u6295\u7A3F\u3057\u305F\u6295\u7968\u306A\u3089 --as-bot \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002")}if(u.ambiguous.length){let p=await Promise.all(u.ambiguous.map((m)=>Ne(e,m,t.cookie)));console.error(`\u26A0 1 \u4EBA 1 \u7968\u306A\u306E\u306B\u8907\u6570\u62BC\u3057\u3066\u3044\u308B\u4EBA\u304C\u3044\u307E\u3059 (\u7121\u52B9\u7968): ${p.map((m)=>`@${Q(m)}`).join(", ")}`)}if(!t.close)return;await Zt(t.writeToken??e,n,r,nc(i.question,u.tallies),t.writeToken?t.writeCookie:t.cookie,!0);try{await Qt(t.writeToken??e,n,r,Wr,t.writeToken?t.writeCookie:t.cookie),await yn(t.writeToken??e,n,r,gn,t.writeToken?t.writeCookie:t.cookie)}catch{}console.error(`\u2713 \u6295\u7968\u3092\u7DE0\u3081\u5207\u308A\u307E\u3057\u305F: ${Q(t.link)}`)}async function Hd(e){let t=await is(e);for(let n of as(t,!1))console.log(n);if(!t.ok)process.exit(1)}function so(){let e=ut();if(!e)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
|
|
207
|
+
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);return e}async function au(e,t,n,r){let s=await tt(n,e,r);return et(t,s)}function qd(e){if(/^\d{10,}$/.test(e))return parseInt(e,10);let t=new Date(e.replace(" ","T"));if(isNaN(t.getTime()))throw Error(`Cannot parse time: ${e}`);return Math.floor(t.getTime()/1000)}function Yd(e){let t=new Date(e*1000);return`${new Intl.DateTimeFormat("sv-SE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZoneName:"short"}).format(t).replace(/\u2212/g,"-")} (local) / ${t.toISOString()} (Unix: ${e})`}async function Xd(e,t){let n=Lt(e,t.cookie),{ref:r,threadTs:s}=$n(t.target),o;if(t.channelId)o=t.channelId;else if(t.userId)o=await et(e,t.userId,t.cookie);else o=await De(e,r,t.cookie);let i=qd(t.at),a=new Date(i*1000).toISOString(),c=await n();if(!t.asBot&&await lo(e,o,c?.userId,t.cookie))console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you when this fires.
|
|
208
208
|
`+` To be notified, schedule it as the bot: slack schedule send '${t.target}' '...' --at '${t.at}' --as-bot`);let u=Ye(o,t.message,String(i),c?.userId??""),f=t.targetOverride?` [${t.targetOverride} \u2192 ${o}]`:"";if(t.code!==u){let d=await Ts(e,o,t.cookie);je(t.code,u,["--- Scheduling message -----------------------",Le(c,{asBot:t.asBot,pad:9}),` To: ${r}${s?` (thread ${s})`:""}${f}`,` At: ${Yd(i)}`,` Message: ${t.message}`,"---------------------------------------------"],d,new Date(i*1000))}let l=await mc(e,o,t.message,i,s,t.cookie);if(console.log(`\u2713 Scheduled (id: ${l}, at: ${a})`),t.asBot){if(console.error(` Scheduled as the bot \u2014 the user token cannot see or cancel it. Use the same flag:
|
|
209
209
|
`+` slack schedule ls --as-bot
|
|
210
210
|
slack schedule rm '${t.target}' ${l} --as-bot`),o.startsWith("D"))try{let d=await is(e);if(!d.ok)for(let p of as(d,!0))console.error(p);else{let p=d.appId?`https://api.slack.com/apps/${d.appId}`:"https://api.slack.com/apps";console.error(`Note: if ${t.target} can't reply (app messaging may be off), enable Messages Tab: ${p} \u2192 App Home.`)}}catch{}}}async function cu(e,t,n,r){let s;if(n)s=n;else if(t)s=await De(e,t,r);let i=(await Dc(e,s,r)).scheduled_messages??[];if(i.length===0){console.log("(no scheduled messages)");return}for(let a of i){let c=new Date(a.post_at*1000).toISOString();console.log(`${a.id} ${c} [${a.channel_id}] ${a.text.split(`
|
|
211
|
-
`)[0]?.slice(0,80)??""}`)}}async function uu(e,t){let n;if(t.channelId)n=t.channelId;else n=await De(e,t.target,t.cookie);let r=await nn(e,t.cookie),s=Ye(n,t.id,r?.userId??"");if(t.code!==s)je(t.code,s,["--- Deleting scheduled message ---------------",Le(r,{asBot:t.asBot,pad:9}),` Channel: ${t.target}${t.targetOverride?` [${t.targetOverride} \u2192 ${n}]`:""}`,` ID: ${t.id}`,"---------------------------------------------"]);await yc(e,n,t.id,t.cookie),console.log(`\u2713 Deleted scheduled message ${t.id}`)}async function Gd(e,t){let n=Lt(e,t.cookie),{statSync:r,existsSync:s}=await import("fs"),{basename:o}=await import("path");for(let m of t.filePaths)if(!s(m))console.error(`Error: file not found: ${m}`),process.exit(1);let{ref:i,threadTs:a}
|
|
211
|
+
`)[0]?.slice(0,80)??""}`)}}async function uu(e,t){let n;if(t.channelId)n=t.channelId;else n=await De(e,t.target,t.cookie);let r=await nn(e,t.cookie),s=Ye(n,t.id,r?.userId??"");if(t.code!==s)je(t.code,s,["--- Deleting scheduled message ---------------",Le(r,{asBot:t.asBot,pad:9}),` Channel: ${t.target}${t.targetOverride?` [${t.targetOverride} \u2192 ${n}]`:""}`,` ID: ${t.id}`,"---------------------------------------------"]);await yc(e,n,t.id,t.cookie),console.log(`\u2713 Deleted scheduled message ${t.id}`)}async function Gd(e,t){let n=Lt(e,t.cookie),{statSync:r,existsSync:s}=await import("fs"),{basename:o}=await import("path");for(let m of t.filePaths)if(!s(m))console.error(`Error: file not found: ${m}`),process.exit(1);let{ref:i,threadTs:a}=$n(t.target),c;if(t.channelId)c=t.channelId;else if(t.userId)c=await et(e,t.userId,t.cookie);else c=await De(e,i,t.cookie);if(await lo(e,c,(await n())?.userId,t.cookie))console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own upload.`);let u=t.filePaths.length>1,f=t.filePaths.map((m)=>{let h=o(m),y=u?h:t.title??h;return{fp:m,filename:h,title:y,sizeFmt:Is(r(m).size)}}),l=await n(),d=Ye(c,...f.flatMap((m)=>[m.fp,m.title]),l?.userId??"");if(t.code!==d){let m=` To: ${i}${a?` (thread ${a})`:""}`,h=u?[`--- Uploading ${f.length} files ------------------------`,Le(l,{pad:7}),m,...f.map((y)=>` ${y.filename} (${y.sizeFmt})`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]:["--- Uploading file ---------------------------",Le(l,{pad:7}),m,` File: ${f[0].fp}`,` Title: ${f[0].title}`,` Size: ${f[0].sizeFmt}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"];je(t.code,d,h)}let p=f.length;for(let m=0;m<p;m++){let h=f[m],y={title:h.title};if(a!==void 0)y.threadTs=a;if(t.comment!==void 0&&m===0)y.initialComment=t.comment;let{fileId:E,permalink:F}=await Pc(e,c,h.fp,y,t.cookie),A=p>1?`[${m+1}/${p}] `:"";console.log(`${A}\u2713 Uploaded (file_id: ${E}${F?`, url: ${F}`:""})`)}}async function Vd(e,t,n){let r=n.channel?await De(e,n.channel,t):void 0,s=[],o=1,i=1;do{let c={page:o,count:200};if(n.types)c.types=n.types;if(r)c.channel=r;if(n.user)c.user=n.user;let u=P(await dc(e,c,t));for(let f of X(u.files))s.push(P(f));i=Number(P(u.paging).pages??1),o++}while(s.length<n.limit&&o<=i);let a=s.slice(0,n.limit);if(n.format==="jsonl"){for(let c of a)console.log(JSON.stringify({id:c.id??null,name:c.name??c.title??null,filetype:c.filetype??null,size:c.size??null,user:c.user??null,created:c.created??null,permalink:c.permalink??null}));return}for(let c of a){let u=String(c.id??""),f=typeof c.name==="string"?c.name:typeof c.title==="string"?c.title:u,l=typeof c.filetype==="string"?c.filetype:"?",d=typeof c.size==="number"?Is(c.size):"";console.log(`${u} ${l.padEnd(7)} ${d.padStart(9)} ${f}`)}}function Zd(e){if(/^F[A-Z0-9]+$/i.test(e))return e;return e.match(/\/lists\/[A-Za-z0-9]+\/(F[A-Za-z0-9]+)/i)?.[1]??e.match(/\/lists\/(F[A-Za-z0-9]+)/i)?.[1]}function Qd(e){if(typeof e.text==="string"&&e.text)return e.text;let t=e.value;if(typeof t==="string"||typeof t==="number"||typeof t==="boolean")return String(t);if(Array.isArray(t))return t.map((n)=>typeof n==="string"?n:String(P(n).text??P(n).name??P(n).value??"")).filter(Boolean).join(", ");for(let n of["rich_text","select","user","date","number","checkbox","email","phone"]){let r=e[n];if(r!=null)return typeof r==="object"?JSON.stringify(r):String(r)}return""}async function eh(e,t,n,r){let s=Zd(n);if(!s)throw Error(`Not a list ID or list URL: ${n}
|
|
212
212
|
`+"Expected F\u2026 or https://<ws>.slack.com/lists/<TEAM>/<F-id>");let o=[],i;do{let c={limit:200};if(i)c.cursor=i;let u=P(await hc(e,s,c,t));for(let l of X(u.items??u.records))o.push(P(l));let f=P(u.response_metadata).next_cursor;i=typeof f==="string"&&f?f:void 0}while(i&&o.length<r.limit);let a=o.slice(0,r.limit);if(r.format==="jsonl"){for(let c of a)console.log(JSON.stringify(c));return}for(let c of a){let u=String(c.id??""),f=X(c.fields).map(P).map((l)=>{let d=String(l.key??l.column_id??"?"),p=Qd(l);return p?`${d}=${p}`:""}).filter(Boolean);console.log(`${u} ${f.join(" | ")}`)}}function th(e){if(/^F[A-Z0-9]+$/i.test(e))return e;return e.match(/\/files\/[A-Za-z0-9]+\/(F[A-Za-z0-9]+)/)?.[1]}async function nh(e,t,n,r){let s=th(n);if(!s)throw Error(`Not a file ID or file permalink: ${n}
|
|
213
|
-
`+"Expected F\u2026 or https://<ws>.slack.com/files/<UID>/<FID>/<name>");let o=P(await fc(e,s,t)),i=P(o.file),a=typeof i.name==="string"?i.name:typeof i.title==="string"?i.title:s,c=typeof i.url_private_download==="string"?i.url_private_download:typeof i.url_private==="string"?i.url_private:"";if(!c)throw Error(`files.info returned no download URL for ${s}`);let u={Authorization:`Bearer ${e}`};if(t)u.Cookie=`d=${t}`;let f=await fetch(c,{headers:u});if(!f.ok)throw Error(`Download failed: HTTP ${f.status} ${f.statusText}`);let l=Buffer.from(await f.arrayBuffer()),{statSync:d,existsSync:p}=await import("fs"),{basename:m}=await import("path"),h=r??a;if(r&&p(r)&&d(r).isDirectory())h=ht(r,m(a));fu(h,l),console.log(`\u2713 Downloaded ${a} (${Is(l.length)}) \u2192 ${h}`)}async function sh(){id();let e=(s)=>
|
|
214
|
-
`),await ds(),process.exit(0);throw i}},!0).command(["read [target]","msgs [target]"],"Browse messages",(s)=>s.positional("target",{type:"string",describe:"#channel, @user, or URL"}).option("limit",{alias:"n",type:"number",default:20,describe:"Number of messages"}).option("format",{type:"string",choices:["text","jsonl"],default:"text",describe:"jsonl exposes raw ts/user/text (incl. external-guest user IDs)"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}).option("unreplied",{type:"boolean",default:!1,describe:"Only messages whose last word (incl. thread replies) is not yours \u2014 i.e. awaiting your answer"}),async(s)=>{let o=e(s),i=s.json?"jsonl":s.format;if(s.target)await fd(o,s.target,s.limit,i,s.unreplied,t(s));else await hd(o)}).command("thread <target> <ts>","Show thread messages",(s)=>s.positional("target",{type:"string",demandOption:!0}).positional("ts",{type:"string",demandOption:!0}).option("limit",{alias:"n",type:"number",default:100}).option("format",{type:"string",choices:["text","jsonl"],default:"text",describe:"jsonl exposes raw ts/user/text (incl. external-guest user IDs)"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(s)=>{let o=s.json?"jsonl":s.format;await dd(e(s),s.target,s.ts,s.limit,o,t(s))}).command(["channel","channels","ch"],"Channel commands",(s)=>s.command(["ls","list"],"List channels",(o)=>o.option("limit",{alias:"n",type:"number",default:200}).option("filter",{alias:"f",type:"string"}).option("all",{type:"boolean",default:!1}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(o)=>{await gd(e(o),o.limit,o.filter,o.all,o.json?"jsonl":o.format)}).command("get <channel>","Show channel details",(o)=>o.positional("channel",{type:"string",demandOption:!0,describe:"#name or channel ID"}),async(o)=>{let i=e(o),a=t(o),c=o.channel,u=c.startsWith("#")||c.startsWith("@")||c.startsWith("C")||c.startsWith("G")||c.startsWith("D")?c:`#${c}`,f=await De(i,u,a),l=P(await
|
|
213
|
+
`+"Expected F\u2026 or https://<ws>.slack.com/files/<UID>/<FID>/<name>");let o=P(await fc(e,s,t)),i=P(o.file),a=typeof i.name==="string"?i.name:typeof i.title==="string"?i.title:s,c=typeof i.url_private_download==="string"?i.url_private_download:typeof i.url_private==="string"?i.url_private:"";if(!c)throw Error(`files.info returned no download URL for ${s}`);let u={Authorization:`Bearer ${e}`};if(t)u.Cookie=`d=${t}`;let f=await fetch(c,{headers:u});if(!f.ok)throw Error(`Download failed: HTTP ${f.status} ${f.statusText}`);let l=Buffer.from(await f.arrayBuffer()),{statSync:d,existsSync:p}=await import("fs"),{basename:m}=await import("path"),h=r??a;if(r&&p(r)&&d(r).isDirectory())h=ht(r,m(a));fu(h,l),console.log(`\u2713 Downloaded ${a} (${Is(l.length)}) \u2192 ${h}`)}async function sh(){id();let e=(s)=>ln(s.workspace),t=(s)=>br(s.workspace),n={state:{type:"string",choices:["open","untriaged","pending","doing","done","dropped","stuck"],default:"open",describe:"open (default) = marked and not done/dropped; untriaged = marked with no progress; stuck = unfinished with a reason flag"},in:{type:"string",describe:"Limit to a channel (#chan)"},from:{type:"string",describe:"Limit to a sender (@user, or 'me') \u2014 usually the person a task is waiting on"},n:{alias:"count",type:"number",default:50,describe:"Max results"},json:{type:"boolean",default:!1}},r=async(s,o)=>{let i={state:s.state??"open",mine:o||s.mine===!0,count:s.n??50,json:s.json===!0};if(s.in)i.in=s.in;if(s.from)i.from=s.from;let a=t(s);if(a)i.cookie=a;await Dd(e(s),i)};await qi(Gs(process.argv)).scriptName("slack").showHelpOnFail(!1).fail((s,o,i)=>{if(o)console.error(o.message),process.exit(1);console.error(s),console.error(""),i.showHelp(),process.exit(1)}).option("workspace",{alias:"w",type:"string",describe:"Workspace name"}).middleware(async(s)=>{let o=String((s._??[])[0]??"");if(!o||o==="auth"||o==="login")return;try{ln(s.workspace)}catch(i){if((i instanceof Error?i.message:String(i)).startsWith("No profiles configured"))console.log(`No workspace configured. Let's set that up:
|
|
214
|
+
`),await ds(),process.exit(0);throw i}},!0).command(["read [target]","msgs [target]"],"Browse messages",(s)=>s.positional("target",{type:"string",describe:"#channel, @user, or URL"}).option("limit",{alias:"n",type:"number",default:20,describe:"Number of messages"}).option("format",{type:"string",choices:["text","jsonl"],default:"text",describe:"jsonl exposes raw ts/user/text (incl. external-guest user IDs)"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}).option("unreplied",{type:"boolean",default:!1,describe:"Only messages whose last word (incl. thread replies) is not yours \u2014 i.e. awaiting your answer"}),async(s)=>{let o=e(s),i=s.json?"jsonl":s.format;if(s.target)await fd(o,s.target,s.limit,i,s.unreplied,t(s));else await hd(o)}).command("thread <target> <ts>","Show thread messages",(s)=>s.positional("target",{type:"string",demandOption:!0}).positional("ts",{type:"string",demandOption:!0}).option("limit",{alias:"n",type:"number",default:100}).option("format",{type:"string",choices:["text","jsonl"],default:"text",describe:"jsonl exposes raw ts/user/text (incl. external-guest user IDs)"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(s)=>{let o=s.json?"jsonl":s.format;await dd(e(s),s.target,s.ts,s.limit,o,t(s))}).command(["channel","channels","ch"],"Channel commands",(s)=>s.command(["ls","list"],"List channels",(o)=>o.option("limit",{alias:"n",type:"number",default:200}).option("filter",{alias:"f",type:"string"}).option("all",{type:"boolean",default:!1}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(o)=>{await gd(e(o),o.limit,o.filter,o.all,o.json?"jsonl":o.format)}).command("get <channel>","Show channel details",(o)=>o.positional("channel",{type:"string",demandOption:!0,describe:"#name or channel ID"}),async(o)=>{let i=e(o),a=t(o),c=o.channel,u=c.startsWith("#")||c.startsWith("@")||c.startsWith("C")||c.startsWith("G")||c.startsWith("D")?c:`#${c}`,f=await De(i,u,a),l=P(await En(i,f,a)),d=P(l.channel),p=typeof d.name==="string"?d.name:f,h=d.is_im===!0?"@":"#",y=String(P(d.purpose).value??""),E=String(P(d.topic).value??""),F=d.num_members??d.member_count??"";if(console.log(`${h}${p} ${f}`),E)console.log(`topic: ${E}`);if(y)console.log(`purpose: ${y}`);if(F)console.log(`members: ${F}`);console.log(`private: ${d.is_private===!0}`)}).command(["create <name>","new <name>"],"Create a channel (confirm-hash safety gate)",(o)=>o.positional("name",{type:"string",demandOption:!0,describe:"Channel name (Slack lowercases it; no spaces)"}).option("private",{type:"boolean",default:!1,describe:"Create a private channel"}).option("invite",{type:"string",array:!0,default:[],describe:"Users to invite after creating (@handle or Uxxxx, repeatable)"}).option("code",{type:"string",describe:"Safety hash to confirm create"}),async(o)=>{let i=e(o),a=t(o),c=o.name.replace(/^#/,"").toLowerCase(),u=o.private===!0,f=o.invite.filter(Boolean),l=await nn(i,a),d=Ye(c,String(u),f.join(","),l?.userId??"");if(o.code!==d)je(o.code,d,["--- Creating channel -------------------------",Le(l,{pad:9}),` name: ${u?"\uD83D\uDD12 ":"#"}${c}`,` private: ${u}`,...f.length?[` invite: ${f.join(", ")}`]:[],"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let p;try{p=await Fc(i,c,u,a)}catch(m){console.error(m instanceof Error?m.message:String(m)),process.exit(1)}if(console.log(`\u2713 Created ${u?"\uD83D\uDD12 ":"#"}${p.name} (${p.id})`),f.length){let m=[];for(let h of f)try{m.push(h.startsWith("U")||h.startsWith("W")?h:await tt(i,h,a))}catch(y){console.error(` ! could not resolve ${h}: ${y instanceof Error?y.message:String(y)}`)}for(let h of m)try{let y=P(await Cn(i,h,a)),E=P(y.user);if(E.is_ultra_restricted===!0)console.error(`\u26A0 ${h} is a single-channel guest \u2014 Slack restricts them to their one existing channel; this invite will likely report success but not actually add them.`);else if(E.is_restricted===!0)console.error(`\u26A0 ${h} is a multi-channel guest \u2014 double-check they were actually added (guest invites can silently no-op depending on workspace restrictions).`)}catch{}if(m.length)try{await Cc(i,p.id,m,a),console.log(`\u2713 Invited ${m.length} member${m.length===1?"":"s"}`)}catch(h){console.error(` ! invite failed: ${h instanceof Error?h.message:String(h)}`)}}}).demandCommand(1,"").showHelpOnFail(!0)).command(["user","usr"],"User commands",(s)=>s.command(["ls","list"],"List workspace members",(o)=>o.option("limit",{alias:"n",type:"number",default:200}).option("filter",{alias:"f",type:"string"}).option("format",{type:"string",choices:["text","jsonl","yaml"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}).option("external",{type:"boolean",default:!1,describe:"Also include people reachable only through Slack Connect shared channels \u2014 they are in ANOTHER workspace, so users.list never returns them (costs one API call per shared channel)"}),async(o)=>{let i=o.json?"jsonl":o.format,a=e(o),c=t(o),u=await Sc(a,c),f=o.filter?.toLowerCase(),l=X(u.members).map(P);if(o.external){let h=new Set(l.map((A)=>String(A.id))),y=P(await bn(a,c)),E=X(y.channels).map(P).filter((A)=>A.is_ext_shared===!0&&!!A.name),F=new Set;for(let A of E)try{for(let k of await Ac(a,String(A.id),c))if(!h.has(k))F.add(k)}catch{}for(let A of F)try{let k=P(await Cn(a,A,c)),B=P(k.user);if(B.id)l.push(B)}catch{}}let d=l.filter((h)=>h.deleted!==!0&&h.is_bot!==!0&&String(h.id)!=="USLACKBOT").filter((h)=>{if(!f)return!0;let y=String(h.name??"").toLowerCase(),E=String(P(h.profile).real_name??"").toLowerCase(),F=String(P(h.profile).email??"").toLowerCase();return y.includes(f)||E.includes(f)||F.includes(f)}).slice(0,o.limit);if(i==="jsonl"){for(let h of d)console.log(JSON.stringify(h));return}if(i==="yaml"){for(let h of d){let y=function(E,F=""){if(E===null)return"null";if(typeof E==="string")return E.includes(`
|
|
215
215
|
`)?`|
|
|
216
216
|
${E.split(`
|
|
217
217
|
`).join(`
|
|
218
218
|
`)}`:E;if(typeof E!=="object")return String(E);if(Array.isArray(E))return E.map((A)=>`
|
|
219
219
|
${F} - ${y(A,F+" ")}`).join("");return Object.entries(E).map(([A,k])=>`
|
|
220
|
-
${F} ${A}: ${y(k,F+" ")}`).join("")};console.log("---");for(let[E,F]of Object.entries(h))console.log(`${E}: ${y(F)}`)}return}let p=Intl.DateTimeFormat().resolvedOptions().timeZone,m=d.length?String(P(X(u.members).map(P)[0]??{}).team_id??""):"";for(let h of d){let y=P(h.profile),E=String(h.name??h.id),F=String(h.id??""),A=String(y.display_name||""),k=String(y.real_name||""),B=String(y.email||""),I=String(h.tz??""),V=[...new Set([A,k].filter((S)=>S&&S!==E))].join(" / "),L=I&&I!==p?I:"",ne=String(h.team_id??""),_=h.is_stranger===!0||m&&ne&&ne!==m?`external:${ne||"?"}`:h.is_ultra_restricted===!0?"single-channel guest":h.is_restricted===!0?"guest":"",C=[B,L].filter(Boolean).join(" ");console.log(`@${E} ${F} ${V}${C?" "+C:""}${_?` [${_}]`:""}`)}}).command("get <user>","Show user details",(o)=>o.positional("user",{type:"string",demandOption:!0,describe:"@handle or user ID"}),async(o)=>{let i=e(o),a=t(o),c=o.user.startsWith("@")?o.user:`@${o.user}`,u="";try{u=await tt(i,c,a)}catch(R){console.error(R instanceof Error?R.message:String(R)),process.exit(1)}let f=P(await
|
|
220
|
+
${F} ${A}: ${y(k,F+" ")}`).join("")};console.log("---");for(let[E,F]of Object.entries(h))console.log(`${E}: ${y(F)}`)}return}let p=Intl.DateTimeFormat().resolvedOptions().timeZone,m=d.length?String(P(X(u.members).map(P)[0]??{}).team_id??""):"";for(let h of d){let y=P(h.profile),E=String(h.name??h.id),F=String(h.id??""),A=String(y.display_name||""),k=String(y.real_name||""),B=String(y.email||""),I=String(h.tz??""),V=[...new Set([A,k].filter((S)=>S&&S!==E))].join(" / "),L=I&&I!==p?I:"",ne=String(h.team_id??""),_=h.is_stranger===!0||m&&ne&&ne!==m?`external:${ne||"?"}`:h.is_ultra_restricted===!0?"single-channel guest":h.is_restricted===!0?"guest":"",C=[B,L].filter(Boolean).join(" ");console.log(`@${E} ${F} ${V}${C?" "+C:""}${_?` [${_}]`:""}`)}}).command("get <user>","Show user details",(o)=>o.positional("user",{type:"string",demandOption:!0,describe:"@handle or user ID"}),async(o)=>{let i=e(o),a=t(o),c=o.user.startsWith("@")?o.user:`@${o.user}`,u="";try{u=await tt(i,c,a)}catch(R){console.error(R instanceof Error?R.message:String(R)),process.exit(1)}let f=P(await Cn(i,u,a)),l=P(f.user),d=P(l.profile),p=Intl.DateTimeFormat().resolvedOptions().timeZone,m=String(l.name??u),h=String(l.id??u),y=String(d.display_name||""),E=String(d.real_name||""),F=String(d.email||""),A=String(l.tz??""),k=String(d.phone||""),B=String(d.title||"");console.log(`@${m} ${h}`);let I=[...new Set([y,E].filter((R)=>R&&R!==m))];if(I.length)console.log(`name: ${I.join(" / ")}`);if(F)console.log(`email: ${F}`);if(k)console.log(`phone: ${k}`);if(B)console.log(`title: ${B}`);if(A&&A!==p)console.log(`tz: ${A}`)}).demandCommand(1,"").showHelpOnFail(!0)).command("news","Activity feed (mentions to you)",(s)=>s.option("limit",{alias:"l",type:"number",default:20}),async(s)=>{await pd(e(s),s.limit)}).command("search <query>","Full-text search",(s)=>s.positional("query",{type:"string",demandOption:!0}).option("count",{alias:"n",type:"number",default:100}).option("json",{type:"boolean",default:!1,describe:"Output raw JSON"}),async(s)=>{await pu(e(s),s.query,s.count,s.json,t(s))}).command("send <target> <message>","Send a message (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("message",{type:"string",demandOption:!0}).option("code",{type:"string",describe:"Safety hash to confirm send"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Send via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient and can be two-way"}).option("broadcast",{type:"boolean",default:!1,describe:`Also send to channel: broadcast a threaded reply back to the channel (Slack's "Also send to #channel" checkbox). Only effective with a thread target.`}).option("mentions",{type:"boolean",default:!0,describe:"Convert @handle tokens to real <@USERID> mentions (on by default; resolves via users.list, then channel members for Slack Connect guests). Unresolved handles stay as plain text. The confirm preview shows the converted message before sending. Disable with --no-mentions for literal @text."}),async(s)=>{let o={target:s.target,message:s.message,allowUrlAdjacent:s["allow-url-adjacent"]};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s["user-id"])o.userId=s["user-id"];if(s.broadcast)o.broadcast=!0;if(s.mentions!==!1){o.mentions=!0,o.mentionToken=e(s);let a=t(s);if(a)o.mentionCookie=a}let i;if(s["as-bot"]){let a=ut();if(!a)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
|
|
221
221
|
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);if(!o.channelId&&!o.userId&&o.target.startsWith("@"))try{o.userId=await tt(e(s),o.target,t(s))}catch(c){console.error(`Error: could not resolve ${o.target} to a user for the bot DM.
|
|
222
222
|
${c instanceof Error?c.message:String(c)}
|
|
223
223
|
Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(1)}i=a,o.asBot=!0}else{i=e(s);let a=t(s);if(a)o.cookie=a}try{await Id(i,o)}catch(a){console.error(nt(a)),process.exit(1)}}).command("ask [target] [question] [choices..]","Ask a question with its choices pre-seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",describe:"#chan, @user, #chan:thread_ts, or permalink (omit with --waitFor)"}).positional("question",{type:"string",describe:"The question. Must @tag whoever may answer (@alice), or the whole channel (@here / @channel / @everyone) \u2014 only their answer counts. In a 1:1 DM the other party counts automatically."}).positional("choices",{type:"string",array:!0,describe:"Up to 10 choices, seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions. Beyond 10 they are listed but answerable only by text. With none, the question asks for a free-text reply."}).option("code",{type:"string",describe:"Safety hash to confirm the ask"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("body",{type:"string",describe:"Extra context shown under the question"}).option("wait",{type:"boolean",default:!1,describe:"Block until answered; print ONLY the answer on stdout. Exit 0 = answered, 2 = nobody replied, 3 = transport failure, 4 = somebody replied but picked none of the choices (stdout empty \u2014 do not act on it)."}).option("waitFor",{type:"string",describe:"Collect the answer to a question already posted: pass its permalink. Nothing is posted. Same stdout/exit contract as --wait; --timeout 0 checks once and exits 2 if still open."}).option("timeout",{type:"number",default:3600,describe:"Overall limit for --wait / --waitFor, in seconds (0 with --waitFor = check once)"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Ask via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient"}),async(s)=>{let o=s.waitFor?String(s.waitFor):"",i=Number(s.timeout);if(!Number.isFinite(i)||i<0||i===0&&!o)console.error("Error: --timeout must be a positive number of seconds"),process.exit(Ee);if(o){if(s.target||s.question||s.choices?.length)console.error("Error: --waitFor collects an existing question \u2014 do not also pass a target/question/choices."),process.exit(Ee);let l,d;if(s["as-bot"]){let p=ut();if(!p)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
|
|
@@ -228,9 +228,10 @@ ${F} ${A}: ${y(k,F+" ")}`).join("")};console.log("---");for(let[E,F]of Object.
|
|
|
228
228
|
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(ve);return d};if(o){if(s.target||s.question||s.choices?.length)console.error("Error: --results/--close reads an existing poll \u2014 do not also pass a target/question/choices."),process.exit(ve);let d=e(s),p=t(s);try{let m={link:o};if(s.close)m.close=!0;if(s.names)m.names=!0;if(s["no-notify"])m.noNotify=!0;if(p)m.cookie=p;if(s["as-bot"])m.writeToken=i();await zd(d,m)}catch(m){console.error(nt(m)),process.exit(ve)}return}if(!s.target)console.error("Error: target is required (or use --results <permalink> to count a poll)"),process.exit(ve);let a=String(s.question??"").trim();if(!a)console.error("Error: question is empty"),process.exit(ve);let c=(s.choices??[]).map((d)=>String(d).trim()).filter(Boolean);if(c.length<2||c.length>Vt)console.error(`Error: poll needs 2..${Vt} choices (got ${c.length}). For a free-text question use \`slack ask\`.`),process.exit(ve);let u={target:s.target,question:a,choices:c};if(s.multi)u.multi=!0;if(s.until)u.until=String(s.until);if(s.code)u.code=s.code;if(s.body)u.body=s.body;if(s["channel-id"])u.channelId=s["channel-id"];if(s["user-id"])u.userId=s["user-id"];u.mentionToken=e(s);let f=t(s);if(f)u.mentionCookie=f;let l;if(s["as-bot"]){let d=i();if(!u.channelId&&!u.userId&&u.target.startsWith("@"))try{u.userId=await tt(e(s),u.target,t(s))}catch(p){console.error(`Error: could not resolve ${u.target} to a user for the bot DM.
|
|
229
229
|
${p instanceof Error?p.message:String(p)}
|
|
230
230
|
Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(ve)}l=d,u.asBot=!0}else{l=e(s);let d=t(s);if(d)u.cookie=d}try{await Kd(l,u)}catch(d){console.error(nt(d)),process.exit(ve)}}).command("doctor","Check the bot token (xoxb) can carry a two-way DM (scopes + Messages Tab)",(s)=>s,async()=>{let s=ut();if(!s)console.error(`Error: slack doctor checks the bot token, but no xoxb- token was found.
|
|
231
|
-
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);await Hd(s)}).command("schedule","Manage scheduled messages",(s)=>s.command("send <target> <message>","Schedule a message for later delivery",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("message",{type:"string",demandOption:!0}).option("at",{type:"string",demandOption:!0,describe:"Delivery time (ISO datetime or Unix ts)"}).option("code",{type:"string",describe:"Safety hash to confirm"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Schedule via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient. Without it a scheduled DM to yourself is posted by you, and Slack never notifies you of your own message \u2014 it fires into silence."}),async(o)=>{let i={target:o.target,message:o.message,at:o.at};if(o.code)i.code=o.code;if(o["channel-id"])i.channelId=o["channel-id"],i.targetOverride=`--channel-id ${o["channel-id"]}`;if(o["user-id"])i.userId=o["user-id"],i.targetOverride=`--user-id ${o["user-id"]}`;let a;if(o["as-bot"]){let c=
|
|
231
|
+
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);await Hd(s)}).command("schedule","Manage scheduled messages",(s)=>s.command("send <target> <message>","Schedule a message for later delivery",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("message",{type:"string",demandOption:!0}).option("at",{type:"string",demandOption:!0,describe:"Delivery time (ISO datetime or Unix ts)"}).option("code",{type:"string",describe:"Safety hash to confirm"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Schedule via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient. Without it a scheduled DM to yourself is posted by you, and Slack never notifies you of your own message \u2014 it fires into silence."}),async(o)=>{let i={target:o.target,message:o.message,at:o.at};if(o.code)i.code=o.code;if(o["channel-id"])i.channelId=o["channel-id"],i.targetOverride=`--channel-id ${o["channel-id"]}`;if(o["user-id"])i.userId=o["user-id"],i.targetOverride=`--user-id ${o["user-id"]}`;let a;if(o["as-bot"]){let c=so();if(!i.channelId&&!i.userId&&i.target.startsWith("@"))try{i.userId=await tt(e(o),i.target,t(o))}catch(u){console.error(`Error: could not resolve ${i.target} to a user for the bot DM.
|
|
232
232
|
${u instanceof Error?u.message:String(u)}
|
|
233
|
-
Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(1)}a=c,i.asBot=!0}else{a=e(o);let c=t(o);if(c)i.cookie=c}await Xd(a,i)}).command(["ls","list"],"List pending scheduled messages",(o)=>o.positional("target",{type:"string",describe:"#channel to filter by"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"List what the BOT token scheduled. A message from `schedule send --as-bot` belongs to the app, so the user token's listing does not contain it \u2014 and an invisible pending message cannot be cancelled."}),async(o)=>{let i=o.target;if(o["as-bot"]){let a=no(),c=o["channel-id"];if(!c&&i?.startsWith("@"))c=await au(i,a,e(o),t(o));await cu(a,i,c);return}await cu(e(o),i,o["channel-id"],t(o))}).command("rm <target> <id>","Delete a scheduled message",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#channel or @user"}).positional("id",{type:"string",demandOption:!0,describe:"Scheduled message ID"}).option("code",{type:"string",describe:"Safety hash to confirm"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"Cancel a message scheduled with `schedule send --as-bot`. It belongs to the bot token, so the user token cannot delete it."}),async(o)=>{let i={target:o.target,id:o.id};if(o.code)i.code=o.code;if(o["channel-id"])i.channelId=o["channel-id"],i.targetOverride=`--channel-id ${o["channel-id"]}`;if(o["as-bot"]){let c=no();if(!i.channelId&&i.target.startsWith("@"))i.channelId=await au(i.target,c,e(o),t(o));i.asBot=!0,await uu(c,i);return}let a=t(o);if(a)i.cookie=a;await uu(e(o),i)}).demandCommand(1,"").showHelpOnFail(!0),()=>{}).command("edit <target> <newText>","Edit a sent message",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).positional("newText",{type:"string",demandOption:!0}).option("code",{type:"string",describe:"Safety hash to confirm edit"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("mentions",{type:"boolean",default:!0,describe:"Convert @handle tokens in the new text to real <@USERID> mentions (on by default). Unresolved handles stay as plain text. Disable with --no-mentions for literal @text."}).option("as-bot",{type:"boolean",default:!1,describe:"Edit as the bot (xoxb / SLACK_BOT_TOKEN). REQUIRED to correct a message the bot posted: Slack only lets a token edit its OWN messages, so a bot-authored message is uneditable by the user token and chat.update returns cant_update_message. Address it by permalink or --channel-id; an @user target resolves against the BOT's DM list, which is where a bot-authored DM actually lives."}),async(s)=>{let o={target:s.target,newText:s.newText,allowUrlAdjacent:s["allow-url-adjacent"]};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s.mentions!==!1)o.mentions=!0;let i;if(s["as-bot"]){let a=await ru(o.target,e(s),t(s),o.channelId);if(i=a.botToken,a.channelId&&!o.channelId)o.channelId=a.channelId;o.asBot=!0,o.mentionToken=e(s);let c=t(s);if(c)o.mentionCookie=c}else{i=e(s);let a=t(s);if(a)o.cookie=a}await Ad(i,o)}).command("delete <target>","Delete a sent message (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).option("code",{type:"string",describe:"Safety hash to confirm delete"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"Delete as the bot (xoxb / SLACK_BOT_TOKEN). REQUIRED for a message the bot posted: chat.delete refuses another token's message exactly as chat.update does."}),async(s)=>{let o={target:s.target};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];let i;if(s["as-bot"]){let a=await ru(o.target,e(s),t(s),o.channelId);if(i=a.botToken,a.channelId&&!o.channelId)o.channelId=a.channelId;o.asBot=!0}else{i=e(s);let a=t(s);if(a)o.cookie=a}await $d(i,o)}).command("react <target> <emoji>","Add (or --remove) an emoji reaction \u2014 a lightweight ack that doesn't grow the thread",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).positional("emoji",{type:"string",demandOption:!0,describe:"Emoji shortcode without colons (e.g. eyes, white_check_mark, hourglass)"}).option("remove",{type:"boolean",default:!1,describe:"Remove the reaction instead of adding it"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(s)=>{let o={target:s.target,emoji:s.emoji};if(s.remove)o.remove=!0;if(s["channel-id"])o.channelId=s["channel-id"];let i=t(s);if(i)o.cookie=i;try{await Od(e(s),o)}catch(a){console.error(nt(a)),process.exit(1)}}).command("todo","Reaction-backed task tracking (:pushpin: marks a task, progress lives in a second reaction)",(s)=>s.option("cache",{type:"boolean",default:!0,describe:"Use ~/.config/slack-cli/cache.json for channel/user lookups (--no-cache to bypass)"}).middleware((o)=>{if(o.cache===!1)Zr(!1)}).command(["ls","list"],"List everyone's tasks (has: \u2014 read-only, one search per run)",(o)=>o.options(n).option("mine",{type:"boolean",default:!1,describe:"Only your own reactions (hasmy:) \u2014 same as `slack mytodo ls`"}).option("shared",{type:"boolean",default:!1,hidden:!0,describe:"Deprecated \u2014 anyone's reactions is the default for `todo ls`"}),async(o)=>{await r(o,!1)}).command("set <target> <state>","Move a task to a progress state (adds the new reaction before removing the old one)",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts or permalink"}).positional("state",{type:"string",demandOption:!0,choices:["pending","doing","done","dropped"]}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={target:o.target,state:o.state};if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;try{await yd(e(o),i)}catch(c){console.error(nt(c)),process.exit(1)}}).command("flag <target> <flag>","Add (or --remove) a reason flag (alert | needs-discussion | waiting | blocked) \u2014 flags stack, independent of progress",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts or permalink"}).positional("flag",{type:"string",demandOption:!0,choices:["alert","needs-discussion","waiting","blocked"],describe:"waiting = the other party in this conversation owes a reply; blocked = stuck on something outside it"}).option("remove",{type:"boolean",default:!1,describe:"Remove the flag instead of adding it"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={target:o.target,flag:o.flag};if(o.remove)i.remove=!0;if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;try{await bd(e(o),i)}catch(c){console.error(nt(c)),process.exit(1)}}).command("doctor","Find messages carrying two or more progress reactions (--fix repairs them)",(o)=>o.option("in",{type:"string",demandOption:!0,describe:"Channel to scan (#chan)"}).option("fix",{type:"boolean",default:!1,describe:"Repair findings (keeps the highest-priority state)"}).option("limit",{type:"number",default:Vr,describe:"Max messages to scan"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={channel:o.in,limit:o.limit};if(o.fix)i.fix=!0;if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;await wd(e(o),i)}).demandCommand(1,"Specify a todo subcommand (ls, set, flag, doctor)"),()=>{}).command("mytodo","Tasks carrying YOUR reactions (hasmy:) \u2014 the my-only half of `todo`",(s)=>s.option("cache",{type:"boolean",default:!0,describe:"Use ~/.config/slack-cli/cache.json for channel/user lookups (--no-cache to bypass)"}).middleware((o)=>{if(o.cache===!1)Zr(!1)}).command(["ls","list"],"List tasks you have reacted to (hasmy: \u2014 read-only, one search per run)",(o)=>o.options(n),async(o)=>{await r(o,!0)}).demandCommand(1,"Specify a mytodo subcommand (ls)"),()=>{}).command("upload <target> <file..>","Upload one or more files to a channel or DM",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("file",{type:"string",array:!0,demandOption:!0,describe:"Path(s) to file(s)"}).option("title",{type:"string",describe:"Title (single file only)"}).option("comment",{type:"string",describe:"Initial comment (first file)"}).option("code",{type:"string",describe:"4-hex safety code to confirm upload"}).option("channel-id",{type:"string"}).option("user-id",{type:"string"}),async(s)=>{let o={target:s.target,filePaths:s.file};if(s.title)o.title=s.title;if(s.comment)o.comment=s.comment;if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s["user-id"])o.userId=s["user-id"];let i=t(s);if(i)o.cookie=i;await Gd(e(s),o)}).command("files","File commands",(s)=>s.command(["ls","list"],"List files visible to you (files.list)",(o)=>o.option("limit",{alias:"l",type:"number",default:100,describe:"Max files to list"}).option("type",{alias:"t",type:"string",describe:"Slack type filter: images, pdfs, gdocs, snippets, zips, spaces, all"}).option("channel",{alias:"c",type:"string",describe:"Only files in this channel (#name, @user, ID, or permalink)"}).option("user",{alias:"u",type:"string",describe:"Only files from this raw user ID"}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(o)=>{let i={limit:o.limit,format:o.json?"jsonl":o.format};if(o.type)i.types=o.type;if(o.channel)i.channel=o.channel;if(o.user)i.user=o.user;await Vd(e(o),t(o),i)}).demandCommand(1,"").showHelpOnFail(!0),()=>{}).command("lists <ref>","Read a Slack List's rows (by list URL or F-id) \u2014 read-only",(s)=>s.positional("ref",{type:"string",demandOption:!0,describe:"List URL (\u2026/lists/<TEAM>/<F-id>) or bare F-id"}).option("limit",{alias:"l",type:"number",default:100,describe:"Max rows to show"}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl (raw records)"}),async(s)=>{let o=s.json?"jsonl":s.format;try{await eh(e(s),t(s),s.ref,{limit:s.limit,format:o})}catch(i){console.error(nt(i)),process.exit(1)}}).command("download <ref> [dest]","Download a file attachment (by file ID or file permalink) to disk",(s)=>s.positional("ref",{type:"string",demandOption:!0,describe:"File ID (F\u2026) or Slack file permalink"}).positional("dest",{type:"string",describe:"Output path or directory (default: ./<filename>)"}),async(s)=>{await nh(e(s),t(s),s.ref,s.dest)}).command("dump","Bulk export channel history as markdown",(s)=>s.option("days",{alias:"d",type:"number",default:7,describe:"Days of history"}).option("limit",{alias:"l",type:"number",default:200}).option("filter",{alias:"f",type:"string",describe:"Filter channel names"}),async(s)=>{await Fd(e(s),s.days,s.limit,s.filter)}).command("drafts","Manage message drafts (requires xoxc desktop token)",(s)=>s.command(["$0","ls","list"],"List pending drafts",(o)=>o.option("all",{alias:"a",type:"boolean",default:!1,describe:"Include sent drafts"}),async(o)=>{await Ed(e(o),t(o),o.all)}).command(["new <channel> [text..]","save <channel> [text..]"],"Create a draft",(o)=>o.positional("channel",{type:"string",demandOption:!0}).positional("text",{type:"string",array:!0,default:[]}),async(o)=>{let i=e(o),a=t(o),c=o.text.join(" ");if(!c)console.error("Usage: slack drafts new <#channel|@user> <text>"),process.exit(2);let u=await De(i,o.channel,a),f=await $c(i,u,c,a);console.log(`\u2713 Draft created (id: ${P(f.draft).id??"?"})`)}).command("get <id>","Show a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}),async(o)=>{await xd(e(o),t(o),o.id)}).command(["edit <id> [text..]","update <id> [text..]"],"Edit a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}).positional("text",{type:"string",array:!0,default:[]}).option("code",{type:"string"}),async(o)=>{let i=e(o),a=t(o),c=o.text.join(" ");if(!c)console.error("Usage: slack drafts edit <id> <new-text>"),process.exit(2);let u=await wn(i,a),f=X(u.drafts).map(P).find((h)=>String(h.id)===o.id);if(!f)console.error(`Draft not found: ${o.id}`),process.exit(1);let l=As(f),d=await nn(i,a),p=Ye(l,c,d?.userId??"");if(o.code!==p)je(o.code,p,["--- Editing draft as -------------------------",Le(d),"--- Current draft ----------------------------",...l.split(`
|
|
233
|
+
Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(1)}a=c,i.asBot=!0}else{a=e(o);let c=t(o);if(c)i.cookie=c}await Xd(a,i)}).command(["ls","list"],"List pending scheduled messages",(o)=>o.positional("target",{type:"string",describe:"#channel to filter by"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"List what the BOT token scheduled. A message from `schedule send --as-bot` belongs to the app, so the user token's listing does not contain it \u2014 and an invisible pending message cannot be cancelled."}),async(o)=>{let i=o.target;if(o["as-bot"]){let a=so(),c=o["channel-id"];if(!c&&i?.startsWith("@"))c=await au(i,a,e(o),t(o));await cu(a,i,c);return}await cu(e(o),i,o["channel-id"],t(o))}).command("rm <target> <id>","Delete a scheduled message",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#channel or @user"}).positional("id",{type:"string",demandOption:!0,describe:"Scheduled message ID"}).option("code",{type:"string",describe:"Safety hash to confirm"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"Cancel a message scheduled with `schedule send --as-bot`. It belongs to the bot token, so the user token cannot delete it."}),async(o)=>{let i={target:o.target,id:o.id};if(o.code)i.code=o.code;if(o["channel-id"])i.channelId=o["channel-id"],i.targetOverride=`--channel-id ${o["channel-id"]}`;if(o["as-bot"]){let c=so();if(!i.channelId&&i.target.startsWith("@"))i.channelId=await au(i.target,c,e(o),t(o));i.asBot=!0,await uu(c,i);return}let a=t(o);if(a)i.cookie=a;await uu(e(o),i)}).demandCommand(1,"").showHelpOnFail(!0),()=>{}).command("edit <target> <newText>","Edit a sent message",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).positional("newText",{type:"string",demandOption:!0}).option("code",{type:"string",describe:"Safety hash to confirm edit"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("mentions",{type:"boolean",default:!0,describe:"Convert @handle tokens in the new text to real <@USERID> mentions (on by default). Unresolved handles stay as plain text. Disable with --no-mentions for literal @text."}).option("as-bot",{type:"boolean",default:!1,describe:"Edit as the bot (xoxb / SLACK_BOT_TOKEN). REQUIRED to correct a message the bot posted: Slack only lets a token edit its OWN messages, so a bot-authored message is uneditable by the user token and chat.update returns cant_update_message. Address it by permalink or --channel-id; an @user target resolves against the BOT's DM list, which is where a bot-authored DM actually lives."}),async(s)=>{let o={target:s.target,newText:s.newText,allowUrlAdjacent:s["allow-url-adjacent"]};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s.mentions!==!1)o.mentions=!0;let i;if(s["as-bot"]){let a=await ru(o.target,e(s),t(s),o.channelId);if(i=a.botToken,a.channelId&&!o.channelId)o.channelId=a.channelId;o.asBot=!0,o.mentionToken=e(s);let c=t(s);if(c)o.mentionCookie=c}else{i=e(s);let a=t(s);if(a)o.cookie=a}await Ad(i,o)}).command("delete <target>","Delete a sent message (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).option("code",{type:"string",describe:"Safety hash to confirm delete"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"Delete as the bot (xoxb / SLACK_BOT_TOKEN). REQUIRED for a message the bot posted: chat.delete refuses another token's message exactly as chat.update does."}),async(s)=>{let o={target:s.target};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];let i;if(s["as-bot"]){let a=await ru(o.target,e(s),t(s),o.channelId);if(i=a.botToken,a.channelId&&!o.channelId)o.channelId=a.channelId;o.asBot=!0}else{i=e(s);let a=t(s);if(a)o.cookie=a}await $d(i,o)}).command("react <target> <emoji>","Add (or --remove) an emoji reaction \u2014 a lightweight ack that doesn't grow the thread",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).positional("emoji",{type:"string",demandOption:!0,describe:"Emoji shortcode without colons (e.g. eyes, white_check_mark, hourglass)"}).option("remove",{type:"boolean",default:!1,describe:"Remove the reaction instead of adding it"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(s)=>{let o={target:s.target,emoji:s.emoji};if(s.remove)o.remove=!0;if(s["channel-id"])o.channelId=s["channel-id"];let i=t(s);if(i)o.cookie=i;try{await Od(e(s),o)}catch(a){console.error(nt(a)),process.exit(1)}}).command("todo","Reaction-backed task tracking (:pushpin: marks a task, progress lives in a second reaction)",(s)=>s.option("cache",{type:"boolean",default:!0,describe:"Use ~/.config/slack-cli/cache.json for channel/user lookups (--no-cache to bypass)"}).middleware((o)=>{if(o.cache===!1)Qr(!1)}).command(["ls","list"],"List everyone's tasks (has: \u2014 read-only, one search per run)",(o)=>o.options(n).option("mine",{type:"boolean",default:!1,describe:"Only your own reactions (hasmy:) \u2014 same as `slack mytodo ls`"}).option("shared",{type:"boolean",default:!1,hidden:!0,describe:"Deprecated \u2014 anyone's reactions is the default for `todo ls`"}),async(o)=>{await r(o,!1)}).command("set <target> <state>","Move a task to a progress state (adds the new reaction before removing the old one)",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts or permalink"}).positional("state",{type:"string",demandOption:!0,choices:["pending","doing","done","dropped"]}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={target:o.target,state:o.state};if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;try{await yd(e(o),i)}catch(c){console.error(nt(c)),process.exit(1)}}).command("flag <target> <flag>","Add (or --remove) a reason flag (alert | needs-discussion | waiting | blocked) \u2014 flags stack, independent of progress",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts or permalink"}).positional("flag",{type:"string",demandOption:!0,choices:["alert","needs-discussion","waiting","blocked"],describe:"waiting = the other party in this conversation owes a reply; blocked = stuck on something outside it"}).option("remove",{type:"boolean",default:!1,describe:"Remove the flag instead of adding it"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={target:o.target,flag:o.flag};if(o.remove)i.remove=!0;if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;try{await bd(e(o),i)}catch(c){console.error(nt(c)),process.exit(1)}}).command("doctor","Find messages carrying two or more progress reactions (--fix repairs them)",(o)=>o.option("in",{type:"string",demandOption:!0,describe:"Channel to scan (#chan)"}).option("fix",{type:"boolean",default:!1,describe:"Repair findings (keeps the highest-priority state)"}).option("limit",{type:"number",default:Zr,describe:"Max messages to scan"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={channel:o.in,limit:o.limit};if(o.fix)i.fix=!0;if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;await wd(e(o),i)}).demandCommand(1,"Specify a todo subcommand (ls, set, flag, doctor)"),()=>{}).command("mytodo","Tasks carrying YOUR reactions (hasmy:) \u2014 the my-only half of `todo`",(s)=>s.option("cache",{type:"boolean",default:!0,describe:"Use ~/.config/slack-cli/cache.json for channel/user lookups (--no-cache to bypass)"}).middleware((o)=>{if(o.cache===!1)Qr(!1)}).command(["ls","list"],"List tasks you have reacted to (hasmy: \u2014 read-only, one search per run)",(o)=>o.options(n),async(o)=>{await r(o,!0)}).demandCommand(1,"Specify a mytodo subcommand (ls)"),()=>{}).command("upload <target> <file..>","Upload one or more files to a channel or DM",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("file",{type:"string",array:!0,demandOption:!0,describe:"Path(s) to file(s)"}).option("title",{type:"string",describe:"Title (single file only)"}).option("comment",{type:"string",describe:"Initial comment (first file)"}).option("code",{type:"string",describe:"4-hex safety code to confirm upload"}).option("channel-id",{type:"string"}).option("user-id",{type:"string"}),async(s)=>{let o={target:s.target,filePaths:s.file};if(s.title)o.title=s.title;if(s.comment)o.comment=s.comment;if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s["user-id"])o.userId=s["user-id"];let i=t(s);if(i)o.cookie=i;await Gd(e(s),o)}).command("files","File commands",(s)=>s.command(["ls","list"],"List files visible to you (files.list)",(o)=>o.option("limit",{alias:"l",type:"number",default:100,describe:"Max files to list"}).option("type",{alias:"t",type:"string",describe:"Slack type filter: images, pdfs, gdocs, snippets, zips, spaces, all"}).option("channel",{alias:"c",type:"string",describe:"Only files in this channel (#name, @user, ID, or permalink)"}).option("user",{alias:"u",type:"string",describe:"Only files from this raw user ID"}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(o)=>{let i={limit:o.limit,format:o.json?"jsonl":o.format};if(o.type)i.types=o.type;if(o.channel)i.channel=o.channel;if(o.user)i.user=o.user;await Vd(e(o),t(o),i)}).demandCommand(1,"").showHelpOnFail(!0),()=>{}).command("lists <ref>","Read a Slack List's rows (by list URL or F-id) \u2014 read-only",(s)=>s.positional("ref",{type:"string",demandOption:!0,describe:"List URL (\u2026/lists/<TEAM>/<F-id>) or bare F-id"}).option("limit",{alias:"l",type:"number",default:100,describe:"Max rows to show"}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl (raw records)"}),async(s)=>{let o=s.json?"jsonl":s.format;try{await eh(e(s),t(s),s.ref,{limit:s.limit,format:o})}catch(i){console.error(nt(i)),process.exit(1)}}).command("download <ref> [dest]","Download a file attachment (by file ID or file permalink) to disk",(s)=>s.positional("ref",{type:"string",demandOption:!0,describe:"File ID (F\u2026) or Slack file permalink"}).positional("dest",{type:"string",describe:"Output path or directory (default: ./<filename>)"}),async(s)=>{await nh(e(s),t(s),s.ref,s.dest)}).command("dump","Bulk export channel history as markdown",(s)=>s.option("days",{alias:"d",type:"number",default:7,describe:"Days of history"}).option("limit",{alias:"l",type:"number",default:200}).option("filter",{alias:"f",type:"string",describe:"Filter channel names"}),async(s)=>{await Fd(e(s),s.days,s.limit,s.filter)}).command("drafts","Manage message drafts (requires xoxc desktop token)",(s)=>s.command(["$0","ls","list"],"List pending drafts",(o)=>o.option("all",{alias:"a",type:"boolean",default:!1,describe:"Include sent drafts"}),async(o)=>{await Ed(e(o),t(o),o.all)}).command(["new <channel> [text..]","save <channel> [text..]"],"Create a draft",(o)=>o.positional("channel",{type:"string",demandOption:!0}).positional("text",{type:"string",array:!0,default:[]}),async(o)=>{let i=e(o),a=t(o),c=o.text.join(" ");if(!c)console.error("Usage: slack drafts new <#channel|@user> <text>"),process.exit(2);let u=await De(i,o.channel,a),f=await $c(i,u,c,a);console.log(`\u2713 Draft created (id: ${P(f.draft).id??"?"})`)}).command("get <id>","Show a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}),async(o)=>{await xd(e(o),t(o),o.id)}).command(["edit <id> [text..]","update <id> [text..]"],"Edit a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}).positional("text",{type:"string",array:!0,default:[]}).option("code",{type:"string"}),async(o)=>{let i=e(o),a=t(o),c=o.text.join(" ");if(!c)console.error("Usage: slack drafts edit <id> <new-text>"),process.exit(2);let u=await Fn(i,a),f=X(u.drafts).map(P).find((h)=>String(h.id)===o.id);if(!f)console.error(`Draft not found: ${o.id}`),process.exit(1);let l=As(f),d=await nn(i,a),p=Ye(l,c,d?.userId??"");if(o.code!==p)je(o.code,p,["--- Editing draft as -------------------------",Le(d),"--- Current draft ----------------------------",...l.split(`
|
|
234
234
|
`).map((h)=>` ${h}`),"--- Replacing with ---------------------------",...c.split(`
|
|
235
|
-
`).map((h)=>` ${h}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let m=await Oc(i,o.id,
|
|
236
|
-
`).map((p)=>` ${p}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);await Tc(i,o.id,a),console.log(`\u2713 Draft deleted (id: ${o.id})`)})).command("auth","Authentication and workspace management",(s)=>s.command("token","Print the active token (or save one with --token)",(o)=>o.option("token",{type:"string",describe:"Token to save directly (non-interactive)"}).option("name",{type:"string",describe:"Workspace name (used with --token)"}),async(o)=>{if(o.token===void 0){console.log(
|
|
235
|
+
`).map((h)=>` ${h}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let m=await Oc(i,o.id,uo(f),c,a);console.log(`\u2713 Draft updated (id: ${P(m.draft).id??"?"})`)}).command(["delete <id>","rm <id>"],"Delete a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}).option("code",{type:"string"}),async(o)=>{let i=e(o),a=t(o),c=await Fn(i,a),u=X(c.drafts).map(P).find((p)=>String(p.id)===o.id);if(!u)console.error(`Draft not found: ${o.id}`),process.exit(1);let f=As(u),l=await nn(i,a),d=Ye(o.id,f,l?.userId??"");if(o.code!==d)je(o.code,d,["\u2500-- Deleting draft \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",Le(l),` id: ${o.id}`,...f.split(`
|
|
236
|
+
`).map((p)=>` ${p}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);await Tc(i,o.id,a),console.log(`\u2713 Draft deleted (id: ${o.id})`)})).command("auth","Authentication and workspace management",(s)=>s.command("token","Print the active token (or save one with --token)",(o)=>o.option("token",{type:"string",describe:"Token to save directly (non-interactive)"}).option("name",{type:"string",describe:"Workspace name (used with --token)"}),async(o)=>{if(o.token===void 0){console.log(ln(o.workspace));return}await Ra({...o.token!==void 0?{token:o.token}:{},...o.name!==void 0?{name:o.name}:{}})}).command("env","Print active workspace credentials in dotenv format",()=>{},(o)=>{let i=ln(o.workspace),a=i.startsWith("xoxc-")?br(o.workspace):void 0,c=[["SLACK_TOKEN",i]];if(a)c.push(["SLACK_COOKIE",a]);let u=c.map(([f,l])=>{if(/[\r\n\0']/.test(l))throw Error(`Cannot export ${f}: unsupported characters in credential`);return`${f}='${l}'`});console.log(u.join(`
|
|
237
|
+
`))}).command("app","Create a new Slack app and obtain a token (guided wizard)",(o)=>o.option("bot",{type:"boolean",describe:"Create a bot token (xoxb-) instead of user (xoxp-)"}),async(o)=>{await Ma({...o.bot!==void 0?{bot:o.bot}:{}})}).command("login","Interactive auth wizard (all auth methods: desktop app, token, new app)",(o)=>o.option("token",{type:"string",describe:"Token to save directly (non-interactive)"}).option("name",{type:"string",describe:"Workspace name (used with --token)"}),async(o)=>{await ds({...o.token!==void 0?{token:o.token}:{},...o.name!==void 0?{name:o.name}:{}})}).command(["ls","status"],"Show auth status",()=>{},()=>{let o=yr();if(o.length===0){console.log("No workspaces configured. Run: slack auth login");return}for(let{name:i,profile:a,current:c}of o)console.log(`${c?"* ":" "}${i} ${a.team} (${a.user}) ${a.url??""}`)}).command("use <name>","Switch active workspace",(o)=>o.positional("name",{type:"string",demandOption:!0}).option("g",{type:"boolean",default:!1,describe:"Write global lockfile (~/.slack-cli/workspace)"}),(o)=>{if(!o.g)od(ht(process.cwd(),".slack-cli"));Qi(o.name,o.g),console.log(`Switched to workspace "${o.name}" ${o.g?"globally":"locally"}`)}).command(["logout <name>","rm <name>","remove <name>"],"Remove a workspace",(o)=>o.positional("name",{type:"string",demandOption:!0}),(o)=>{Zi(o.name),console.log(`Removed workspace "${o.name}"`)}).command(["chrome","cookie"],"Attach Chrome browser xoxd cookie to a workspace (macOS, interactive)",(o)=>o.option("workspace",{type:"string",alias:"w",describe:"Workspace name to update (default: active)"}),async(o)=>{await Ta({...o.workspace!==void 0?{workspace:o.workspace}:{}})}).command("firefox","Attach Firefox browser xoxd cookie to a workspace (all platforms)",(o)=>o.option("workspace",{type:"string",alias:"w",describe:"Workspace name to update (default: active)"}),async(o)=>{await Pa({...o.workspace!==void 0?{workspace:o.workspace}:{}})}).command("$0",!1,()=>{},()=>{s.showHelp(),process.exit(0)})).command("tail [target]","Stream new messages in real time (like tail -f)",(s)=>s.positional("target",{type:"string",describe:"#channel or @user to follow"}).option("since",{type:"string",describe:"Backfill from N ago (e.g. 10m, 2h, 1d)"}).option("thread",{type:"string",describe:"Follow a single thread by timestamp"}).option("watch-thread",{type:"string",describe:"Watch the channel's top-level timeline AND one thread's replies together (ts or permalink)"}).option("me",{type:"boolean",default:!1,describe:"Filter to messages that mention you"}).option("interval",{type:"number",default:60000,describe:"Poll interval in ms (default 60s; use --interval=3000 for near-real-time)"}).option("timeout",{type:"string",describe:"Auto-stop after this long (e.g. 30m, 2h). Exit code 0 even if nothing arrived."}).option("exit-on-message",{type:"boolean",default:!1,describe:"Stop as soon as the first new message from someone else arrives (wait-for-reply)"}).option("rtm",{type:"boolean",default:!0,describe:"Use RTM WebSocket when available (xoxc + cookie); pass --no-rtm to force polling"}),async(s)=>{let o=e(s),i=t(s),a=new AbortController;process.on("SIGINT",()=>{a.abort(),process.exit(0)}),await Ua(o,s.target,{...s.since!==void 0?{since:s.since}:{},...s.thread!==void 0?{thread:s.thread}:{},...s["watch-thread"]!==void 0?{watchThread:s["watch-thread"]}:{},me:s.me,interval:s.interval,...s.timeout!==void 0?{timeout:s.timeout}:{},...s["exit-on-message"]===!0?{exitOnMessage:!0}:{},...i!==void 0?{cookie:i}:{},...s.rtm===!1?{noRtm:!0}:{}},a.signal)}).command("login",!1,(s)=>s.option("token",{type:"string"}).option("name",{type:"string"}),async(s)=>{await ds({...s.token!==void 0?{token:s.token}:{},...s.name!==void 0?{name:s.name}:{}})}).demandCommand(1,"Specify a command. Run with --help for usage.").strict().help().alias("help","h").parseAsync()}sh().catch((e)=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});
|