@gitterm/cli 0.0.1 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +67 -6
  2. package/dist/index.js +1433 -1202
  3. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
- #!/usr/bin/env bun
2
- // @bun
1
+ #!/usr/bin/env node
3
2
  var __create = Object.create;
4
3
  var __getProtoOf = Object.getPrototypeOf;
5
4
  var __defProp = Object.defineProperty;
@@ -32,6 +31,13 @@ var __toESM = (mod, isNodeMode, target) => {
32
31
  };
33
32
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
34
33
 
34
+ // ../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.js
35
+ var require_emoji_regex = __commonJS((exports, module) => {
36
+ module.exports = () => {
37
+ return /[#*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;
38
+ };
39
+ });
40
+
35
41
  // ../../node_modules/.bun/get-caller-file@2.0.5/node_modules/get-caller-file/index.js
36
42
  var require_get_caller_file = __commonJS((exports, module) => {
37
43
  module.exports = function getCallerFile(position) {
@@ -59,590 +65,590 @@ var require_spinners = __commonJS((exports, module) => {
59
65
  dots: {
60
66
  interval: 80,
61
67
  frames: [
62
- "\u280B",
63
- "\u2819",
64
- "\u2839",
65
- "\u2838",
66
- "\u283C",
67
- "\u2834",
68
- "\u2826",
69
- "\u2827",
70
- "\u2807",
71
- "\u280F"
68
+ "⠋",
69
+ "⠙",
70
+ "⠹",
71
+ "⠸",
72
+ "⠼",
73
+ "⠴",
74
+ "⠦",
75
+ "⠧",
76
+ "⠇",
77
+ "⠏"
72
78
  ]
73
79
  },
74
80
  dots2: {
75
81
  interval: 80,
76
82
  frames: [
77
- "\u28FE",
78
- "\u28FD",
79
- "\u28FB",
80
- "\u28BF",
81
- "\u287F",
82
- "\u28DF",
83
- "\u28EF",
84
- "\u28F7"
83
+ "⣾",
84
+ "⣽",
85
+ "⣻",
86
+ "⢿",
87
+ "⡿",
88
+ "⣟",
89
+ "⣯",
90
+ "⣷"
85
91
  ]
86
92
  },
87
93
  dots3: {
88
94
  interval: 80,
89
95
  frames: [
90
- "\u280B",
91
- "\u2819",
92
- "\u281A",
93
- "\u281E",
94
- "\u2816",
95
- "\u2826",
96
- "\u2834",
97
- "\u2832",
98
- "\u2833",
99
- "\u2813"
96
+ "⠋",
97
+ "⠙",
98
+ "⠚",
99
+ "⠞",
100
+ "⠖",
101
+ "⠦",
102
+ "⠴",
103
+ "⠲",
104
+ "⠳",
105
+ "⠓"
100
106
  ]
101
107
  },
102
108
  dots4: {
103
109
  interval: 80,
104
110
  frames: [
105
- "\u2804",
106
- "\u2806",
107
- "\u2807",
108
- "\u280B",
109
- "\u2819",
110
- "\u2838",
111
- "\u2830",
112
- "\u2820",
113
- "\u2830",
114
- "\u2838",
115
- "\u2819",
116
- "\u280B",
117
- "\u2807",
118
- "\u2806"
111
+ "⠄",
112
+ "⠆",
113
+ "⠇",
114
+ "⠋",
115
+ "⠙",
116
+ "⠸",
117
+ "⠰",
118
+ "⠠",
119
+ "⠰",
120
+ "⠸",
121
+ "⠙",
122
+ "⠋",
123
+ "⠇",
124
+ "⠆"
119
125
  ]
120
126
  },
121
127
  dots5: {
122
128
  interval: 80,
123
129
  frames: [
124
- "\u280B",
125
- "\u2819",
126
- "\u281A",
127
- "\u2812",
128
- "\u2802",
129
- "\u2802",
130
- "\u2812",
131
- "\u2832",
132
- "\u2834",
133
- "\u2826",
134
- "\u2816",
135
- "\u2812",
136
- "\u2810",
137
- "\u2810",
138
- "\u2812",
139
- "\u2813",
140
- "\u280B"
130
+ "⠋",
131
+ "⠙",
132
+ "⠚",
133
+ "⠒",
134
+ "⠂",
135
+ "⠂",
136
+ "⠒",
137
+ "⠲",
138
+ "⠴",
139
+ "⠦",
140
+ "⠖",
141
+ "⠒",
142
+ "⠐",
143
+ "⠐",
144
+ "⠒",
145
+ "⠓",
146
+ "⠋"
141
147
  ]
142
148
  },
143
149
  dots6: {
144
150
  interval: 80,
145
151
  frames: [
146
- "\u2801",
147
- "\u2809",
148
- "\u2819",
149
- "\u281A",
150
- "\u2812",
151
- "\u2802",
152
- "\u2802",
153
- "\u2812",
154
- "\u2832",
155
- "\u2834",
156
- "\u2824",
157
- "\u2804",
158
- "\u2804",
159
- "\u2824",
160
- "\u2834",
161
- "\u2832",
162
- "\u2812",
163
- "\u2802",
164
- "\u2802",
165
- "\u2812",
166
- "\u281A",
167
- "\u2819",
168
- "\u2809",
169
- "\u2801"
152
+ "⠁",
153
+ "⠉",
154
+ "⠙",
155
+ "⠚",
156
+ "⠒",
157
+ "⠂",
158
+ "⠂",
159
+ "⠒",
160
+ "⠲",
161
+ "⠴",
162
+ "⠤",
163
+ "⠄",
164
+ "⠄",
165
+ "⠤",
166
+ "⠴",
167
+ "⠲",
168
+ "⠒",
169
+ "⠂",
170
+ "⠂",
171
+ "⠒",
172
+ "⠚",
173
+ "⠙",
174
+ "⠉",
175
+ "⠁"
170
176
  ]
171
177
  },
172
178
  dots7: {
173
179
  interval: 80,
174
180
  frames: [
175
- "\u2808",
176
- "\u2809",
177
- "\u280B",
178
- "\u2813",
179
- "\u2812",
180
- "\u2810",
181
- "\u2810",
182
- "\u2812",
183
- "\u2816",
184
- "\u2826",
185
- "\u2824",
186
- "\u2820",
187
- "\u2820",
188
- "\u2824",
189
- "\u2826",
190
- "\u2816",
191
- "\u2812",
192
- "\u2810",
193
- "\u2810",
194
- "\u2812",
195
- "\u2813",
196
- "\u280B",
197
- "\u2809",
198
- "\u2808"
181
+ "⠈",
182
+ "⠉",
183
+ "⠋",
184
+ "⠓",
185
+ "⠒",
186
+ "⠐",
187
+ "⠐",
188
+ "⠒",
189
+ "⠖",
190
+ "⠦",
191
+ "⠤",
192
+ "⠠",
193
+ "⠠",
194
+ "⠤",
195
+ "⠦",
196
+ "⠖",
197
+ "⠒",
198
+ "⠐",
199
+ "⠐",
200
+ "⠒",
201
+ "⠓",
202
+ "⠋",
203
+ "⠉",
204
+ "⠈"
199
205
  ]
200
206
  },
201
207
  dots8: {
202
208
  interval: 80,
203
209
  frames: [
204
- "\u2801",
205
- "\u2801",
206
- "\u2809",
207
- "\u2819",
208
- "\u281A",
209
- "\u2812",
210
- "\u2802",
211
- "\u2802",
212
- "\u2812",
213
- "\u2832",
214
- "\u2834",
215
- "\u2824",
216
- "\u2804",
217
- "\u2804",
218
- "\u2824",
219
- "\u2820",
220
- "\u2820",
221
- "\u2824",
222
- "\u2826",
223
- "\u2816",
224
- "\u2812",
225
- "\u2810",
226
- "\u2810",
227
- "\u2812",
228
- "\u2813",
229
- "\u280B",
230
- "\u2809",
231
- "\u2808",
232
- "\u2808"
210
+ "⠁",
211
+ "⠁",
212
+ "⠉",
213
+ "⠙",
214
+ "⠚",
215
+ "⠒",
216
+ "⠂",
217
+ "⠂",
218
+ "⠒",
219
+ "⠲",
220
+ "⠴",
221
+ "⠤",
222
+ "⠄",
223
+ "⠄",
224
+ "⠤",
225
+ "⠠",
226
+ "⠠",
227
+ "⠤",
228
+ "⠦",
229
+ "⠖",
230
+ "⠒",
231
+ "⠐",
232
+ "⠐",
233
+ "⠒",
234
+ "⠓",
235
+ "⠋",
236
+ "⠉",
237
+ "⠈",
238
+ "⠈"
233
239
  ]
234
240
  },
235
241
  dots9: {
236
242
  interval: 80,
237
243
  frames: [
238
- "\u28B9",
239
- "\u28BA",
240
- "\u28BC",
241
- "\u28F8",
242
- "\u28C7",
243
- "\u2867",
244
- "\u2857",
245
- "\u284F"
244
+ "⢹",
245
+ "⢺",
246
+ "⢼",
247
+ "⣸",
248
+ "⣇",
249
+ "⡧",
250
+ "⡗",
251
+ "⡏"
246
252
  ]
247
253
  },
248
254
  dots10: {
249
255
  interval: 80,
250
256
  frames: [
251
- "\u2884",
252
- "\u2882",
253
- "\u2881",
254
- "\u2841",
255
- "\u2848",
256
- "\u2850",
257
- "\u2860"
257
+ "⢄",
258
+ "⢂",
259
+ "⢁",
260
+ "⡁",
261
+ "⡈",
262
+ "⡐",
263
+ "⡠"
258
264
  ]
259
265
  },
260
266
  dots11: {
261
267
  interval: 100,
262
268
  frames: [
263
- "\u2801",
264
- "\u2802",
265
- "\u2804",
266
- "\u2840",
267
- "\u2880",
268
- "\u2820",
269
- "\u2810",
270
- "\u2808"
269
+ "⠁",
270
+ "⠂",
271
+ "⠄",
272
+ "⡀",
273
+ "⢀",
274
+ "⠠",
275
+ "⠐",
276
+ "⠈"
271
277
  ]
272
278
  },
273
279
  dots12: {
274
280
  interval: 80,
275
281
  frames: [
276
- "\u2880\u2800",
277
- "\u2840\u2800",
278
- "\u2804\u2800",
279
- "\u2882\u2800",
280
- "\u2842\u2800",
281
- "\u2805\u2800",
282
- "\u2883\u2800",
283
- "\u2843\u2800",
284
- "\u280D\u2800",
285
- "\u288B\u2800",
286
- "\u284B\u2800",
287
- "\u280D\u2801",
288
- "\u288B\u2801",
289
- "\u284B\u2801",
290
- "\u280D\u2809",
291
- "\u280B\u2809",
292
- "\u280B\u2809",
293
- "\u2809\u2819",
294
- "\u2809\u2819",
295
- "\u2809\u2829",
296
- "\u2808\u2899",
297
- "\u2808\u2859",
298
- "\u2888\u2829",
299
- "\u2840\u2899",
300
- "\u2804\u2859",
301
- "\u2882\u2829",
302
- "\u2842\u2898",
303
- "\u2805\u2858",
304
- "\u2883\u2828",
305
- "\u2843\u2890",
306
- "\u280D\u2850",
307
- "\u288B\u2820",
308
- "\u284B\u2880",
309
- "\u280D\u2841",
310
- "\u288B\u2801",
311
- "\u284B\u2801",
312
- "\u280D\u2809",
313
- "\u280B\u2809",
314
- "\u280B\u2809",
315
- "\u2809\u2819",
316
- "\u2809\u2819",
317
- "\u2809\u2829",
318
- "\u2808\u2899",
319
- "\u2808\u2859",
320
- "\u2808\u2829",
321
- "\u2800\u2899",
322
- "\u2800\u2859",
323
- "\u2800\u2829",
324
- "\u2800\u2898",
325
- "\u2800\u2858",
326
- "\u2800\u2828",
327
- "\u2800\u2890",
328
- "\u2800\u2850",
329
- "\u2800\u2820",
330
- "\u2800\u2880",
331
- "\u2800\u2840"
282
+ "⢀⠀",
283
+ "⡀⠀",
284
+ "⠄⠀",
285
+ "⢂⠀",
286
+ "⡂⠀",
287
+ "⠅⠀",
288
+ "⢃⠀",
289
+ "⡃⠀",
290
+ "⠍⠀",
291
+ "⢋⠀",
292
+ "⡋⠀",
293
+ "⠍⠁",
294
+ "⢋⠁",
295
+ "⡋⠁",
296
+ "⠍⠉",
297
+ "⠋⠉",
298
+ "⠋⠉",
299
+ "⠉⠙",
300
+ "⠉⠙",
301
+ "⠉⠩",
302
+ "⠈⢙",
303
+ "⠈⡙",
304
+ "⢈⠩",
305
+ "⡀⢙",
306
+ "⠄⡙",
307
+ "⢂⠩",
308
+ "⡂⢘",
309
+ "⠅⡘",
310
+ "⢃⠨",
311
+ "⡃⢐",
312
+ "⠍⡐",
313
+ "⢋⠠",
314
+ "⡋⢀",
315
+ "⠍⡁",
316
+ "⢋⠁",
317
+ "⡋⠁",
318
+ "⠍⠉",
319
+ "⠋⠉",
320
+ "⠋⠉",
321
+ "⠉⠙",
322
+ "⠉⠙",
323
+ "⠉⠩",
324
+ "⠈⢙",
325
+ "⠈⡙",
326
+ "⠈⠩",
327
+ "⠀⢙",
328
+ "⠀⡙",
329
+ "⠀⠩",
330
+ "⠀⢘",
331
+ "⠀⡘",
332
+ "⠀⠨",
333
+ "⠀⢐",
334
+ "⠀⡐",
335
+ "⠀⠠",
336
+ "⠀⢀",
337
+ "⠀⡀"
332
338
  ]
333
339
  },
334
340
  dots13: {
335
341
  interval: 80,
336
342
  frames: [
337
- "\u28FC",
338
- "\u28F9",
339
- "\u28BB",
340
- "\u283F",
341
- "\u285F",
342
- "\u28CF",
343
- "\u28E7",
344
- "\u28F6"
343
+ "⣼",
344
+ "⣹",
345
+ "⢻",
346
+ "⠿",
347
+ "⡟",
348
+ "⣏",
349
+ "⣧",
350
+ "⣶"
345
351
  ]
346
352
  },
347
353
  dots8Bit: {
348
354
  interval: 80,
349
355
  frames: [
350
- "\u2800",
351
- "\u2801",
352
- "\u2802",
353
- "\u2803",
354
- "\u2804",
355
- "\u2805",
356
- "\u2806",
357
- "\u2807",
358
- "\u2840",
359
- "\u2841",
360
- "\u2842",
361
- "\u2843",
362
- "\u2844",
363
- "\u2845",
364
- "\u2846",
365
- "\u2847",
366
- "\u2808",
367
- "\u2809",
368
- "\u280A",
369
- "\u280B",
370
- "\u280C",
371
- "\u280D",
372
- "\u280E",
373
- "\u280F",
374
- "\u2848",
375
- "\u2849",
376
- "\u284A",
377
- "\u284B",
378
- "\u284C",
379
- "\u284D",
380
- "\u284E",
381
- "\u284F",
382
- "\u2810",
383
- "\u2811",
384
- "\u2812",
385
- "\u2813",
386
- "\u2814",
387
- "\u2815",
388
- "\u2816",
389
- "\u2817",
390
- "\u2850",
391
- "\u2851",
392
- "\u2852",
393
- "\u2853",
394
- "\u2854",
395
- "\u2855",
396
- "\u2856",
397
- "\u2857",
398
- "\u2818",
399
- "\u2819",
400
- "\u281A",
401
- "\u281B",
402
- "\u281C",
403
- "\u281D",
404
- "\u281E",
405
- "\u281F",
406
- "\u2858",
407
- "\u2859",
408
- "\u285A",
409
- "\u285B",
410
- "\u285C",
411
- "\u285D",
412
- "\u285E",
413
- "\u285F",
414
- "\u2820",
415
- "\u2821",
416
- "\u2822",
417
- "\u2823",
418
- "\u2824",
419
- "\u2825",
420
- "\u2826",
421
- "\u2827",
422
- "\u2860",
423
- "\u2861",
424
- "\u2862",
425
- "\u2863",
426
- "\u2864",
427
- "\u2865",
428
- "\u2866",
429
- "\u2867",
430
- "\u2828",
431
- "\u2829",
432
- "\u282A",
433
- "\u282B",
434
- "\u282C",
435
- "\u282D",
436
- "\u282E",
437
- "\u282F",
438
- "\u2868",
439
- "\u2869",
440
- "\u286A",
441
- "\u286B",
442
- "\u286C",
443
- "\u286D",
444
- "\u286E",
445
- "\u286F",
446
- "\u2830",
447
- "\u2831",
448
- "\u2832",
449
- "\u2833",
450
- "\u2834",
451
- "\u2835",
452
- "\u2836",
453
- "\u2837",
454
- "\u2870",
455
- "\u2871",
456
- "\u2872",
457
- "\u2873",
458
- "\u2874",
459
- "\u2875",
460
- "\u2876",
461
- "\u2877",
462
- "\u2838",
463
- "\u2839",
464
- "\u283A",
465
- "\u283B",
466
- "\u283C",
467
- "\u283D",
468
- "\u283E",
469
- "\u283F",
470
- "\u2878",
471
- "\u2879",
472
- "\u287A",
473
- "\u287B",
474
- "\u287C",
475
- "\u287D",
476
- "\u287E",
477
- "\u287F",
478
- "\u2880",
479
- "\u2881",
480
- "\u2882",
481
- "\u2883",
482
- "\u2884",
483
- "\u2885",
484
- "\u2886",
485
- "\u2887",
486
- "\u28C0",
487
- "\u28C1",
488
- "\u28C2",
489
- "\u28C3",
490
- "\u28C4",
491
- "\u28C5",
492
- "\u28C6",
493
- "\u28C7",
494
- "\u2888",
495
- "\u2889",
496
- "\u288A",
497
- "\u288B",
498
- "\u288C",
499
- "\u288D",
500
- "\u288E",
501
- "\u288F",
502
- "\u28C8",
503
- "\u28C9",
504
- "\u28CA",
505
- "\u28CB",
506
- "\u28CC",
507
- "\u28CD",
508
- "\u28CE",
509
- "\u28CF",
510
- "\u2890",
511
- "\u2891",
512
- "\u2892",
513
- "\u2893",
514
- "\u2894",
515
- "\u2895",
516
- "\u2896",
517
- "\u2897",
518
- "\u28D0",
519
- "\u28D1",
520
- "\u28D2",
521
- "\u28D3",
522
- "\u28D4",
523
- "\u28D5",
524
- "\u28D6",
525
- "\u28D7",
526
- "\u2898",
527
- "\u2899",
528
- "\u289A",
529
- "\u289B",
530
- "\u289C",
531
- "\u289D",
532
- "\u289E",
533
- "\u289F",
534
- "\u28D8",
535
- "\u28D9",
536
- "\u28DA",
537
- "\u28DB",
538
- "\u28DC",
539
- "\u28DD",
540
- "\u28DE",
541
- "\u28DF",
542
- "\u28A0",
543
- "\u28A1",
544
- "\u28A2",
545
- "\u28A3",
546
- "\u28A4",
547
- "\u28A5",
548
- "\u28A6",
549
- "\u28A7",
550
- "\u28E0",
551
- "\u28E1",
552
- "\u28E2",
553
- "\u28E3",
554
- "\u28E4",
555
- "\u28E5",
556
- "\u28E6",
557
- "\u28E7",
558
- "\u28A8",
559
- "\u28A9",
560
- "\u28AA",
561
- "\u28AB",
562
- "\u28AC",
563
- "\u28AD",
564
- "\u28AE",
565
- "\u28AF",
566
- "\u28E8",
567
- "\u28E9",
568
- "\u28EA",
569
- "\u28EB",
570
- "\u28EC",
571
- "\u28ED",
572
- "\u28EE",
573
- "\u28EF",
574
- "\u28B0",
575
- "\u28B1",
576
- "\u28B2",
577
- "\u28B3",
578
- "\u28B4",
579
- "\u28B5",
580
- "\u28B6",
581
- "\u28B7",
582
- "\u28F0",
583
- "\u28F1",
584
- "\u28F2",
585
- "\u28F3",
586
- "\u28F4",
587
- "\u28F5",
588
- "\u28F6",
589
- "\u28F7",
590
- "\u28B8",
591
- "\u28B9",
592
- "\u28BA",
593
- "\u28BB",
594
- "\u28BC",
595
- "\u28BD",
596
- "\u28BE",
597
- "\u28BF",
598
- "\u28F8",
599
- "\u28F9",
600
- "\u28FA",
601
- "\u28FB",
602
- "\u28FC",
603
- "\u28FD",
604
- "\u28FE",
605
- "\u28FF"
356
+ "⠀",
357
+ "⠁",
358
+ "⠂",
359
+ "⠃",
360
+ "⠄",
361
+ "⠅",
362
+ "⠆",
363
+ "⠇",
364
+ "⡀",
365
+ "⡁",
366
+ "⡂",
367
+ "⡃",
368
+ "⡄",
369
+ "⡅",
370
+ "⡆",
371
+ "⡇",
372
+ "⠈",
373
+ "⠉",
374
+ "⠊",
375
+ "⠋",
376
+ "⠌",
377
+ "⠍",
378
+ "⠎",
379
+ "⠏",
380
+ "⡈",
381
+ "⡉",
382
+ "⡊",
383
+ "⡋",
384
+ "⡌",
385
+ "⡍",
386
+ "⡎",
387
+ "⡏",
388
+ "⠐",
389
+ "⠑",
390
+ "⠒",
391
+ "⠓",
392
+ "⠔",
393
+ "⠕",
394
+ "⠖",
395
+ "⠗",
396
+ "⡐",
397
+ "⡑",
398
+ "⡒",
399
+ "⡓",
400
+ "⡔",
401
+ "⡕",
402
+ "⡖",
403
+ "⡗",
404
+ "⠘",
405
+ "⠙",
406
+ "⠚",
407
+ "⠛",
408
+ "⠜",
409
+ "⠝",
410
+ "⠞",
411
+ "⠟",
412
+ "⡘",
413
+ "⡙",
414
+ "⡚",
415
+ "⡛",
416
+ "⡜",
417
+ "⡝",
418
+ "⡞",
419
+ "⡟",
420
+ "⠠",
421
+ "⠡",
422
+ "⠢",
423
+ "⠣",
424
+ "⠤",
425
+ "⠥",
426
+ "⠦",
427
+ "⠧",
428
+ "⡠",
429
+ "⡡",
430
+ "⡢",
431
+ "⡣",
432
+ "⡤",
433
+ "⡥",
434
+ "⡦",
435
+ "⡧",
436
+ "⠨",
437
+ "⠩",
438
+ "⠪",
439
+ "⠫",
440
+ "⠬",
441
+ "⠭",
442
+ "⠮",
443
+ "⠯",
444
+ "⡨",
445
+ "⡩",
446
+ "⡪",
447
+ "⡫",
448
+ "⡬",
449
+ "⡭",
450
+ "⡮",
451
+ "⡯",
452
+ "⠰",
453
+ "⠱",
454
+ "⠲",
455
+ "⠳",
456
+ "⠴",
457
+ "⠵",
458
+ "⠶",
459
+ "⠷",
460
+ "⡰",
461
+ "⡱",
462
+ "⡲",
463
+ "⡳",
464
+ "⡴",
465
+ "⡵",
466
+ "⡶",
467
+ "⡷",
468
+ "⠸",
469
+ "⠹",
470
+ "⠺",
471
+ "⠻",
472
+ "⠼",
473
+ "⠽",
474
+ "⠾",
475
+ "⠿",
476
+ "⡸",
477
+ "⡹",
478
+ "⡺",
479
+ "⡻",
480
+ "⡼",
481
+ "⡽",
482
+ "⡾",
483
+ "⡿",
484
+ "⢀",
485
+ "⢁",
486
+ "⢂",
487
+ "⢃",
488
+ "⢄",
489
+ "⢅",
490
+ "⢆",
491
+ "⢇",
492
+ "⣀",
493
+ "⣁",
494
+ "⣂",
495
+ "⣃",
496
+ "⣄",
497
+ "⣅",
498
+ "⣆",
499
+ "⣇",
500
+ "⢈",
501
+ "⢉",
502
+ "⢊",
503
+ "⢋",
504
+ "⢌",
505
+ "⢍",
506
+ "⢎",
507
+ "⢏",
508
+ "⣈",
509
+ "⣉",
510
+ "⣊",
511
+ "⣋",
512
+ "⣌",
513
+ "⣍",
514
+ "⣎",
515
+ "⣏",
516
+ "⢐",
517
+ "⢑",
518
+ "⢒",
519
+ "⢓",
520
+ "⢔",
521
+ "⢕",
522
+ "⢖",
523
+ "⢗",
524
+ "⣐",
525
+ "⣑",
526
+ "⣒",
527
+ "⣓",
528
+ "⣔",
529
+ "⣕",
530
+ "⣖",
531
+ "⣗",
532
+ "⢘",
533
+ "⢙",
534
+ "⢚",
535
+ "⢛",
536
+ "⢜",
537
+ "⢝",
538
+ "⢞",
539
+ "⢟",
540
+ "⣘",
541
+ "⣙",
542
+ "⣚",
543
+ "⣛",
544
+ "⣜",
545
+ "⣝",
546
+ "⣞",
547
+ "⣟",
548
+ "⢠",
549
+ "⢡",
550
+ "⢢",
551
+ "⢣",
552
+ "⢤",
553
+ "⢥",
554
+ "⢦",
555
+ "⢧",
556
+ "⣠",
557
+ "⣡",
558
+ "⣢",
559
+ "⣣",
560
+ "⣤",
561
+ "⣥",
562
+ "⣦",
563
+ "⣧",
564
+ "⢨",
565
+ "⢩",
566
+ "⢪",
567
+ "⢫",
568
+ "⢬",
569
+ "⢭",
570
+ "⢮",
571
+ "⢯",
572
+ "⣨",
573
+ "⣩",
574
+ "⣪",
575
+ "⣫",
576
+ "⣬",
577
+ "⣭",
578
+ "⣮",
579
+ "⣯",
580
+ "⢰",
581
+ "⢱",
582
+ "⢲",
583
+ "⢳",
584
+ "⢴",
585
+ "⢵",
586
+ "⢶",
587
+ "⢷",
588
+ "⣰",
589
+ "⣱",
590
+ "⣲",
591
+ "⣳",
592
+ "⣴",
593
+ "⣵",
594
+ "⣶",
595
+ "⣷",
596
+ "⢸",
597
+ "⢹",
598
+ "⢺",
599
+ "⢻",
600
+ "⢼",
601
+ "⢽",
602
+ "⢾",
603
+ "⢿",
604
+ "⣸",
605
+ "⣹",
606
+ "⣺",
607
+ "⣻",
608
+ "⣼",
609
+ "⣽",
610
+ "⣾",
611
+ "⣿"
606
612
  ]
607
613
  },
608
614
  sand: {
609
615
  interval: 80,
610
616
  frames: [
611
- "\u2801",
612
- "\u2802",
613
- "\u2804",
614
- "\u2840",
615
- "\u2848",
616
- "\u2850",
617
- "\u2860",
618
- "\u28C0",
619
- "\u28C1",
620
- "\u28C2",
621
- "\u28C4",
622
- "\u28CC",
623
- "\u28D4",
624
- "\u28E4",
625
- "\u28E5",
626
- "\u28E6",
627
- "\u28EE",
628
- "\u28F6",
629
- "\u28F7",
630
- "\u28FF",
631
- "\u287F",
632
- "\u283F",
633
- "\u289F",
634
- "\u281F",
635
- "\u285B",
636
- "\u281B",
637
- "\u282B",
638
- "\u288B",
639
- "\u280B",
640
- "\u280D",
641
- "\u2849",
642
- "\u2809",
643
- "\u2811",
644
- "\u2821",
645
- "\u2881"
617
+ "⠁",
618
+ "⠂",
619
+ "⠄",
620
+ "⡀",
621
+ "⡈",
622
+ "⡐",
623
+ "⡠",
624
+ "⣀",
625
+ "⣁",
626
+ "⣂",
627
+ "⣄",
628
+ "⣌",
629
+ "⣔",
630
+ "⣤",
631
+ "⣥",
632
+ "⣦",
633
+ "⣮",
634
+ "⣶",
635
+ "⣷",
636
+ "⣿",
637
+ "⡿",
638
+ "⠿",
639
+ "⢟",
640
+ "⠟",
641
+ "⡛",
642
+ "⠛",
643
+ "⠫",
644
+ "⢋",
645
+ "⠋",
646
+ "⠍",
647
+ "⡉",
648
+ "⠉",
649
+ "⠑",
650
+ "⠡",
651
+ "⢁"
646
652
  ]
647
653
  },
648
654
  line: {
@@ -657,25 +663,25 @@ var require_spinners = __commonJS((exports, module) => {
657
663
  line2: {
658
664
  interval: 100,
659
665
  frames: [
660
- "\u2802",
666
+ "⠂",
661
667
  "-",
662
- "\u2013",
663
- "\u2014",
664
- "\u2013",
668
+ "–",
669
+ "—",
670
+ "–",
665
671
  "-"
666
672
  ]
667
673
  },
668
674
  pipe: {
669
675
  interval: 100,
670
676
  frames: [
671
- "\u2524",
672
- "\u2518",
673
- "\u2534",
674
- "\u2514",
675
- "\u251C",
676
- "\u250C",
677
- "\u252C",
678
- "\u2510"
677
+ "┤",
678
+ "┘",
679
+ "┴",
680
+ "└",
681
+ "├",
682
+ "┌",
683
+ "┬",
684
+ "┐"
679
685
  ]
680
686
  },
681
687
  simpleDots: {
@@ -701,12 +707,12 @@ var require_spinners = __commonJS((exports, module) => {
701
707
  star: {
702
708
  interval: 70,
703
709
  frames: [
704
- "\u2736",
705
- "\u2738",
706
- "\u2739",
707
- "\u273A",
708
- "\u2739",
709
- "\u2737"
710
+ "✶",
711
+ "✸",
712
+ "✹",
713
+ "✺",
714
+ "✹",
715
+ "✷"
710
716
  ]
711
717
  },
712
718
  star2: {
@@ -727,7 +733,7 @@ var require_spinners = __commonJS((exports, module) => {
727
733
  "`",
728
734
  "`",
729
735
  "'",
730
- "\xB4",
736
+ "´",
731
737
  "-",
732
738
  "_",
733
739
  "_",
@@ -737,41 +743,41 @@ var require_spinners = __commonJS((exports, module) => {
737
743
  hamburger: {
738
744
  interval: 100,
739
745
  frames: [
740
- "\u2631",
741
- "\u2632",
742
- "\u2634"
746
+ "☱",
747
+ "☲",
748
+ "☴"
743
749
  ]
744
750
  },
745
751
  growVertical: {
746
752
  interval: 120,
747
753
  frames: [
748
- "\u2581",
749
- "\u2583",
750
- "\u2584",
751
- "\u2585",
752
- "\u2586",
753
- "\u2587",
754
- "\u2586",
755
- "\u2585",
756
- "\u2584",
757
- "\u2583"
754
+ "▁",
755
+ "▃",
756
+ "▄",
757
+ "▅",
758
+ "▆",
759
+ "▇",
760
+ "▆",
761
+ "▅",
762
+ "▄",
763
+ "▃"
758
764
  ]
759
765
  },
760
766
  growHorizontal: {
761
767
  interval: 120,
762
768
  frames: [
763
- "\u258F",
764
- "\u258E",
765
- "\u258D",
766
- "\u258C",
767
- "\u258B",
768
- "\u258A",
769
- "\u2589",
770
- "\u258A",
771
- "\u258B",
772
- "\u258C",
773
- "\u258D",
774
- "\u258E"
769
+ "▏",
770
+ "▎",
771
+ "▍",
772
+ "▌",
773
+ "▋",
774
+ "▊",
775
+ "▉",
776
+ "▊",
777
+ "▋",
778
+ "▌",
779
+ "▍",
780
+ "▎"
775
781
  ]
776
782
  },
777
783
  balloon: {
@@ -792,7 +798,7 @@ var require_spinners = __commonJS((exports, module) => {
792
798
  ".",
793
799
  "o",
794
800
  "O",
795
- "\xB0",
801
+ "°",
796
802
  "O",
797
803
  "o",
798
804
  "."
@@ -801,45 +807,45 @@ var require_spinners = __commonJS((exports, module) => {
801
807
  noise: {
802
808
  interval: 100,
803
809
  frames: [
804
- "\u2593",
805
- "\u2592",
806
- "\u2591"
810
+ "▓",
811
+ "▒",
812
+ "░"
807
813
  ]
808
814
  },
809
815
  bounce: {
810
816
  interval: 120,
811
817
  frames: [
812
- "\u2801",
813
- "\u2802",
814
- "\u2804",
815
- "\u2802"
818
+ "⠁",
819
+ "⠂",
820
+ "⠄",
821
+ "⠂"
816
822
  ]
817
823
  },
818
824
  boxBounce: {
819
825
  interval: 120,
820
826
  frames: [
821
- "\u2596",
822
- "\u2598",
823
- "\u259D",
824
- "\u2597"
827
+ "▖",
828
+ "▘",
829
+ "▝",
830
+ "▗"
825
831
  ]
826
832
  },
827
833
  boxBounce2: {
828
834
  interval: 100,
829
835
  frames: [
830
- "\u258C",
831
- "\u2580",
832
- "\u2590",
833
- "\u2584"
836
+ "▌",
837
+ "▀",
838
+ "▐",
839
+ "▄"
834
840
  ]
835
841
  },
836
842
  triangle: {
837
843
  interval: 50,
838
844
  frames: [
839
- "\u25E2",
840
- "\u25E3",
841
- "\u25E4",
842
- "\u25E5"
845
+ "◢",
846
+ "◣",
847
+ "◤",
848
+ "◥"
843
849
  ]
844
850
  },
845
851
  binary: {
@@ -860,141 +866,141 @@ var require_spinners = __commonJS((exports, module) => {
860
866
  arc: {
861
867
  interval: 100,
862
868
  frames: [
863
- "\u25DC",
864
- "\u25E0",
865
- "\u25DD",
866
- "\u25DE",
867
- "\u25E1",
868
- "\u25DF"
869
+ "◜",
870
+ "◠",
871
+ "◝",
872
+ "◞",
873
+ "◡",
874
+ "◟"
869
875
  ]
870
876
  },
871
877
  circle: {
872
878
  interval: 120,
873
879
  frames: [
874
- "\u25E1",
875
- "\u2299",
876
- "\u25E0"
880
+ "◡",
881
+ "⊙",
882
+ "◠"
877
883
  ]
878
884
  },
879
885
  squareCorners: {
880
886
  interval: 180,
881
887
  frames: [
882
- "\u25F0",
883
- "\u25F3",
884
- "\u25F2",
885
- "\u25F1"
888
+ "◰",
889
+ "◳",
890
+ "◲",
891
+ "◱"
886
892
  ]
887
893
  },
888
894
  circleQuarters: {
889
895
  interval: 120,
890
896
  frames: [
891
- "\u25F4",
892
- "\u25F7",
893
- "\u25F6",
894
- "\u25F5"
897
+ "◴",
898
+ "◷",
899
+ "◶",
900
+ "◵"
895
901
  ]
896
902
  },
897
903
  circleHalves: {
898
904
  interval: 50,
899
905
  frames: [
900
- "\u25D0",
901
- "\u25D3",
902
- "\u25D1",
903
- "\u25D2"
906
+ "◐",
907
+ "◓",
908
+ "◑",
909
+ "◒"
904
910
  ]
905
911
  },
906
912
  squish: {
907
913
  interval: 100,
908
914
  frames: [
909
- "\u256B",
910
- "\u256A"
915
+ "╫",
916
+ "╪"
911
917
  ]
912
918
  },
913
919
  toggle: {
914
920
  interval: 250,
915
921
  frames: [
916
- "\u22B6",
917
- "\u22B7"
922
+ "⊶",
923
+ "⊷"
918
924
  ]
919
925
  },
920
926
  toggle2: {
921
927
  interval: 80,
922
928
  frames: [
923
- "\u25AB",
924
- "\u25AA"
929
+ "▫",
930
+ "▪"
925
931
  ]
926
932
  },
927
933
  toggle3: {
928
934
  interval: 120,
929
935
  frames: [
930
- "\u25A1",
931
- "\u25A0"
936
+ "□",
937
+ "■"
932
938
  ]
933
939
  },
934
940
  toggle4: {
935
941
  interval: 100,
936
942
  frames: [
937
- "\u25A0",
938
- "\u25A1",
939
- "\u25AA",
940
- "\u25AB"
943
+ "■",
944
+ "□",
945
+ "▪",
946
+ "▫"
941
947
  ]
942
948
  },
943
949
  toggle5: {
944
950
  interval: 100,
945
951
  frames: [
946
- "\u25AE",
947
- "\u25AF"
952
+ "▮",
953
+ "▯"
948
954
  ]
949
955
  },
950
956
  toggle6: {
951
957
  interval: 300,
952
958
  frames: [
953
- "\u101D",
954
- "\u1040"
959
+ "ဝ",
960
+ "၀"
955
961
  ]
956
962
  },
957
963
  toggle7: {
958
964
  interval: 80,
959
965
  frames: [
960
- "\u29BE",
961
- "\u29BF"
966
+ "⦾",
967
+ "⦿"
962
968
  ]
963
969
  },
964
970
  toggle8: {
965
971
  interval: 100,
966
972
  frames: [
967
- "\u25CD",
968
- "\u25CC"
973
+ "◍",
974
+ "◌"
969
975
  ]
970
976
  },
971
977
  toggle9: {
972
978
  interval: 100,
973
979
  frames: [
974
- "\u25C9",
975
- "\u25CE"
980
+ "◉",
981
+ "◎"
976
982
  ]
977
983
  },
978
984
  toggle10: {
979
985
  interval: 100,
980
986
  frames: [
981
- "\u3282",
982
- "\u3280",
983
- "\u3281"
987
+ "㊂",
988
+ "㊀",
989
+ "㊁"
984
990
  ]
985
991
  },
986
992
  toggle11: {
987
993
  interval: 50,
988
994
  frames: [
989
- "\u29C7",
990
- "\u29C6"
995
+ "⧇",
996
+ "⧆"
991
997
  ]
992
998
  },
993
999
  toggle12: {
994
1000
  interval: 120,
995
1001
  frames: [
996
- "\u2617",
997
- "\u2616"
1002
+ "☗",
1003
+ "☖"
998
1004
  ]
999
1005
  },
1000
1006
  toggle13: {
@@ -1008,38 +1014,38 @@ var require_spinners = __commonJS((exports, module) => {
1008
1014
  arrow: {
1009
1015
  interval: 100,
1010
1016
  frames: [
1011
- "\u2190",
1012
- "\u2196",
1013
- "\u2191",
1014
- "\u2197",
1015
- "\u2192",
1016
- "\u2198",
1017
- "\u2193",
1018
- "\u2199"
1017
+ "←",
1018
+ "↖",
1019
+ "↑",
1020
+ "↗",
1021
+ "→",
1022
+ "↘",
1023
+ "↓",
1024
+ "↙"
1019
1025
  ]
1020
1026
  },
1021
1027
  arrow2: {
1022
1028
  interval: 80,
1023
1029
  frames: [
1024
- "\u2B06\uFE0F ",
1025
- "\u2197\uFE0F ",
1026
- "\u27A1\uFE0F ",
1027
- "\u2198\uFE0F ",
1028
- "\u2B07\uFE0F ",
1029
- "\u2199\uFE0F ",
1030
- "\u2B05\uFE0F ",
1031
- "\u2196\uFE0F "
1030
+ "⬆️ ",
1031
+ "↗️ ",
1032
+ "➡️ ",
1033
+ "↘️ ",
1034
+ "⬇️ ",
1035
+ "↙️ ",
1036
+ "⬅️ ",
1037
+ "↖️ "
1032
1038
  ]
1033
1039
  },
1034
1040
  arrow3: {
1035
1041
  interval: 120,
1036
1042
  frames: [
1037
- "\u25B9\u25B9\u25B9\u25B9\u25B9",
1038
- "\u25B8\u25B9\u25B9\u25B9\u25B9",
1039
- "\u25B9\u25B8\u25B9\u25B9\u25B9",
1040
- "\u25B9\u25B9\u25B8\u25B9\u25B9",
1041
- "\u25B9\u25B9\u25B9\u25B8\u25B9",
1042
- "\u25B9\u25B9\u25B9\u25B9\u25B8"
1043
+ "▹▹▹▹▹",
1044
+ "▸▹▹▹▹",
1045
+ "▹▸▹▹▹",
1046
+ "▹▹▸▹▹",
1047
+ "▹▹▹▸▹",
1048
+ "▹▹▹▹▸"
1043
1049
  ]
1044
1050
  },
1045
1051
  bouncingBar: {
@@ -1066,250 +1072,250 @@ var require_spinners = __commonJS((exports, module) => {
1066
1072
  bouncingBall: {
1067
1073
  interval: 80,
1068
1074
  frames: [
1069
- "( \u25CF )",
1070
- "( \u25CF )",
1071
- "( \u25CF )",
1072
- "( \u25CF )",
1073
- "( \u25CF)",
1074
- "( \u25CF )",
1075
- "( \u25CF )",
1076
- "( \u25CF )",
1077
- "( \u25CF )",
1078
- "(\u25CF )"
1075
+ "( ● )",
1076
+ "( ● )",
1077
+ "( ● )",
1078
+ "( ● )",
1079
+ "( ●)",
1080
+ "( ● )",
1081
+ "( ● )",
1082
+ "( ● )",
1083
+ "( ● )",
1084
+ "(● )"
1079
1085
  ]
1080
1086
  },
1081
1087
  smiley: {
1082
1088
  interval: 200,
1083
1089
  frames: [
1084
- "\uD83D\uDE04 ",
1085
- "\uD83D\uDE1D "
1090
+ "😄 ",
1091
+ "😝 "
1086
1092
  ]
1087
1093
  },
1088
1094
  monkey: {
1089
1095
  interval: 300,
1090
1096
  frames: [
1091
- "\uD83D\uDE48 ",
1092
- "\uD83D\uDE48 ",
1093
- "\uD83D\uDE49 ",
1094
- "\uD83D\uDE4A "
1097
+ "🙈 ",
1098
+ "🙈 ",
1099
+ "🙉 ",
1100
+ "🙊 "
1095
1101
  ]
1096
1102
  },
1097
1103
  hearts: {
1098
1104
  interval: 100,
1099
1105
  frames: [
1100
- "\uD83D\uDC9B ",
1101
- "\uD83D\uDC99 ",
1102
- "\uD83D\uDC9C ",
1103
- "\uD83D\uDC9A ",
1104
- "\u2764\uFE0F "
1106
+ "💛 ",
1107
+ "💙 ",
1108
+ "💜 ",
1109
+ "💚 ",
1110
+ "❤️ "
1105
1111
  ]
1106
1112
  },
1107
1113
  clock: {
1108
1114
  interval: 100,
1109
1115
  frames: [
1110
- "\uD83D\uDD5B ",
1111
- "\uD83D\uDD50 ",
1112
- "\uD83D\uDD51 ",
1113
- "\uD83D\uDD52 ",
1114
- "\uD83D\uDD53 ",
1115
- "\uD83D\uDD54 ",
1116
- "\uD83D\uDD55 ",
1117
- "\uD83D\uDD56 ",
1118
- "\uD83D\uDD57 ",
1119
- "\uD83D\uDD58 ",
1120
- "\uD83D\uDD59 ",
1121
- "\uD83D\uDD5A "
1116
+ "🕛 ",
1117
+ "🕐 ",
1118
+ "🕑 ",
1119
+ "🕒 ",
1120
+ "🕓 ",
1121
+ "🕔 ",
1122
+ "🕕 ",
1123
+ "🕖 ",
1124
+ "🕗 ",
1125
+ "🕘 ",
1126
+ "🕙 ",
1127
+ "🕚 "
1122
1128
  ]
1123
1129
  },
1124
1130
  earth: {
1125
1131
  interval: 180,
1126
1132
  frames: [
1127
- "\uD83C\uDF0D ",
1128
- "\uD83C\uDF0E ",
1129
- "\uD83C\uDF0F "
1133
+ "🌍 ",
1134
+ "🌎 ",
1135
+ "🌏 "
1130
1136
  ]
1131
1137
  },
1132
1138
  material: {
1133
1139
  interval: 17,
1134
1140
  frames: [
1135
- "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1136
- "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1137
- "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1138
- "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1139
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1140
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1141
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1142
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1143
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1144
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1145
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1146
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1147
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1148
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
1149
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
1150
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1151
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1152
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1153
- "\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
1154
- "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1155
- "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1156
- "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
1157
- "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
1158
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1159
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1160
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1161
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1162
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1163
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1164
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1165
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1166
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1167
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1168
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1169
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1170
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1171
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1172
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1173
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588",
1174
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
1175
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
1176
- "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
1177
- "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1178
- "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1179
- "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1180
- "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
1181
- "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1182
- "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1183
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1184
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1185
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1186
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1187
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1188
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1189
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1190
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1191
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1192
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
1193
- "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
1194
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1195
- "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
1196
- "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
1197
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1198
- "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1199
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1200
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1201
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
1202
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
1203
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
1204
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1205
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1206
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1207
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1208
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
1209
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1210
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
1211
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
1212
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
1213
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
1214
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
1215
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1216
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
1217
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
1218
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
1219
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
1220
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1221
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1222
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
1223
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1224
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1225
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
1226
- "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"
1141
+ "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1142
+ "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1143
+ "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1144
+ "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1145
+ "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1146
+ "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1147
+ "███████▁▁▁▁▁▁▁▁▁▁▁▁▁",
1148
+ "████████▁▁▁▁▁▁▁▁▁▁▁▁",
1149
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
1150
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
1151
+ "██████████▁▁▁▁▁▁▁▁▁▁",
1152
+ "███████████▁▁▁▁▁▁▁▁▁",
1153
+ "█████████████▁▁▁▁▁▁▁",
1154
+ "██████████████▁▁▁▁▁▁",
1155
+ "██████████████▁▁▁▁▁▁",
1156
+ "▁██████████████▁▁▁▁▁",
1157
+ "▁██████████████▁▁▁▁▁",
1158
+ "▁██████████████▁▁▁▁▁",
1159
+ "▁▁██████████████▁▁▁▁",
1160
+ "▁▁▁██████████████▁▁▁",
1161
+ "▁▁▁▁█████████████▁▁▁",
1162
+ "▁▁▁▁██████████████▁▁",
1163
+ "▁▁▁▁██████████████▁▁",
1164
+ "▁▁▁▁▁██████████████▁",
1165
+ "▁▁▁▁▁██████████████▁",
1166
+ "▁▁▁▁▁██████████████▁",
1167
+ "▁▁▁▁▁▁██████████████",
1168
+ "▁▁▁▁▁▁██████████████",
1169
+ "▁▁▁▁▁▁▁█████████████",
1170
+ "▁▁▁▁▁▁▁█████████████",
1171
+ "▁▁▁▁▁▁▁▁████████████",
1172
+ "▁▁▁▁▁▁▁▁████████████",
1173
+ "▁▁▁▁▁▁▁▁▁███████████",
1174
+ "▁▁▁▁▁▁▁▁▁███████████",
1175
+ "▁▁▁▁▁▁▁▁▁▁██████████",
1176
+ "▁▁▁▁▁▁▁▁▁▁██████████",
1177
+ "▁▁▁▁▁▁▁▁▁▁▁▁████████",
1178
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
1179
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████",
1180
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
1181
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
1182
+ "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
1183
+ "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
1184
+ "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
1185
+ "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
1186
+ "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
1187
+ "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
1188
+ "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
1189
+ "██████▁▁▁▁▁▁▁▁▁▁▁▁▁█",
1190
+ "████████▁▁▁▁▁▁▁▁▁▁▁▁",
1191
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
1192
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
1193
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
1194
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
1195
+ "███████████▁▁▁▁▁▁▁▁▁",
1196
+ "████████████▁▁▁▁▁▁▁▁",
1197
+ "████████████▁▁▁▁▁▁▁▁",
1198
+ "██████████████▁▁▁▁▁▁",
1199
+ "██████████████▁▁▁▁▁▁",
1200
+ "▁██████████████▁▁▁▁▁",
1201
+ "▁██████████████▁▁▁▁▁",
1202
+ "▁▁▁█████████████▁▁▁▁",
1203
+ "▁▁▁▁▁████████████▁▁▁",
1204
+ "▁▁▁▁▁████████████▁▁▁",
1205
+ "▁▁▁▁▁▁███████████▁▁▁",
1206
+ "▁▁▁▁▁▁▁▁█████████▁▁▁",
1207
+ "▁▁▁▁▁▁▁▁█████████▁▁▁",
1208
+ "▁▁▁▁▁▁▁▁▁█████████▁▁",
1209
+ "▁▁▁▁▁▁▁▁▁█████████▁▁",
1210
+ "▁▁▁▁▁▁▁▁▁▁█████████▁",
1211
+ "▁▁▁▁▁▁▁▁▁▁▁████████▁",
1212
+ "▁▁▁▁▁▁▁▁▁▁▁████████▁",
1213
+ "▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
1214
+ "▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
1215
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
1216
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
1217
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
1218
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
1219
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
1220
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
1221
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
1222
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
1223
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
1224
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
1225
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
1226
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
1227
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
1228
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
1229
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1230
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1231
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
1232
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁"
1227
1233
  ]
1228
1234
  },
1229
1235
  moon: {
1230
1236
  interval: 80,
1231
1237
  frames: [
1232
- "\uD83C\uDF11 ",
1233
- "\uD83C\uDF12 ",
1234
- "\uD83C\uDF13 ",
1235
- "\uD83C\uDF14 ",
1236
- "\uD83C\uDF15 ",
1237
- "\uD83C\uDF16 ",
1238
- "\uD83C\uDF17 ",
1239
- "\uD83C\uDF18 "
1238
+ "🌑 ",
1239
+ "🌒 ",
1240
+ "🌓 ",
1241
+ "🌔 ",
1242
+ "🌕 ",
1243
+ "🌖 ",
1244
+ "🌗 ",
1245
+ "🌘 "
1240
1246
  ]
1241
1247
  },
1242
1248
  runner: {
1243
1249
  interval: 140,
1244
1250
  frames: [
1245
- "\uD83D\uDEB6 ",
1246
- "\uD83C\uDFC3 "
1251
+ "🚶 ",
1252
+ "🏃 "
1247
1253
  ]
1248
1254
  },
1249
1255
  pong: {
1250
1256
  interval: 80,
1251
1257
  frames: [
1252
- "\u2590\u2802 \u258C",
1253
- "\u2590\u2808 \u258C",
1254
- "\u2590 \u2802 \u258C",
1255
- "\u2590 \u2820 \u258C",
1256
- "\u2590 \u2840 \u258C",
1257
- "\u2590 \u2820 \u258C",
1258
- "\u2590 \u2802 \u258C",
1259
- "\u2590 \u2808 \u258C",
1260
- "\u2590 \u2802 \u258C",
1261
- "\u2590 \u2820 \u258C",
1262
- "\u2590 \u2840 \u258C",
1263
- "\u2590 \u2820 \u258C",
1264
- "\u2590 \u2802 \u258C",
1265
- "\u2590 \u2808 \u258C",
1266
- "\u2590 \u2802\u258C",
1267
- "\u2590 \u2820\u258C",
1268
- "\u2590 \u2840\u258C",
1269
- "\u2590 \u2820 \u258C",
1270
- "\u2590 \u2802 \u258C",
1271
- "\u2590 \u2808 \u258C",
1272
- "\u2590 \u2802 \u258C",
1273
- "\u2590 \u2820 \u258C",
1274
- "\u2590 \u2840 \u258C",
1275
- "\u2590 \u2820 \u258C",
1276
- "\u2590 \u2802 \u258C",
1277
- "\u2590 \u2808 \u258C",
1278
- "\u2590 \u2802 \u258C",
1279
- "\u2590 \u2820 \u258C",
1280
- "\u2590 \u2840 \u258C",
1281
- "\u2590\u2820 \u258C"
1258
+ "▐⠂ ▌",
1259
+ "▐⠈ ▌",
1260
+ "▐ ⠂ ▌",
1261
+ "▐ ⠠ ▌",
1262
+ "▐ ⡀ ▌",
1263
+ "▐ ⠠ ▌",
1264
+ "▐ ⠂ ▌",
1265
+ "▐ ⠈ ▌",
1266
+ "▐ ⠂ ▌",
1267
+ "▐ ⠠ ▌",
1268
+ "▐ ⡀ ▌",
1269
+ "▐ ⠠ ▌",
1270
+ "▐ ⠂ ▌",
1271
+ "▐ ⠈ ▌",
1272
+ "▐ ⠂▌",
1273
+ "▐ ⠠▌",
1274
+ "▐ ⡀▌",
1275
+ "▐ ⠠ ▌",
1276
+ "▐ ⠂ ▌",
1277
+ "▐ ⠈ ▌",
1278
+ "▐ ⠂ ▌",
1279
+ "▐ ⠠ ▌",
1280
+ "▐ ⡀ ▌",
1281
+ "▐ ⠠ ▌",
1282
+ "▐ ⠂ ▌",
1283
+ "▐ ⠈ ▌",
1284
+ "▐ ⠂ ▌",
1285
+ "▐ ⠠ ▌",
1286
+ "▐ ⡀ ▌",
1287
+ "▐⠠ ▌"
1282
1288
  ]
1283
1289
  },
1284
1290
  shark: {
1285
1291
  interval: 120,
1286
1292
  frames: [
1287
- "\u2590|\\____________\u258C",
1288
- "\u2590_|\\___________\u258C",
1289
- "\u2590__|\\__________\u258C",
1290
- "\u2590___|\\_________\u258C",
1291
- "\u2590____|\\________\u258C",
1292
- "\u2590_____|\\_______\u258C",
1293
- "\u2590______|\\______\u258C",
1294
- "\u2590_______|\\_____\u258C",
1295
- "\u2590________|\\____\u258C",
1296
- "\u2590_________|\\___\u258C",
1297
- "\u2590__________|\\__\u258C",
1298
- "\u2590___________|\\_\u258C",
1299
- "\u2590____________|\\\u258C",
1300
- "\u2590____________/|\u258C",
1301
- "\u2590___________/|_\u258C",
1302
- "\u2590__________/|__\u258C",
1303
- "\u2590_________/|___\u258C",
1304
- "\u2590________/|____\u258C",
1305
- "\u2590_______/|_____\u258C",
1306
- "\u2590______/|______\u258C",
1307
- "\u2590_____/|_______\u258C",
1308
- "\u2590____/|________\u258C",
1309
- "\u2590___/|_________\u258C",
1310
- "\u2590__/|__________\u258C",
1311
- "\u2590_/|___________\u258C",
1312
- "\u2590/|____________\u258C"
1293
+ "▐|\\____________▌",
1294
+ "▐_|\\___________▌",
1295
+ "▐__|\\__________▌",
1296
+ "▐___|\\_________▌",
1297
+ "▐____|\\________▌",
1298
+ "▐_____|\\_______▌",
1299
+ "▐______|\\______▌",
1300
+ "▐_______|\\_____▌",
1301
+ "▐________|\\____▌",
1302
+ "▐_________|\\___▌",
1303
+ "▐__________|\\__▌",
1304
+ "▐___________|\\_▌",
1305
+ "▐____________|\\▌",
1306
+ "▐____________/|▌",
1307
+ "▐___________/|_▌",
1308
+ "▐__________/|__▌",
1309
+ "▐_________/|___▌",
1310
+ "▐________/|____▌",
1311
+ "▐_______/|_____▌",
1312
+ "▐______/|______▌",
1313
+ "▐_____/|_______▌",
1314
+ "▐____/|________▌",
1315
+ "▐___/|_________▌",
1316
+ "▐__/|__________▌",
1317
+ "▐_/|___________▌",
1318
+ "▐/|____________▌"
1313
1319
  ]
1314
1320
  },
1315
1321
  dqpb: {
@@ -1324,52 +1330,52 @@ var require_spinners = __commonJS((exports, module) => {
1324
1330
  weather: {
1325
1331
  interval: 100,
1326
1332
  frames: [
1327
- "\u2600\uFE0F ",
1328
- "\u2600\uFE0F ",
1329
- "\u2600\uFE0F ",
1330
- "\uD83C\uDF24 ",
1331
- "\u26C5\uFE0F ",
1332
- "\uD83C\uDF25 ",
1333
- "\u2601\uFE0F ",
1334
- "\uD83C\uDF27 ",
1335
- "\uD83C\uDF28 ",
1336
- "\uD83C\uDF27 ",
1337
- "\uD83C\uDF28 ",
1338
- "\uD83C\uDF27 ",
1339
- "\uD83C\uDF28 ",
1340
- "\u26C8 ",
1341
- "\uD83C\uDF28 ",
1342
- "\uD83C\uDF27 ",
1343
- "\uD83C\uDF28 ",
1344
- "\u2601\uFE0F ",
1345
- "\uD83C\uDF25 ",
1346
- "\u26C5\uFE0F ",
1347
- "\uD83C\uDF24 ",
1348
- "\u2600\uFE0F ",
1349
- "\u2600\uFE0F "
1333
+ "☀️ ",
1334
+ "☀️ ",
1335
+ "☀️ ",
1336
+ "🌤 ",
1337
+ "⛅️ ",
1338
+ "🌥 ",
1339
+ "☁️ ",
1340
+ "🌧 ",
1341
+ "🌨 ",
1342
+ "🌧 ",
1343
+ "🌨 ",
1344
+ "🌧 ",
1345
+ "🌨 ",
1346
+ "⛈ ",
1347
+ "🌨 ",
1348
+ "🌧 ",
1349
+ "🌨 ",
1350
+ "☁️ ",
1351
+ "🌥 ",
1352
+ "⛅️ ",
1353
+ "🌤 ",
1354
+ "☀️ ",
1355
+ "☀️ "
1350
1356
  ]
1351
1357
  },
1352
1358
  christmas: {
1353
1359
  interval: 400,
1354
1360
  frames: [
1355
- "\uD83C\uDF32",
1356
- "\uD83C\uDF84"
1361
+ "🌲",
1362
+ "🎄"
1357
1363
  ]
1358
1364
  },
1359
1365
  grenade: {
1360
1366
  interval: 80,
1361
1367
  frames: [
1362
- "\u060C ",
1363
- "\u2032 ",
1364
- " \xB4 ",
1365
- " \u203E ",
1366
- " \u2E0C",
1367
- " \u2E0A",
1368
+ "، ",
1369
+ "′ ",
1370
+ " ´ ",
1371
+ " ‾ ",
1372
+ " ⸌",
1373
+ " ⸊",
1368
1374
  " |",
1369
- " \u204E",
1370
- " \u2055",
1371
- " \u0DF4 ",
1372
- " \u2053",
1375
+ " ⁎",
1376
+ " ⁕",
1377
+ " ෴ ",
1378
+ " ⁓",
1373
1379
  " ",
1374
1380
  " ",
1375
1381
  " "
@@ -1378,11 +1384,11 @@ var require_spinners = __commonJS((exports, module) => {
1378
1384
  point: {
1379
1385
  interval: 125,
1380
1386
  frames: [
1381
- "\u2219\u2219\u2219",
1382
- "\u25CF\u2219\u2219",
1383
- "\u2219\u25CF\u2219",
1384
- "\u2219\u2219\u25CF",
1385
- "\u2219\u2219\u2219"
1387
+ "∙∙∙",
1388
+ "●∙∙",
1389
+ "∙●∙",
1390
+ "∙∙●",
1391
+ "∙∙∙"
1386
1392
  ]
1387
1393
  },
1388
1394
  layer: {
@@ -1390,290 +1396,290 @@ var require_spinners = __commonJS((exports, module) => {
1390
1396
  frames: [
1391
1397
  "-",
1392
1398
  "=",
1393
- "\u2261"
1399
+ "≡"
1394
1400
  ]
1395
1401
  },
1396
1402
  betaWave: {
1397
1403
  interval: 80,
1398
1404
  frames: [
1399
- "\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2",
1400
- "\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2",
1401
- "\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2",
1402
- "\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2",
1403
- "\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2",
1404
- "\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2",
1405
- "\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"
1405
+ "ρββββββ",
1406
+ "βρβββββ",
1407
+ "ββρββββ",
1408
+ "βββρβββ",
1409
+ "ββββρββ",
1410
+ "βββββρβ",
1411
+ "ββββββρ"
1406
1412
  ]
1407
1413
  },
1408
1414
  fingerDance: {
1409
1415
  interval: 160,
1410
1416
  frames: [
1411
- "\uD83E\uDD18 ",
1412
- "\uD83E\uDD1F ",
1413
- "\uD83D\uDD96 ",
1414
- "\u270B ",
1415
- "\uD83E\uDD1A ",
1416
- "\uD83D\uDC46 "
1417
+ "🤘 ",
1418
+ "🤟 ",
1419
+ "🖖 ",
1420
+ "✋ ",
1421
+ "🤚 ",
1422
+ "👆 "
1417
1423
  ]
1418
1424
  },
1419
1425
  fistBump: {
1420
1426
  interval: 80,
1421
1427
  frames: [
1422
- "\uD83E\uDD1C\u3000\u3000\u3000\u3000\uD83E\uDD1B ",
1423
- "\uD83E\uDD1C\u3000\u3000\u3000\u3000\uD83E\uDD1B ",
1424
- "\uD83E\uDD1C\u3000\u3000\u3000\u3000\uD83E\uDD1B ",
1425
- "\u3000\uD83E\uDD1C\u3000\u3000\uD83E\uDD1B\u3000 ",
1426
- "\u3000\u3000\uD83E\uDD1C\uD83E\uDD1B\u3000\u3000 ",
1427
- "\u3000\uD83E\uDD1C\u2728\uD83E\uDD1B\u3000\u3000 ",
1428
- "\uD83E\uDD1C\u3000\u2728\u3000\uD83E\uDD1B\u3000 "
1428
+ "🤜    🤛 ",
1429
+ "🤜    🤛 ",
1430
+ "🤜    🤛 ",
1431
+ " 🤜  🤛  ",
1432
+ "  🤜🤛   ",
1433
+ " 🤜✨🤛   ",
1434
+ "🤜 ✨ 🤛  "
1429
1435
  ]
1430
1436
  },
1431
1437
  soccerHeader: {
1432
1438
  interval: 80,
1433
1439
  frames: [
1434
- " \uD83E\uDDD1\u26BD\uFE0F \uD83E\uDDD1 ",
1435
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 ",
1436
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 ",
1437
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 ",
1438
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 ",
1439
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 ",
1440
- "\uD83E\uDDD1 \u26BD\uFE0F\uD83E\uDDD1 ",
1441
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 ",
1442
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 ",
1443
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 ",
1444
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 ",
1445
- "\uD83E\uDDD1 \u26BD\uFE0F \uD83E\uDDD1 "
1440
+ " 🧑⚽️ 🧑 ",
1441
+ "🧑 ⚽️ 🧑 ",
1442
+ "🧑 ⚽️ 🧑 ",
1443
+ "🧑 ⚽️ 🧑 ",
1444
+ "🧑 ⚽️ 🧑 ",
1445
+ "🧑 ⚽️ 🧑 ",
1446
+ "🧑 ⚽️🧑 ",
1447
+ "🧑 ⚽️ 🧑 ",
1448
+ "🧑 ⚽️ 🧑 ",
1449
+ "🧑 ⚽️ 🧑 ",
1450
+ "🧑 ⚽️ 🧑 ",
1451
+ "🧑 ⚽️ 🧑 "
1446
1452
  ]
1447
1453
  },
1448
1454
  mindblown: {
1449
1455
  interval: 160,
1450
1456
  frames: [
1451
- "\uD83D\uDE10 ",
1452
- "\uD83D\uDE10 ",
1453
- "\uD83D\uDE2E ",
1454
- "\uD83D\uDE2E ",
1455
- "\uD83D\uDE26 ",
1456
- "\uD83D\uDE26 ",
1457
- "\uD83D\uDE27 ",
1458
- "\uD83D\uDE27 ",
1459
- "\uD83E\uDD2F ",
1460
- "\uD83D\uDCA5 ",
1461
- "\u2728 ",
1462
- "\u3000 ",
1463
- "\u3000 ",
1464
- "\u3000 "
1457
+ "😐 ",
1458
+ "😐 ",
1459
+ "😮 ",
1460
+ "😮 ",
1461
+ "😦 ",
1462
+ "😦 ",
1463
+ "😧 ",
1464
+ "😧 ",
1465
+ "🤯 ",
1466
+ "💥 ",
1467
+ "✨ ",
1468
+ "  ",
1469
+ "  ",
1470
+ "  "
1465
1471
  ]
1466
1472
  },
1467
1473
  speaker: {
1468
1474
  interval: 160,
1469
1475
  frames: [
1470
- "\uD83D\uDD08 ",
1471
- "\uD83D\uDD09 ",
1472
- "\uD83D\uDD0A ",
1473
- "\uD83D\uDD09 "
1476
+ "🔈 ",
1477
+ "🔉 ",
1478
+ "🔊 ",
1479
+ "🔉 "
1474
1480
  ]
1475
1481
  },
1476
1482
  orangePulse: {
1477
1483
  interval: 100,
1478
1484
  frames: [
1479
- "\uD83D\uDD38 ",
1480
- "\uD83D\uDD36 ",
1481
- "\uD83D\uDFE0 ",
1482
- "\uD83D\uDFE0 ",
1483
- "\uD83D\uDD36 "
1485
+ "🔸 ",
1486
+ "🔶 ",
1487
+ "🟠 ",
1488
+ "🟠 ",
1489
+ "🔶 "
1484
1490
  ]
1485
1491
  },
1486
1492
  bluePulse: {
1487
1493
  interval: 100,
1488
1494
  frames: [
1489
- "\uD83D\uDD39 ",
1490
- "\uD83D\uDD37 ",
1491
- "\uD83D\uDD35 ",
1492
- "\uD83D\uDD35 ",
1493
- "\uD83D\uDD37 "
1495
+ "🔹 ",
1496
+ "🔷 ",
1497
+ "🔵 ",
1498
+ "🔵 ",
1499
+ "🔷 "
1494
1500
  ]
1495
1501
  },
1496
1502
  orangeBluePulse: {
1497
1503
  interval: 100,
1498
1504
  frames: [
1499
- "\uD83D\uDD38 ",
1500
- "\uD83D\uDD36 ",
1501
- "\uD83D\uDFE0 ",
1502
- "\uD83D\uDFE0 ",
1503
- "\uD83D\uDD36 ",
1504
- "\uD83D\uDD39 ",
1505
- "\uD83D\uDD37 ",
1506
- "\uD83D\uDD35 ",
1507
- "\uD83D\uDD35 ",
1508
- "\uD83D\uDD37 "
1505
+ "🔸 ",
1506
+ "🔶 ",
1507
+ "🟠 ",
1508
+ "🟠 ",
1509
+ "🔶 ",
1510
+ "🔹 ",
1511
+ "🔷 ",
1512
+ "🔵 ",
1513
+ "🔵 ",
1514
+ "🔷 "
1509
1515
  ]
1510
1516
  },
1511
1517
  timeTravel: {
1512
1518
  interval: 100,
1513
1519
  frames: [
1514
- "\uD83D\uDD5B ",
1515
- "\uD83D\uDD5A ",
1516
- "\uD83D\uDD59 ",
1517
- "\uD83D\uDD58 ",
1518
- "\uD83D\uDD57 ",
1519
- "\uD83D\uDD56 ",
1520
- "\uD83D\uDD55 ",
1521
- "\uD83D\uDD54 ",
1522
- "\uD83D\uDD53 ",
1523
- "\uD83D\uDD52 ",
1524
- "\uD83D\uDD51 ",
1525
- "\uD83D\uDD50 "
1520
+ "🕛 ",
1521
+ "🕚 ",
1522
+ "🕙 ",
1523
+ "🕘 ",
1524
+ "🕗 ",
1525
+ "🕖 ",
1526
+ "🕕 ",
1527
+ "🕔 ",
1528
+ "🕓 ",
1529
+ "🕒 ",
1530
+ "🕑 ",
1531
+ "🕐 "
1526
1532
  ]
1527
1533
  },
1528
1534
  aesthetic: {
1529
1535
  interval: 80,
1530
1536
  frames: [
1531
- "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1",
1532
- "\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1",
1533
- "\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1",
1534
- "\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1",
1535
- "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1",
1536
- "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1",
1537
- "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0",
1538
- "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"
1537
+ "▰▱▱▱▱▱▱",
1538
+ "▰▰▱▱▱▱▱",
1539
+ "▰▰▰▱▱▱▱",
1540
+ "▰▰▰▰▱▱▱",
1541
+ "▰▰▰▰▰▱▱",
1542
+ "▰▰▰▰▰▰▱",
1543
+ "▰▰▰▰▰▰▰",
1544
+ "▰▱▱▱▱▱▱"
1539
1545
  ]
1540
1546
  },
1541
1547
  dwarfFortress: {
1542
1548
  interval: 80,
1543
1549
  frames: [
1544
- " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1545
- "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1546
- "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1547
- "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1548
- "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1549
- "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1550
- "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1551
- "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1552
- "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1553
- "\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1554
- " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1555
- " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1556
- " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1557
- " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1558
- " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1559
- " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1560
- " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1561
- " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1562
- " \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1563
- " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1564
- " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1565
- " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
1566
- " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
1567
- " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
1568
- " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
1569
- " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
1570
- " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
1571
- " \u263A \u2588\u2588\u2588\xA3\xA3\xA3 ",
1572
- " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
1573
- " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
1574
- " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
1575
- " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
1576
- " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
1577
- " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
1578
- " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
1579
- " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
1580
- " \u263A \u2588\u2588\xA3\xA3\xA3 ",
1581
- " \u263A\u2588\u2588\xA3\xA3\xA3 ",
1582
- " \u263A\u2588\u2588\xA3\xA3\xA3 ",
1583
- " \u263A\u2593\u2588\xA3\xA3\xA3 ",
1584
- " \u263A\u2593\u2588\xA3\xA3\xA3 ",
1585
- " \u263A\u2592\u2588\xA3\xA3\xA3 ",
1586
- " \u263A\u2592\u2588\xA3\xA3\xA3 ",
1587
- " \u263A\u2591\u2588\xA3\xA3\xA3 ",
1588
- " \u263A\u2591\u2588\xA3\xA3\xA3 ",
1589
- " \u263A \u2588\xA3\xA3\xA3 ",
1590
- " \u263A\u2588\xA3\xA3\xA3 ",
1591
- " \u263A\u2588\xA3\xA3\xA3 ",
1592
- " \u263A\u2593\xA3\xA3\xA3 ",
1593
- " \u263A\u2593\xA3\xA3\xA3 ",
1594
- " \u263A\u2592\xA3\xA3\xA3 ",
1595
- " \u263A\u2592\xA3\xA3\xA3 ",
1596
- " \u263A\u2591\xA3\xA3\xA3 ",
1597
- " \u263A\u2591\xA3\xA3\xA3 ",
1598
- " \u263A \xA3\xA3\xA3 ",
1599
- " \u263A\xA3\xA3\xA3 ",
1600
- " \u263A\xA3\xA3\xA3 ",
1601
- " \u263A\u2593\xA3\xA3 ",
1602
- " \u263A\u2593\xA3\xA3 ",
1603
- " \u263A\u2592\xA3\xA3 ",
1604
- " \u263A\u2592\xA3\xA3 ",
1605
- " \u263A\u2591\xA3\xA3 ",
1606
- " \u263A\u2591\xA3\xA3 ",
1607
- " \u263A \xA3\xA3 ",
1608
- " \u263A\xA3\xA3 ",
1609
- " \u263A\xA3\xA3 ",
1610
- " \u263A\u2593\xA3 ",
1611
- " \u263A\u2593\xA3 ",
1612
- " \u263A\u2592\xA3 ",
1613
- " \u263A\u2592\xA3 ",
1614
- " \u263A\u2591\xA3 ",
1615
- " \u263A\u2591\xA3 ",
1616
- " \u263A \xA3 ",
1617
- " \u263A\xA3 ",
1618
- " \u263A\xA3 ",
1619
- " \u263A\u2593 ",
1620
- " \u263A\u2593 ",
1621
- " \u263A\u2592 ",
1622
- " \u263A\u2592 ",
1623
- " \u263A\u2591 ",
1624
- " \u263A\u2591 ",
1625
- " \u263A ",
1626
- " \u263A &",
1627
- " \u263A \u263C&",
1628
- " \u263A \u263C &",
1629
- " \u263A\u263C &",
1630
- " \u263A\u263C & ",
1631
- " \u203C & ",
1632
- " \u263A & ",
1633
- " \u203C & ",
1634
- " \u263A & ",
1635
- " \u203C & ",
1636
- " \u263A & ",
1637
- "\u203C & ",
1550
+ " ██████£££ ",
1551
+ "☺██████£££ ",
1552
+ "☺██████£££ ",
1553
+ "☺▓█████£££ ",
1554
+ "☺▓█████£££ ",
1555
+ "☺▒█████£££ ",
1556
+ "☺▒█████£££ ",
1557
+ "☺░█████£££ ",
1558
+ "☺░█████£££ ",
1559
+ "☺ █████£££ ",
1560
+ " ☺█████£££ ",
1561
+ " ☺█████£££ ",
1562
+ " ☺▓████£££ ",
1563
+ " ☺▓████£££ ",
1564
+ " ☺▒████£££ ",
1565
+ " ☺▒████£££ ",
1566
+ " ☺░████£££ ",
1567
+ " ☺░████£££ ",
1568
+ " ☺ ████£££ ",
1569
+ " ☺████£££ ",
1570
+ " ☺████£££ ",
1571
+ " ☺▓███£££ ",
1572
+ " ☺▓███£££ ",
1573
+ " ☺▒███£££ ",
1574
+ " ☺▒███£££ ",
1575
+ " ☺░███£££ ",
1576
+ " ☺░███£££ ",
1577
+ " ☺ ███£££ ",
1578
+ " ☺███£££ ",
1579
+ " ☺███£££ ",
1580
+ " ☺▓██£££ ",
1581
+ " ☺▓██£££ ",
1582
+ " ☺▒██£££ ",
1583
+ " ☺▒██£££ ",
1584
+ " ☺░██£££ ",
1585
+ " ☺░██£££ ",
1586
+ " ☺ ██£££ ",
1587
+ " ☺██£££ ",
1588
+ " ☺██£££ ",
1589
+ " ☺▓█£££ ",
1590
+ " ☺▓█£££ ",
1591
+ " ☺▒█£££ ",
1592
+ " ☺▒█£££ ",
1593
+ " ☺░█£££ ",
1594
+ " ☺░█£££ ",
1595
+ " ☺ █£££ ",
1596
+ " ☺█£££ ",
1597
+ " ☺█£££ ",
1598
+ " ☺▓£££ ",
1599
+ " ☺▓£££ ",
1600
+ " ☺▒£££ ",
1601
+ " ☺▒£££ ",
1602
+ " ☺░£££ ",
1603
+ " ☺░£££ ",
1604
+ " ☺ £££ ",
1605
+ " ☺£££ ",
1606
+ " ☺£££ ",
1607
+ " ☺▓££ ",
1608
+ " ☺▓££ ",
1609
+ " ☺▒££ ",
1610
+ " ☺▒££ ",
1611
+ " ☺░££ ",
1612
+ " ☺░££ ",
1613
+ " ☺ ££ ",
1614
+ " ☺££ ",
1615
+ " ☺££ ",
1616
+ " ☺▓£ ",
1617
+ " ☺▓£ ",
1618
+ " ☺▒£ ",
1619
+ " ☺▒£ ",
1620
+ " ☺░£ ",
1621
+ " ☺░£ ",
1622
+ " ☺ £ ",
1623
+ " ☺£ ",
1624
+ " ☺£ ",
1625
+ " ☺▓ ",
1626
+ " ☺▓ ",
1627
+ " ☺▒ ",
1628
+ " ☺▒ ",
1629
+ " ☺░ ",
1630
+ " ☺░ ",
1631
+ " ☺ ",
1632
+ " ☺ &",
1633
+ " ☺ ☼&",
1634
+ " ☺ ☼ &",
1635
+ " ☺☼ &",
1636
+ " ☺☼ & ",
1637
+ " ‼ & ",
1638
+ " ☺ & ",
1639
+ " ‼ & ",
1640
+ " ☺ & ",
1641
+ " ‼ & ",
1642
+ " ☺ & ",
1643
+ "‼ & ",
1638
1644
  " & ",
1639
1645
  " & ",
1640
- " & \u2591 ",
1641
- " & \u2592 ",
1642
- " & \u2593 ",
1643
- " & \xA3 ",
1644
- " & \u2591\xA3 ",
1645
- " & \u2592\xA3 ",
1646
- " & \u2593\xA3 ",
1647
- " & \xA3\xA3 ",
1648
- " & \u2591\xA3\xA3 ",
1649
- " & \u2592\xA3\xA3 ",
1650
- "& \u2593\xA3\xA3 ",
1651
- "& \xA3\xA3\xA3 ",
1652
- " \u2591\xA3\xA3\xA3 ",
1653
- " \u2592\xA3\xA3\xA3 ",
1654
- " \u2593\xA3\xA3\xA3 ",
1655
- " \u2588\xA3\xA3\xA3 ",
1656
- " \u2591\u2588\xA3\xA3\xA3 ",
1657
- " \u2592\u2588\xA3\xA3\xA3 ",
1658
- " \u2593\u2588\xA3\xA3\xA3 ",
1659
- " \u2588\u2588\xA3\xA3\xA3 ",
1660
- " \u2591\u2588\u2588\xA3\xA3\xA3 ",
1661
- " \u2592\u2588\u2588\xA3\xA3\xA3 ",
1662
- " \u2593\u2588\u2588\xA3\xA3\xA3 ",
1663
- " \u2588\u2588\u2588\xA3\xA3\xA3 ",
1664
- " \u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
1665
- " \u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
1666
- " \u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
1667
- " \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1668
- " \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1669
- " \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1670
- " \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1671
- " \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1672
- " \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1673
- " \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1674
- " \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1675
- " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
1676
- " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "
1646
+ " & ░ ",
1647
+ " & ▒ ",
1648
+ " & ▓ ",
1649
+ " & £ ",
1650
+ " & ░£ ",
1651
+ " & ▒£ ",
1652
+ " & ▓£ ",
1653
+ " & ££ ",
1654
+ " & ░££ ",
1655
+ " & ▒££ ",
1656
+ "& ▓££ ",
1657
+ "& £££ ",
1658
+ " ░£££ ",
1659
+ " ▒£££ ",
1660
+ " ▓£££ ",
1661
+ " █£££ ",
1662
+ " ░█£££ ",
1663
+ " ▒█£££ ",
1664
+ " ▓█£££ ",
1665
+ " ██£££ ",
1666
+ " ░██£££ ",
1667
+ " ▒██£££ ",
1668
+ " ▓██£££ ",
1669
+ " ███£££ ",
1670
+ " ░███£££ ",
1671
+ " ▒███£££ ",
1672
+ " ▓███£££ ",
1673
+ " ████£££ ",
1674
+ " ░████£££ ",
1675
+ " ▒████£££ ",
1676
+ " ▓████£££ ",
1677
+ " █████£££ ",
1678
+ " ░█████£££ ",
1679
+ " ▒█████£££ ",
1680
+ " ▓█████£££ ",
1681
+ " ██████£££ ",
1682
+ " ██████£££ "
1677
1683
  ]
1678
1684
  }
1679
1685
  };
@@ -3071,11 +3077,11 @@ var import_awaitAsyncGenerator = __toESM2(require_awaitAsyncGenerator(), 1);
3071
3077
  var import_wrapAsyncGenerator = __toESM2(require_wrapAsyncGenerator(), 1);
3072
3078
  var import_objectSpread29 = __toESM2(require_objectSpread2(), 1);
3073
3079
 
3074
- // ../sdk/src/config.ts
3075
- import { mkdir, readFile, unlink, writeFile } from "fs/promises";
3076
- import { readFileSync } from "fs";
3077
- import { homedir } from "os";
3078
- import { dirname, join } from "path";
3080
+ // ../sdk/dist/index.js
3081
+ import { mkdir, readFile, unlink, writeFile } from "node:fs/promises";
3082
+ import { readFileSync } from "node:fs";
3083
+ import { homedir } from "node:os";
3084
+ import { dirname, join } from "node:path";
3079
3085
  var DEFAULT_GITTERM_SERVER_URL = "https://api.gitterm.dev";
3080
3086
  function getConfigPath(configPath) {
3081
3087
  return configPath ?? join(homedir(), ".config", "gitterm", "cli.json");
@@ -3112,7 +3118,6 @@ async function deleteConfig(configPath) {
3112
3118
  } catch {}
3113
3119
  }
3114
3120
 
3115
- // ../sdk/src/errors.ts
3116
3121
  class GittermError extends Error {
3117
3122
  code;
3118
3123
  cause;
@@ -3124,19 +3129,52 @@ class GittermError extends Error {
3124
3129
  }
3125
3130
  }
3126
3131
 
3127
- // ../sdk/src/client.ts
3132
+ class WorkspaceLifecycleError extends GittermError {
3133
+ constructor(code, message, options = {}) {
3134
+ super(code, message, options);
3135
+ this.name = "WorkspaceLifecycleError";
3136
+ }
3137
+ }
3138
+ var LOOPBACK_HOSTS = new Set(["localhost", "127.0.0.1", "[::1]", "::1"]);
3139
+ function normalizeServerUrl(value) {
3140
+ let url;
3141
+ try {
3142
+ url = new URL(value);
3143
+ } catch {
3144
+ throw new Error(`Invalid GitTerm server URL: ${value}`);
3145
+ }
3146
+ if (url.username || url.password) {
3147
+ throw new Error("GitTerm server URL must not contain credentials");
3148
+ }
3149
+ if (url.protocol !== "https:" && !(url.protocol === "http:" && LOOPBACK_HOSTS.has(url.hostname))) {
3150
+ throw new Error("GitTerm server URL must use HTTPS (HTTP is allowed only for loopback)");
3151
+ }
3152
+ url.hash = "";
3153
+ url.search = "";
3154
+ return url.toString().replace(/\/$/, "");
3155
+ }
3156
+ function createNoRedirectFetch(fetchImpl = fetch) {
3157
+ return async (input, init) => {
3158
+ const response = await fetchImpl(input, { ...init, redirect: "manual" });
3159
+ if (response.status >= 300 && response.status < 400) {
3160
+ const location = response.headers.get("location");
3161
+ throw new Error(location ? `GitTerm server redirects are not allowed: ${location}` : "GitTerm server redirects are not allowed");
3162
+ }
3163
+ return response;
3164
+ };
3165
+ }
3128
3166
  function envValue(name) {
3129
3167
  const value = typeof process !== "undefined" ? process.env[name] : undefined;
3130
3168
  return value && value.trim() ? value : undefined;
3131
3169
  }
3132
3170
  function resolveCredentials(options) {
3133
3171
  const config = !options.serverUrl || !options.token ? loadConfigSync(options.configPath) : null;
3134
- const serverUrl = options.serverUrl ?? envValue("GITTERM_SERVER_URL") ?? config?.serverUrl;
3172
+ const serverUrl = options.serverUrl ?? envValue("GITTERM_SERVER_URL") ?? config?.serverUrl ?? DEFAULT_GITTERM_SERVER_URL;
3135
3173
  const token = options.token ?? envValue("GITTERM_API_TOKEN") ?? config?.token;
3136
3174
  if (!serverUrl || !token) {
3137
3175
  throw new GittermError("NOT_LOGGED_IN", "Not logged in. Run: gitterm login");
3138
3176
  }
3139
- return { serverUrl, token };
3177
+ return { serverUrl: normalizeServerUrl(serverUrl), token };
3140
3178
  }
3141
3179
  function toTrpcUrl(serverUrl) {
3142
3180
  return new URL("/trpc", serverUrl).toString();
@@ -3183,7 +3221,7 @@ function normalizeWorkspace(workspace) {
3183
3221
  imageId: workspace.image.imageId
3184
3222
  } : null,
3185
3223
  startedAt: toIso(workspace.startedAt),
3186
- stoppedAt: toIso(workspace.stoppedAt),
3224
+ pausedAt: toIso(workspace.pausedAt),
3187
3225
  terminatedAt: toIso(workspace.terminatedAt),
3188
3226
  lastActiveAt: toIso(workspace.lastActiveAt),
3189
3227
  updatedAt: toIso(workspace.updatedAt)
@@ -3216,6 +3254,8 @@ function mapTrpcCode(code) {
3216
3254
  return "FORBIDDEN";
3217
3255
  case "BAD_REQUEST":
3218
3256
  return "BAD_REQUEST";
3257
+ case "CONFLICT":
3258
+ return "CONFLICT";
3219
3259
  default:
3220
3260
  return "SERVER_ERROR";
3221
3261
  }
@@ -3234,6 +3274,24 @@ async function runWithServer(serverUrl, operation) {
3234
3274
  });
3235
3275
  }
3236
3276
  const code = mapTrpcCode(trpcCode);
3277
+ if (/WORKSPACE_TERMINATED/.test(error.message)) {
3278
+ throw new WorkspaceLifecycleError("WORKSPACE_TERMINATED", error.message, { cause: error });
3279
+ }
3280
+ if (/WORKSPACE_NON_RECOVERABLE/.test(error.message)) {
3281
+ throw new WorkspaceLifecycleError("WORKSPACE_NON_RECOVERABLE", error.message, {
3282
+ cause: error
3283
+ });
3284
+ }
3285
+ if (/WORKSPACE_START_TIMEOUT/.test(error.message)) {
3286
+ throw new WorkspaceLifecycleError("WORKSPACE_START_TIMEOUT", error.message, {
3287
+ cause: error
3288
+ });
3289
+ }
3290
+ if (/WORKSPACE_RESTART_FAILED/.test(error.message)) {
3291
+ throw new WorkspaceLifecycleError("WORKSPACE_RESTART_FAILED", error.message, {
3292
+ cause: error
3293
+ });
3294
+ }
3237
3295
  throw new GittermError(code, code === "UNAUTHORIZED" ? "Not logged in or token expired. Run: gitterm login" : error.message, { cause: error });
3238
3296
  }
3239
3297
  throw new GittermError("NETWORK", error instanceof Error ? error.message : "Network request failed", { cause: error });
@@ -3245,14 +3303,13 @@ function createGittermClient(options = {}) {
3245
3303
  links: [
3246
3304
  httpBatchLink({
3247
3305
  url: toTrpcUrl(credentials.serverUrl),
3248
- fetch: options.fetch,
3306
+ fetch: createNoRedirectFetch(options.fetch),
3249
3307
  headers: () => ({ authorization: `Bearer ${credentials.token}` })
3250
3308
  })
3251
3309
  ]
3252
3310
  });
3253
3311
  const run2 = (operation) => runWithServer(credentials.serverUrl, operation);
3254
- const createWorkspace = (input) => run2(async () => {
3255
- const result = await trpc.workspace.createWorkspace.mutate(input);
3312
+ const normalizeCreateResult = (result) => {
3256
3313
  const workspace = normalizeWorkspace(result.workspace);
3257
3314
  if (!workspace)
3258
3315
  throw new GittermError("SERVER_ERROR", "Workspace creation failed");
@@ -3270,7 +3327,30 @@ function createGittermClient(options = {}) {
3270
3327
  providerKey: null
3271
3328
  };
3272
3329
  return { workspace, runtime };
3330
+ };
3331
+ const createWorkspace = (input) => run2(async () => {
3332
+ const result = await trpc.workspace.createWorkspace.mutate(input);
3333
+ return normalizeCreateResult(result);
3273
3334
  });
3335
+ const waitForWorkspaceSetup = async (workspaceId, waitOptions) => {
3336
+ const timeoutMs = waitOptions?.timeoutMs ?? 10 * 60000;
3337
+ const pollIntervalMs = waitOptions?.pollIntervalMs ?? 2000;
3338
+ const deadline = Date.now() + timeoutMs;
3339
+ while (true) {
3340
+ const result = await trpc.workspace.getSetupStatus.query({ workspaceId });
3341
+ if (result.status === "not_requested" || result.status === "succeeded")
3342
+ return result;
3343
+ if (result.status === "failed") {
3344
+ const log = result.log?.trim();
3345
+ throw new GittermError("BAD_REQUEST", `Workspace setup failed${result.exitCode === null ? "" : ` with exit code ${result.exitCode}`}${log ? `
3346
+ ${log}` : ""}`);
3347
+ }
3348
+ if (Date.now() >= deadline) {
3349
+ throw new GittermError("NETWORK", `Timed out waiting for workspace ${workspaceId} setup`);
3350
+ }
3351
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
3352
+ }
3353
+ };
3274
3354
  return {
3275
3355
  serverUrl: credentials.serverUrl,
3276
3356
  auth: {
@@ -3335,7 +3415,28 @@ function createGittermClient(options = {}) {
3335
3415
  };
3336
3416
  }),
3337
3417
  create: createWorkspace,
3338
- createSandbox: createWorkspace
3418
+ setupStatus: (workspaceId) => run2(async () => trpc.workspace.getSetupStatus.query({ workspaceId })),
3419
+ waitForSetup: (workspaceId, waitOptions) => run2(() => waitForWorkspaceSetup(workspaceId, waitOptions))
3420
+ },
3421
+ runs: {
3422
+ create: (input) => run2(async () => trpc.run.create.mutate(input)),
3423
+ get: (workspaceId, runId) => run2(async () => trpc.run.get.query({ workspaceId, runId })),
3424
+ messages: (workspaceId, runId) => run2(async () => trpc.run.messages.query({ workspaceId, runId })),
3425
+ cancel: (workspaceId, runId) => run2(async () => trpc.run.cancel.mutate({ workspaceId, runId })),
3426
+ wait: (workspaceId, runId, waitOptions) => run2(async () => {
3427
+ const timeoutMs = waitOptions?.timeoutMs ?? 30 * 60000;
3428
+ const pollIntervalMs = waitOptions?.pollIntervalMs ?? 2000;
3429
+ const deadline = Date.now() + timeoutMs;
3430
+ while (true) {
3431
+ const result = await trpc.run.get.query({ workspaceId, runId });
3432
+ if (result.status !== "pending" && result.status !== "running" && result.status !== "retrying")
3433
+ return result;
3434
+ if (Date.now() >= deadline) {
3435
+ throw new GittermError("NETWORK", `Timed out waiting for run ${runId}`);
3436
+ }
3437
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
3438
+ }
3439
+ })
3339
3440
  },
3340
3441
  catalog: {
3341
3442
  agentTypes: (input) => run2(async () => {
@@ -3345,17 +3446,18 @@ function createGittermClient(options = {}) {
3345
3446
  cloudProviders: (input) => run2(async () => {
3346
3447
  const result = await trpc.workspace.listCloudProviders.query(input);
3347
3448
  return result.cloudProviders;
3348
- })
3449
+ }),
3450
+ workspaceOptions: () => run2(async () => trpc.workspace.getWorkspaceCatalog.query())
3349
3451
  }
3350
3452
  };
3351
3453
  }
3352
- // ../sdk/src/device-login.ts
3353
3454
  function sleep2(ms) {
3354
3455
  return new Promise((resolve) => setTimeout(resolve, ms));
3355
3456
  }
3356
3457
  async function loginWithDeviceCode(serverUrl, options = {}) {
3357
- const fetchImpl = options.fetch ?? fetch;
3358
- const codeRes = await fetchImpl(new URL("/api/device/code", serverUrl), {
3458
+ const normalizedServerUrl = normalizeServerUrl(serverUrl);
3459
+ const fetchImpl = createNoRedirectFetch(options.fetch);
3460
+ const codeRes = await fetchImpl(new URL("/api/device/code", normalizedServerUrl), {
3359
3461
  method: "POST",
3360
3462
  headers: { "content-type": "application/json" },
3361
3463
  body: JSON.stringify({ clientName: options.clientName ?? "gitterm" })
@@ -3371,7 +3473,7 @@ async function loginWithDeviceCode(serverUrl, options = {}) {
3371
3473
  });
3372
3474
  const deadline = Date.now() + codeJson.expiresInSeconds * 1000;
3373
3475
  while (Date.now() < deadline) {
3374
- const tokenRes = await fetchImpl(new URL("/api/device/token", serverUrl), {
3476
+ const tokenRes = await fetchImpl(new URL("/api/device/token", normalizedServerUrl), {
3375
3477
  method: "POST",
3376
3478
  headers: { "content-type": "application/json" },
3377
3479
  body: JSON.stringify({ deviceCode: codeJson.deviceCode })
@@ -3388,6 +3490,66 @@ async function loginWithDeviceCode(serverUrl, options = {}) {
3388
3490
  }
3389
3491
  throw new Error("Device code expired; try again.");
3390
3492
  }
3493
+ function getWorkspaceEnvironment(environment) {
3494
+ environment ??= typeof process === "undefined" ? {} : process.env;
3495
+ const serverUrl = environment.WORKSPACE_API_URL;
3496
+ const token = environment.WORKSPACE_AUTH_TOKEN;
3497
+ const workspaceId = environment.WORKSPACE_ID;
3498
+ const workspaceEnvironmentPresent = Boolean(serverUrl || token || workspaceId);
3499
+ if (!workspaceEnvironmentPresent)
3500
+ return null;
3501
+ if (!serverUrl || !token || !workspaceId) {
3502
+ throw new GittermError("UNAUTHORIZED", "Incomplete GitTerm workspace environment: WORKSPACE_API_URL, WORKSPACE_AUTH_TOKEN, and WORKSPACE_ID are required");
3503
+ }
3504
+ return { serverUrl: normalizeServerUrl(serverUrl), token, workspaceId };
3505
+ }
3506
+ function errorCode(code) {
3507
+ if (code === "UNAUTHORIZED" || code === "NOT_FOUND" || code === "FORBIDDEN")
3508
+ return code;
3509
+ if (code === "BAD_REQUEST")
3510
+ return code;
3511
+ return "SERVER_ERROR";
3512
+ }
3513
+ function createGittermWorkspaceClient(options = {}) {
3514
+ const detected = options.serverUrl && options.token && options.workspaceId ? null : getWorkspaceEnvironment();
3515
+ const rawServerUrl = options.serverUrl ?? detected?.serverUrl;
3516
+ const token = options.token ?? detected?.token;
3517
+ const workspaceId = options.workspaceId ?? detected?.workspaceId;
3518
+ if (!rawServerUrl || !token || !workspaceId) {
3519
+ throw new GittermError("UNAUTHORIZED", "This command must run inside a GitTerm workspace");
3520
+ }
3521
+ const serverUrl = normalizeServerUrl(rawServerUrl);
3522
+ const trpc = createTRPCClient({
3523
+ links: [
3524
+ httpBatchLink({
3525
+ url: new URL("/trpc", serverUrl).toString(),
3526
+ fetch: createNoRedirectFetch(options.fetch),
3527
+ headers: () => ({ authorization: `Bearer ${token}` })
3528
+ })
3529
+ ]
3530
+ });
3531
+ async function run2(operation) {
3532
+ try {
3533
+ return await operation();
3534
+ } catch (error) {
3535
+ if (error instanceof TRPCClientError) {
3536
+ throw new GittermError(errorCode(error.data?.code), error.message, { cause: error });
3537
+ }
3538
+ throw new GittermError("NETWORK", error instanceof Error ? error.message : "Network request failed", { cause: error });
3539
+ }
3540
+ }
3541
+ return {
3542
+ workspaceId,
3543
+ serverUrl,
3544
+ self: { get: () => run2(() => trpc.workspaceOps.getSelf.query()) },
3545
+ ports: {
3546
+ list: () => run2(() => trpc.workspaceOps.listPorts.query()),
3547
+ open: (port, input) => run2(() => trpc.workspaceOps.openPort.mutate({ port, ...input })),
3548
+ close: (port) => run2(() => trpc.workspaceOps.closePort.mutate({ port }))
3549
+ }
3550
+ };
3551
+ }
3552
+
3391
3553
  // ../../node_modules/.bun/yargs@18.0.0/node_modules/yargs/lib/platform-shims/esm.mjs
3392
3554
  import { notStrictEqual, strictEqual } from "assert";
3393
3555
 
@@ -3693,12 +3855,8 @@ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
3693
3855
  return 1;
3694
3856
  }
3695
3857
 
3696
- // ../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs
3697
- var emoji_regex_default = () => {
3698
- return /[#*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;
3699
- };
3700
-
3701
3858
  // ../../node_modules/.bun/string-width@7.2.0/node_modules/string-width/index.js
3859
+ var import_emoji_regex = __toESM(require_emoji_regex(), 1);
3702
3860
  var segmenter = new Intl.Segmenter;
3703
3861
  var defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
3704
3862
  function stringWidth(string, options = {}) {
@@ -3737,7 +3895,7 @@ function stringWidth(string, options = {}) {
3737
3895
  if (defaultIgnorableCodePointRegex.test(character)) {
3738
3896
  continue;
3739
3897
  }
3740
- if (emoji_regex_default().test(character)) {
3898
+ if (import_emoji_regex.default().test(character)) {
3741
3899
  width += 2;
3742
3900
  continue;
3743
3901
  }
@@ -3926,7 +4084,7 @@ var ansi_styles_default = ansiStyles;
3926
4084
  // ../../node_modules/.bun/wrap-ansi@9.0.2/node_modules/wrap-ansi/index.js
3927
4085
  var ESCAPES = new Set([
3928
4086
  "\x1B",
3929
- "\x9B"
4087
+ "›"
3930
4088
  ]);
3931
4089
  var END_CODE = 39;
3932
4090
  var ANSI_ESCAPE_BELL = "\x07";
@@ -5056,7 +5214,7 @@ function stripQuotes(val) {
5056
5214
 
5057
5215
  // ../../node_modules/.bun/yargs-parser@22.0.0/node_modules/yargs-parser/build/lib/index.js
5058
5216
  import { readFileSync as readFileSync2 } from "fs";
5059
- import { createRequire } from "module";
5217
+ import { createRequire } from "node:module";
5060
5218
  var _a;
5061
5219
  var _b;
5062
5220
  var _c;
@@ -5309,8 +5467,8 @@ var y18n_default = y18n2;
5309
5467
 
5310
5468
  // ../../node_modules/.bun/yargs@18.0.0/node_modules/yargs/lib/platform-shims/esm.mjs
5311
5469
  var import_get_caller_file = __toESM(require_get_caller_file(), 1);
5312
- import { createRequire as createRequire2 } from "module";
5313
- import { readFileSync as readFileSync4, readdirSync as readdirSync2 } from "fs";
5470
+ import { createRequire as createRequire2 } from "node:module";
5471
+ import { readFileSync as readFileSync4, readdirSync as readdirSync2 } from "node:fs";
5314
5472
  var __dirname2 = fileURLToPath(import.meta.url);
5315
5473
  var mainFilename = __dirname2.substring(0, __dirname2.lastIndexOf("node_modules"));
5316
5474
  var require3 = createRequire2(import.meta.url);
@@ -8685,7 +8843,7 @@ var yargs_default = Yargs;
8685
8843
  // package.json
8686
8844
  var package_default = {
8687
8845
  name: "@gitterm/cli",
8688
- version: "0.0.1",
8846
+ version: "0.0.4",
8689
8847
  description: "Complete suit of gitterm tools in one CLI",
8690
8848
  keywords: [
8691
8849
  "gitterm",
@@ -8708,7 +8866,7 @@ var package_default = {
8708
8866
  },
8709
8867
  scripts: {
8710
8868
  "dev:local": "bun --hot src/index.ts",
8711
- build: "bun build src/index.ts --outdir dist --target bun",
8869
+ build: "bun build src/index.ts --outdir dist --target node",
8712
8870
  prepublishOnly: "bun run build",
8713
8871
  "check-types": "tsc --noEmit"
8714
8872
  },
@@ -8907,9 +9065,9 @@ var ansiStyles2 = assembleStyles2();
8907
9065
  var ansi_styles_default2 = ansiStyles2;
8908
9066
 
8909
9067
  // ../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js
8910
- import process2 from "process";
8911
- import os from "os";
8912
- import tty from "tty";
9068
+ import process2 from "node:process";
9069
+ import os from "node:os";
9070
+ import tty from "node:tty";
8913
9071
  function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process2.argv) {
8914
9072
  const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
8915
9073
  const position = argv.indexOf(prefix + flag);
@@ -9219,16 +9377,16 @@ var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
9219
9377
  var source_default = chalk;
9220
9378
 
9221
9379
  // src/ui.ts
9222
- import { createInterface } from "readline/promises";
9380
+ import { createInterface } from "node:readline/promises";
9223
9381
 
9224
9382
  // ../../node_modules/.bun/ora@8.2.0/node_modules/ora/index.js
9225
- import process9 from "process";
9383
+ import process9 from "node:process";
9226
9384
 
9227
9385
  // ../../node_modules/.bun/cli-cursor@5.0.0/node_modules/cli-cursor/index.js
9228
- import process5 from "process";
9386
+ import process5 from "node:process";
9229
9387
 
9230
9388
  // ../../node_modules/.bun/restore-cursor@5.1.0/node_modules/restore-cursor/index.js
9231
- import process4 from "process";
9389
+ import process4 from "node:process";
9232
9390
 
9233
9391
  // ../../node_modules/.bun/mimic-function@5.0.1/node_modules/mimic-function/index.js
9234
9392
  var copyProperty = (to, from, property, ignoreNonConfigurable) => {
@@ -9558,7 +9716,7 @@ var cli_cursor_default = cliCursor;
9558
9716
  var import_cli_spinners = __toESM(require_cli_spinners(), 1);
9559
9717
 
9560
9718
  // ../../node_modules/.bun/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js
9561
- import process6 from "process";
9719
+ import process6 from "node:process";
9562
9720
  function isUnicodeSupported() {
9563
9721
  if (process6.platform !== "win32") {
9564
9722
  return process6.env.TERM !== "linux";
@@ -9568,16 +9726,16 @@ function isUnicodeSupported() {
9568
9726
 
9569
9727
  // ../../node_modules/.bun/log-symbols@6.0.0/node_modules/log-symbols/index.js
9570
9728
  var main = {
9571
- info: source_default.blue("\u2139"),
9572
- success: source_default.green("\u2714"),
9573
- warning: source_default.yellow("\u26A0"),
9574
- error: source_default.red("\u2716")
9729
+ info: source_default.blue("ℹ"),
9730
+ success: source_default.green("✔"),
9731
+ warning: source_default.yellow("⚠"),
9732
+ error: source_default.red("✖")
9575
9733
  };
9576
9734
  var fallback = {
9577
9735
  info: source_default.blue("i"),
9578
- success: source_default.green("\u221A"),
9579
- warning: source_default.yellow("\u203C"),
9580
- error: source_default.red("\xD7")
9736
+ success: source_default.green("√"),
9737
+ warning: source_default.yellow("‼"),
9738
+ error: source_default.red("×")
9581
9739
  };
9582
9740
  var logSymbols = isUnicodeSupported() ? main : fallback;
9583
9741
  var log_symbols_default = logSymbols;
@@ -9588,7 +9746,7 @@ function isInteractive({ stream = process.stdout } = {}) {
9588
9746
  }
9589
9747
 
9590
9748
  // ../../node_modules/.bun/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js
9591
- import process7 from "process";
9749
+ import process7 from "node:process";
9592
9750
  function isUnicodeSupported2() {
9593
9751
  const { env: env3 } = process7;
9594
9752
  const { TERM, TERM_PROGRAM } = env3;
@@ -9599,7 +9757,7 @@ function isUnicodeSupported2() {
9599
9757
  }
9600
9758
 
9601
9759
  // ../../node_modules/.bun/stdin-discarder@0.2.2/node_modules/stdin-discarder/index.js
9602
- import process8 from "process";
9760
+ import process8 from "node:process";
9603
9761
  var ASCII_ETX_CODE = 3;
9604
9762
 
9605
9763
  class StdinDiscarder {
@@ -9946,7 +10104,7 @@ function startSpinner(text, json) {
9946
10104
  return ora({ text, stream: process.stderr }).start();
9947
10105
  }
9948
10106
  function success(message) {
9949
- console.log(`${source_default.green("\u2714")} ${message}`);
10107
+ console.log(`${source_default.green("✔")} ${message}`);
9950
10108
  }
9951
10109
  function printJson(value) {
9952
10110
  console.log(JSON.stringify(value, null, 2));
@@ -10001,7 +10159,7 @@ function printWorkspaceDetails(workspace) {
10001
10159
  detailLine("Hosting", workspace.hostingType);
10002
10160
  detailLine("Persistent", workspace.persistent ? "yes" : "no");
10003
10161
  detailLine("Started", workspace.startedAt);
10004
- detailLine("Stopped", workspace.stoppedAt);
10162
+ detailLine("Paused", workspace.pausedAt);
10005
10163
  }
10006
10164
  async function confirm(question) {
10007
10165
  if (!process.stdin.isTTY)
@@ -10020,7 +10178,7 @@ function handleError(err, json) {
10020
10178
  if (json) {
10021
10179
  console.error(JSON.stringify({ error: { code, message } }, null, 2));
10022
10180
  } else {
10023
- console.error(`${source_default.red("\u2716")} ${message}`);
10181
+ console.error(`${source_default.red("✖")} ${message}`);
10024
10182
  }
10025
10183
  process.exit(1);
10026
10184
  }
@@ -10185,6 +10343,67 @@ async function runWorkspaceTerminate(args) {
10185
10343
  }
10186
10344
  }
10187
10345
 
10346
+ // src/cmd/current-workspace.ts
10347
+ async function runCurrentWorkspaceInfo(args) {
10348
+ const spin = startSpinner("Fetching workspace...", args.json);
10349
+ try {
10350
+ const result = await createGittermWorkspaceClient().self.get();
10351
+ spin?.stop();
10352
+ if (args.json)
10353
+ return printJson(result);
10354
+ console.log(`${result.name ?? "GitTerm workspace"} (${result.id})`);
10355
+ console.log(`Status: ${result.status}`);
10356
+ if (result.repositoryUrl)
10357
+ console.log(`Repository: ${result.repositoryUrl}`);
10358
+ if (result.url)
10359
+ console.log(`URL: ${result.url}`);
10360
+ } catch (error) {
10361
+ spin?.stop();
10362
+ handleError(error, args.json);
10363
+ }
10364
+ }
10365
+ async function runPortList(args) {
10366
+ try {
10367
+ const ports = await createGittermWorkspaceClient().ports.list();
10368
+ if (args.json)
10369
+ return printJson(ports);
10370
+ if (ports.length === 0) {
10371
+ console.log("No ports are open.");
10372
+ return;
10373
+ }
10374
+ for (const port of ports)
10375
+ console.log(`${port.port} ${port.name ?? ""} ${port.url ?? ""}`);
10376
+ } catch (error) {
10377
+ handleError(error, args.json);
10378
+ }
10379
+ }
10380
+ async function runPortOpen(args) {
10381
+ const spin = startSpinner(`Opening port ${args.port}...`, args.json);
10382
+ try {
10383
+ const port = await createGittermWorkspaceClient().ports.open(args.port, { name: args.name });
10384
+ spin?.stop();
10385
+ if (args.json)
10386
+ return printJson(port);
10387
+ success(`Port ${port.port} opened${port.url ? `: ${port.url}` : "."}`);
10388
+ } catch (error) {
10389
+ spin?.stop();
10390
+ handleError(error, args.json);
10391
+ }
10392
+ }
10393
+ async function runPortClose(args) {
10394
+ const spin = startSpinner(`Closing port ${args.port}...`, args.json);
10395
+ try {
10396
+ const result = await createGittermWorkspaceClient().ports.close(args.port);
10397
+ spin?.stop();
10398
+ if (args.json)
10399
+ return printJson(result);
10400
+ success(`Port ${result.port} closed.`);
10401
+ } catch (error) {
10402
+ spin?.stop();
10403
+ handleError(error, args.json);
10404
+ }
10405
+ }
10406
+
10188
10407
  // src/index.ts
10189
10408
  var jsonOption = {
10190
10409
  json: {
@@ -10193,47 +10412,59 @@ var jsonOption = {
10193
10412
  default: false
10194
10413
  }
10195
10414
  };
10196
- yargs_default(hideBin(process.argv)).scriptName("gitterm").usage("$0 <command> [options]").command("login", "Sign in via device-code flow", (builder) => builder.option("server", {
10197
- alias: "s",
10198
- type: "string",
10199
- description: "Server base URL",
10200
- default: DEFAULT_GITTERM_SERVER_URL
10201
- }), async (argv) => {
10202
- await runLogin({ serverUrl: argv.server }).catch((err) => handleError(err));
10203
- }).command("logout", "Clear saved credentials", () => {}, async () => {
10204
- await runLogout().catch((err) => handleError(err));
10205
- }).command("auth", "Manage authentication", (auth) => auth.command("status", "Show the logged-in account", (builder) => builder.options(jsonOption), async (argv) => {
10206
- await runAuthStatus({ json: argv.json });
10207
- }).demandCommand(1, "Please specify an auth command").strict()).command(["workspace", "ws"], "Manage workspaces", (workspace) => workspace.command("list", "List your workspaces", (builder) => builder.options(jsonOption).options({
10208
- status: {
10415
+ var cli = yargs_default(hideBin(process.argv)).scriptName("gitterm").usage("$0 <command> [options]");
10416
+ var workspaceEnvironment = null;
10417
+ try {
10418
+ workspaceEnvironment = getWorkspaceEnvironment();
10419
+ } catch (error) {
10420
+ handleError(error);
10421
+ }
10422
+ if (workspaceEnvironment) {
10423
+ cli.command("workspace", "Inspect this workspace", (workspace) => workspace.command("info", "Show this workspace", (builder) => builder.options(jsonOption), (argv) => runCurrentWorkspaceInfo({ json: argv.json })).demandCommand(1, "Please specify a workspace command").strict()).command(["ports", "port"], "Manage ports for this workspace", (ports) => ports.command("list", "List open ports", (builder) => builder.options(jsonOption), (argv) => runPortList({ json: argv.json })).command("open <port>", "Open a port", (builder) => builder.positional("port", { type: "number", demandOption: true }).option("name", { type: "string", description: "Display name" }).options(jsonOption), (argv) => runPortOpen({ port: argv.port, name: argv.name, json: argv.json })).command("close <port>", "Close a port", (builder) => builder.positional("port", { type: "number", demandOption: true }).options(jsonOption), (argv) => runPortClose({ port: argv.port, json: argv.json })).demandCommand(1, "Please specify a port command").strict());
10424
+ } else {
10425
+ cli.command("login", "Sign in via device-code flow", (builder) => builder.option("server", {
10426
+ alias: "s",
10209
10427
  type: "string",
10210
- choices: ["active", "all", "terminated"],
10211
- description: "Filter by workspace status",
10212
- default: "active"
10213
- },
10214
- limit: {
10215
- type: "number",
10216
- description: "Maximum number of workspaces to return"
10217
- }
10218
- }), async (argv) => {
10219
- await runWorkspaceList({ json: argv.json, status: argv.status, limit: argv.limit });
10220
- }).command("get <workspaceId>", "Show details for a workspace", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption), async (argv) => {
10221
- await runWorkspaceGet({ json: argv.json, workspaceId: argv.workspaceId });
10222
- }).command("pause <workspaceId>", "Pause a running workspace", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption), async (argv) => {
10223
- await runWorkspacePause({ json: argv.json, workspaceId: argv.workspaceId });
10224
- }).command("stop <workspaceId>", "Alias for pause", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption), async (argv) => {
10225
- await runWorkspacePause({ json: argv.json, workspaceId: argv.workspaceId });
10226
- }).command("restart <workspaceId>", "Restart a paused workspace", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption), async (argv) => {
10227
- await runWorkspaceRestart({ json: argv.json, workspaceId: argv.workspaceId });
10228
- }).command("terminate <workspaceId>", "Terminate a workspace permanently", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption).option("yes", {
10229
- alias: "y",
10230
- type: "boolean",
10231
- description: "Skip the confirmation prompt",
10232
- default: false
10233
- }), async (argv) => {
10234
- await runWorkspaceTerminate({
10235
- json: argv.json,
10236
- workspaceId: argv.workspaceId,
10237
- yes: argv.yes
10238
- });
10239
- }).demandCommand(1, "Please specify a workspace command").strict()).demandCommand(1, "Please specify a command").help().alias("help", "h").version(package_default.version).alias("version", "v").wrap(Math.min(100, process.stdout.columns ?? 100)).strict().parse();
10428
+ description: "Server base URL",
10429
+ default: DEFAULT_GITTERM_SERVER_URL
10430
+ }), async (argv) => {
10431
+ await runLogin({ serverUrl: argv.server }).catch((err) => handleError(err));
10432
+ }).command("logout", "Clear saved credentials", () => {}, async () => {
10433
+ await runLogout().catch((err) => handleError(err));
10434
+ }).command("auth", "Manage authentication", (auth) => auth.command("status", "Show the logged-in account", (builder) => builder.options(jsonOption), async (argv) => {
10435
+ await runAuthStatus({ json: argv.json });
10436
+ }).demandCommand(1, "Please specify an auth command").strict()).command(["workspace", "ws"], "Manage workspaces", (workspace) => workspace.command("list", "List your workspaces", (builder) => builder.options(jsonOption).options({
10437
+ status: {
10438
+ type: "string",
10439
+ choices: ["active", "all", "terminated"],
10440
+ description: "Filter by workspace status",
10441
+ default: "active"
10442
+ },
10443
+ limit: {
10444
+ type: "number",
10445
+ description: "Maximum number of workspaces to return"
10446
+ }
10447
+ }), async (argv) => {
10448
+ await runWorkspaceList({ json: argv.json, status: argv.status, limit: argv.limit });
10449
+ }).command("get <workspaceId>", "Show details for a workspace", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption), async (argv) => {
10450
+ await runWorkspaceGet({ json: argv.json, workspaceId: argv.workspaceId });
10451
+ }).command("pause <workspaceId>", "Pause a running workspace", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption), async (argv) => {
10452
+ await runWorkspacePause({ json: argv.json, workspaceId: argv.workspaceId });
10453
+ }).command("stop <workspaceId>", "Alias for pause", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption), async (argv) => {
10454
+ await runWorkspacePause({ json: argv.json, workspaceId: argv.workspaceId });
10455
+ }).command("restart <workspaceId>", "Restart a paused workspace", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption), async (argv) => {
10456
+ await runWorkspaceRestart({ json: argv.json, workspaceId: argv.workspaceId });
10457
+ }).command("terminate <workspaceId>", "Terminate a workspace permanently", (builder) => builder.positional("workspaceId", { type: "string", demandOption: true }).options(jsonOption).option("yes", {
10458
+ alias: "y",
10459
+ type: "boolean",
10460
+ description: "Skip the confirmation prompt",
10461
+ default: false
10462
+ }), async (argv) => {
10463
+ await runWorkspaceTerminate({
10464
+ json: argv.json,
10465
+ workspaceId: argv.workspaceId,
10466
+ yes: argv.yes
10467
+ });
10468
+ }).demandCommand(1, "Please specify a workspace command").strict());
10469
+ }
10470
+ cli.demandCommand(1, "Please specify a command").help().alias("help", "h").version(package_default.version).alias("version", "v").wrap(Math.min(100, process.stdout.columns ?? 100)).strict().parse();