abtars 0.1.0-alpha.1

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 (312) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +84 -0
  3. package/bundle/_registry.generated-M4WY2MMI.js +35 -0
  4. package/bundle/_registry.generated-M4WY2MMI.js.map +7 -0
  5. package/bundle/abtars-browser.js +162 -0
  6. package/bundle/abtars-browser.js.map +7 -0
  7. package/bundle/abtars-cli.js +1438 -0
  8. package/bundle/abtars-cli.js.map +7 -0
  9. package/bundle/abtars-restart.js +12 -0
  10. package/bundle/abtars-restart.js.map +7 -0
  11. package/bundle/abtars-rss.js +165 -0
  12. package/bundle/abtars-rss.js.map +7 -0
  13. package/bundle/abtars-task.js +258 -0
  14. package/bundle/abtars-task.js.map +7 -0
  15. package/bundle/abtars.js +4072 -0
  16. package/bundle/abtars.js.map +7 -0
  17. package/bundle/agent-api-rate-limit-OQNFMXTZ.js +38 -0
  18. package/bundle/agent-api-rate-limit-OQNFMXTZ.js.map +7 -0
  19. package/bundle/agent-registry-LT4JNQH6.js +18 -0
  20. package/bundle/agent-registry-LT4JNQH6.js.map +7 -0
  21. package/bundle/agents/default.md +29 -0
  22. package/bundle/anthropic-adapter-2APTH3LA.js +40 -0
  23. package/bundle/anthropic-adapter-2APTH3LA.js.map +7 -0
  24. package/bundle/bridge-lock-transport-4AC2G5G6.js +39 -0
  25. package/bundle/bridge-lock-transport-4AC2G5G6.js.map +7 -0
  26. package/bundle/browse-delivery-JXBY36GK.js +17 -0
  27. package/bundle/browse-delivery-JXBY36GK.js.map +7 -0
  28. package/bundle/browser-ELNDVPLC.js +18 -0
  29. package/bundle/browser-ELNDVPLC.js.map +7 -0
  30. package/bundle/capability-CIL3G4FI.js +17 -0
  31. package/bundle/capability-CIL3G4FI.js.map +7 -0
  32. package/bundle/chunk-265TPOPC.js +289 -0
  33. package/bundle/chunk-265TPOPC.js.map +7 -0
  34. package/bundle/chunk-2UENBO6M.js +223 -0
  35. package/bundle/chunk-2UENBO6M.js.map +7 -0
  36. package/bundle/chunk-2UPU3OW6.js +67 -0
  37. package/bundle/chunk-2UPU3OW6.js.map +7 -0
  38. package/bundle/chunk-2XU2X4OI.js +125 -0
  39. package/bundle/chunk-2XU2X4OI.js.map +7 -0
  40. package/bundle/chunk-3B7BBE4F.js +758 -0
  41. package/bundle/chunk-3B7BBE4F.js.map +7 -0
  42. package/bundle/chunk-3E545J66.js +69 -0
  43. package/bundle/chunk-3E545J66.js.map +7 -0
  44. package/bundle/chunk-5R2ANXQ7.js +510 -0
  45. package/bundle/chunk-5R2ANXQ7.js.map +7 -0
  46. package/bundle/chunk-6CPN4IGS.js +507 -0
  47. package/bundle/chunk-6CPN4IGS.js.map +7 -0
  48. package/bundle/chunk-6NR3OHEW.js +88 -0
  49. package/bundle/chunk-6NR3OHEW.js.map +7 -0
  50. package/bundle/chunk-6SETMHNN.js +206 -0
  51. package/bundle/chunk-6SETMHNN.js.map +7 -0
  52. package/bundle/chunk-6UCRKRWR.js +644 -0
  53. package/bundle/chunk-6UCRKRWR.js.map +7 -0
  54. package/bundle/chunk-AR6GO6YC.js +83 -0
  55. package/bundle/chunk-AR6GO6YC.js.map +7 -0
  56. package/bundle/chunk-AZJIODTQ.js +54 -0
  57. package/bundle/chunk-AZJIODTQ.js.map +7 -0
  58. package/bundle/chunk-BHMZ4RCC.js +3706 -0
  59. package/bundle/chunk-BHMZ4RCC.js.map +7 -0
  60. package/bundle/chunk-BQ2L4GMG.js +9175 -0
  61. package/bundle/chunk-BQ2L4GMG.js.map +7 -0
  62. package/bundle/chunk-BSSBCSCL.js +159 -0
  63. package/bundle/chunk-BSSBCSCL.js.map +7 -0
  64. package/bundle/chunk-BUUVFUPO.js +157 -0
  65. package/bundle/chunk-BUUVFUPO.js.map +7 -0
  66. package/bundle/chunk-CEVRHKJY.js +131 -0
  67. package/bundle/chunk-CEVRHKJY.js.map +7 -0
  68. package/bundle/chunk-CWOHNFUV.js +39 -0
  69. package/bundle/chunk-CWOHNFUV.js.map +7 -0
  70. package/bundle/chunk-D2DCBO6M.js +228 -0
  71. package/bundle/chunk-D2DCBO6M.js.map +7 -0
  72. package/bundle/chunk-FMWKEPM7.js +31 -0
  73. package/bundle/chunk-FMWKEPM7.js.map +7 -0
  74. package/bundle/chunk-GRNENTPA.js +145 -0
  75. package/bundle/chunk-GRNENTPA.js.map +7 -0
  76. package/bundle/chunk-GST5T3WZ.js +93 -0
  77. package/bundle/chunk-GST5T3WZ.js.map +7 -0
  78. package/bundle/chunk-GUQVJC3U.js +299 -0
  79. package/bundle/chunk-GUQVJC3U.js.map +7 -0
  80. package/bundle/chunk-HX7Y7EYP.js +3659 -0
  81. package/bundle/chunk-HX7Y7EYP.js.map +7 -0
  82. package/bundle/chunk-JCJS4ZIB.js +296 -0
  83. package/bundle/chunk-JCJS4ZIB.js.map +7 -0
  84. package/bundle/chunk-JW6RU47G.js +184 -0
  85. package/bundle/chunk-JW6RU47G.js.map +7 -0
  86. package/bundle/chunk-LSPKJQCI.js +24 -0
  87. package/bundle/chunk-LSPKJQCI.js.map +7 -0
  88. package/bundle/chunk-M6VBAPNT.js +16 -0
  89. package/bundle/chunk-M6VBAPNT.js.map +7 -0
  90. package/bundle/chunk-MPX525QO.js +129 -0
  91. package/bundle/chunk-MPX525QO.js.map +7 -0
  92. package/bundle/chunk-MW6WDLU7.js +130 -0
  93. package/bundle/chunk-MW6WDLU7.js.map +7 -0
  94. package/bundle/chunk-NT3OBORC.js +215 -0
  95. package/bundle/chunk-NT3OBORC.js.map +7 -0
  96. package/bundle/chunk-NWDBD4PA.js +50 -0
  97. package/bundle/chunk-NWDBD4PA.js.map +7 -0
  98. package/bundle/chunk-OP7BTAWY.js +29 -0
  99. package/bundle/chunk-OP7BTAWY.js.map +7 -0
  100. package/bundle/chunk-PLCY3GFH.js +77 -0
  101. package/bundle/chunk-PLCY3GFH.js.map +7 -0
  102. package/bundle/chunk-PNEDC45Y.js +97 -0
  103. package/bundle/chunk-PNEDC45Y.js.map +7 -0
  104. package/bundle/chunk-QBGBT5QS.js +81 -0
  105. package/bundle/chunk-QBGBT5QS.js.map +7 -0
  106. package/bundle/chunk-RVE2N7FA.js +70 -0
  107. package/bundle/chunk-RVE2N7FA.js.map +7 -0
  108. package/bundle/chunk-TZHIDLDS.js +71910 -0
  109. package/bundle/chunk-TZHIDLDS.js.map +7 -0
  110. package/bundle/chunk-UCQ2WC3B.js +126 -0
  111. package/bundle/chunk-UCQ2WC3B.js.map +7 -0
  112. package/bundle/chunk-UHRP745J.js +214 -0
  113. package/bundle/chunk-UHRP745J.js.map +7 -0
  114. package/bundle/chunk-V76TVMCM.js +58 -0
  115. package/bundle/chunk-V76TVMCM.js.map +7 -0
  116. package/bundle/chunk-VVEDVGCR.js +981 -0
  117. package/bundle/chunk-VVEDVGCR.js.map +7 -0
  118. package/bundle/chunk-W6FAL35D.js +102 -0
  119. package/bundle/chunk-W6FAL35D.js.map +7 -0
  120. package/bundle/chunk-X6TERNVJ.js +15902 -0
  121. package/bundle/chunk-X6TERNVJ.js.map +7 -0
  122. package/bundle/chunk-X76UX47U.js +47 -0
  123. package/bundle/chunk-X76UX47U.js.map +7 -0
  124. package/bundle/chunk-XREWVCUO.js +518 -0
  125. package/bundle/chunk-XREWVCUO.js.map +7 -0
  126. package/bundle/chunk-Y6XAEX2Q.js +408 -0
  127. package/bundle/chunk-Y6XAEX2Q.js.map +7 -0
  128. package/bundle/chunk-YOCTDKKL.js +28 -0
  129. package/bundle/chunk-YOCTDKKL.js.map +7 -0
  130. package/bundle/chunk-ZXPXCDA6.js +160 -0
  131. package/bundle/chunk-ZXPXCDA6.js.map +7 -0
  132. package/bundle/commands-BHVUOU3V.js +31 -0
  133. package/bundle/commands-BHVUOU3V.js.map +7 -0
  134. package/bundle/completion-buffer-P253ONKF.js +13 -0
  135. package/bundle/completion-buffer-P253ONKF.js.map +7 -0
  136. package/bundle/config-RGSDAPZN.js +19 -0
  137. package/bundle/config-RGSDAPZN.js.map +7 -0
  138. package/bundle/config-show-ERTATR6E.js +40 -0
  139. package/bundle/config-show-ERTATR6E.js.map +7 -0
  140. package/bundle/context-HCEGZNDC.js +72 -0
  141. package/bundle/context-HCEGZNDC.js.map +7 -0
  142. package/bundle/delegation-tools-GYTS2D6A.js +27 -0
  143. package/bundle/delegation-tools-GYTS2D6A.js.map +7 -0
  144. package/bundle/deploy-lib-import-32ZFKHWP.js +49 -0
  145. package/bundle/deploy-lib-import-32ZFKHWP.js.map +7 -0
  146. package/bundle/digital-signature-OFCGSHWO.js +13 -0
  147. package/bundle/digital-signature-OFCGSHWO.js.map +7 -0
  148. package/bundle/direct-api-transport-YR7SXXNN.js +860 -0
  149. package/bundle/direct-api-transport-YR7SXXNN.js.map +7 -0
  150. package/bundle/discord-adapter-YYWVMPPU.js +584 -0
  151. package/bundle/discord-adapter-YYWVMPPU.js.map +7 -0
  152. package/bundle/dist-MTMKARCP.js +1969 -0
  153. package/bundle/dist-MTMKARCP.js.map +7 -0
  154. package/bundle/dns-wakeup-27M7D2MR.js +107 -0
  155. package/bundle/dns-wakeup-27M7D2MR.js.map +7 -0
  156. package/bundle/doctor-QNUSDY73.js +248 -0
  157. package/bundle/doctor-QNUSDY73.js.map +7 -0
  158. package/bundle/ensure-invariants-NMXNS476.js +49 -0
  159. package/bundle/ensure-invariants-NMXNS476.js.map +7 -0
  160. package/bundle/env-schema-2KBHBDGN.js +19 -0
  161. package/bundle/env-schema-2KBHBDGN.js.map +7 -0
  162. package/bundle/esm-DDP6NCZG.js +100663 -0
  163. package/bundle/esm-DDP6NCZG.js.map +7 -0
  164. package/bundle/fallback-policy-L4QV2PEJ.js +46 -0
  165. package/bundle/fallback-policy-L4QV2PEJ.js.map +7 -0
  166. package/bundle/health-check-SPA7NT6N.js +56 -0
  167. package/bundle/health-check-SPA7NT6N.js.map +7 -0
  168. package/bundle/hook-system-6Q5YTR53.js +17 -0
  169. package/bundle/hook-system-6Q5YTR53.js.map +7 -0
  170. package/bundle/hotskills-K7BM4YLB.js +12 -0
  171. package/bundle/hotskills-K7BM4YLB.js.map +7 -0
  172. package/bundle/install-6HRZVKUM.js +15 -0
  173. package/bundle/install-6HRZVKUM.js.map +7 -0
  174. package/bundle/install-log-IAPHYKD4.js +28 -0
  175. package/bundle/install-log-IAPHYKD4.js.map +7 -0
  176. package/bundle/install-manifest-SPQRUNXL.js +102 -0
  177. package/bundle/install-manifest-SPQRUNXL.js.map +7 -0
  178. package/bundle/install-validate-PVLZXYLQ.js +53 -0
  179. package/bundle/install-validate-PVLZXYLQ.js.map +7 -0
  180. package/bundle/irc-adapter-OI5UZSQF.js +293 -0
  181. package/bundle/irc-adapter-OI5UZSQF.js.map +7 -0
  182. package/bundle/irc-config-55YO6EGB.js +88 -0
  183. package/bundle/irc-config-55YO6EGB.js.map +7 -0
  184. package/bundle/logs-ZNYXX5PA.js +19 -0
  185. package/bundle/logs-ZNYXX5PA.js.map +7 -0
  186. package/bundle/media-utils-XNNDTYFI.js +4662 -0
  187. package/bundle/media-utils-XNNDTYFI.js.map +7 -0
  188. package/bundle/message-pipeline-LLH5SYMO.js +33 -0
  189. package/bundle/message-pipeline-LLH5SYMO.js.map +7 -0
  190. package/bundle/meta.json +41304 -0
  191. package/bundle/model-health-registry-35LQNVQR.js +11 -0
  192. package/bundle/model-health-registry-35LQNVQR.js.map +7 -0
  193. package/bundle/notification-Y5S5MMLV.js +13 -0
  194. package/bundle/notification-Y5S5MMLV.js.map +7 -0
  195. package/bundle/openrouter-credits-EDY7ETAU.js +32 -0
  196. package/bundle/openrouter-credits-EDY7ETAU.js.map +7 -0
  197. package/bundle/passwd-RRFV4CC5.js +133 -0
  198. package/bundle/passwd-RRFV4CC5.js.map +7 -0
  199. package/bundle/paths-G33RZWZ7.js +17 -0
  200. package/bundle/paths-G33RZWZ7.js.map +7 -0
  201. package/bundle/peer-client-52XYMNI7.js +156 -0
  202. package/bundle/peer-client-52XYMNI7.js.map +7 -0
  203. package/bundle/peer-config-VK6EDLN5.js +16 -0
  204. package/bundle/peer-config-VK6EDLN5.js.map +7 -0
  205. package/bundle/peer-sessions-EAXTNQ36.js +49 -0
  206. package/bundle/peer-sessions-EAXTNQ36.js.map +7 -0
  207. package/bundle/pending-callback-RIMQZ7FJ.js +40 -0
  208. package/bundle/pending-callback-RIMQZ7FJ.js.map +7 -0
  209. package/bundle/phase-transport-KYERDL2O.js +22 -0
  210. package/bundle/phase-transport-KYERDL2O.js.map +7 -0
  211. package/bundle/public/css/dashboard.css +542 -0
  212. package/bundle/public/index.html +180 -0
  213. package/bundle/public/js/app.js +437 -0
  214. package/bundle/public/memory-universe.js +384 -0
  215. package/bundle/responses-adapter-AAQTY3K4.js +30 -0
  216. package/bundle/responses-adapter-AAQTY3K4.js.map +7 -0
  217. package/bundle/restore-ZE3SEPSS.js +46 -0
  218. package/bundle/restore-ZE3SEPSS.js.map +7 -0
  219. package/bundle/self-healer-utils-DMUUXC47.js +43 -0
  220. package/bundle/self-healer-utils-DMUUXC47.js.map +7 -0
  221. package/bundle/skill-stats-LLEXEXLR.js +22 -0
  222. package/bundle/skill-stats-LLEXEXLR.js.map +7 -0
  223. package/bundle/sleep-OYIUOVQD.js +19 -0
  224. package/bundle/sleep-OYIUOVQD.js.map +7 -0
  225. package/bundle/soul-loader-54WCVNLJ.js +16 -0
  226. package/bundle/soul-loader-54WCVNLJ.js.map +7 -0
  227. package/bundle/src-JL4PVO23.js +8 -0
  228. package/bundle/src-JL4PVO23.js.map +7 -0
  229. package/bundle/sse-parser-anthropic-P7CE2MH2.js +72 -0
  230. package/bundle/sse-parser-anthropic-P7CE2MH2.js.map +7 -0
  231. package/bundle/sse-parser-responses-EQQA5FWN.js +63 -0
  232. package/bundle/sse-parser-responses-EQQA5FWN.js.map +7 -0
  233. package/bundle/ssrf-guard-FZCBYIVW.js +64 -0
  234. package/bundle/ssrf-guard-FZCBYIVW.js.map +7 -0
  235. package/bundle/start-FH3GRMJ4.js +35 -0
  236. package/bundle/start-FH3GRMJ4.js.map +7 -0
  237. package/bundle/stream-single-WSG4D53C.js +33 -0
  238. package/bundle/stream-single-WSG4D53C.js.map +7 -0
  239. package/bundle/stt-2UH3RITX.js +14 -0
  240. package/bundle/stt-2UH3RITX.js.map +7 -0
  241. package/bundle/subagent-runtime-LE2ZXH3G.js +12 -0
  242. package/bundle/subagent-runtime-LE2ZXH3G.js.map +7 -0
  243. package/bundle/system-message-T5R3EYYN.js +30 -0
  244. package/bundle/system-message-T5R3EYYN.js.map +7 -0
  245. package/bundle/system-status-KQ6KHFJ6.js +189 -0
  246. package/bundle/system-status-KQ6KHFJ6.js.map +7 -0
  247. package/bundle/task-store-K7CQDEPI.js +22 -0
  248. package/bundle/task-store-K7CQDEPI.js.map +7 -0
  249. package/bundle/telegram-adapter-2V3XUMT5.js +1060 -0
  250. package/bundle/telegram-adapter-2V3XUMT5.js.map +7 -0
  251. package/bundle/tool-registry-MU3OX4UI.js +38 -0
  252. package/bundle/tool-registry-MU3OX4UI.js.map +7 -0
  253. package/bundle/tool-sandbox-VYOK4ZOA.js +20 -0
  254. package/bundle/tool-sandbox-VYOK4ZOA.js.map +7 -0
  255. package/bundle/transport-config-YLXU33RO.js +57 -0
  256. package/bundle/transport-config-YLXU33RO.js.map +7 -0
  257. package/bundle/update-QCW5LXRN.js +13 -0
  258. package/bundle/update-QCW5LXRN.js.map +7 -0
  259. package/bundle/update-check-27KZSAP6.js +12 -0
  260. package/bundle/update-check-27KZSAP6.js.map +7 -0
  261. package/bundle/usage-tracker-OVVEVMOY.js +17 -0
  262. package/bundle/usage-tracker-OVVEVMOY.js.map +7 -0
  263. package/bundle/user-registry-D4SD73UV.js +16 -0
  264. package/bundle/user-registry-D4SD73UV.js.map +7 -0
  265. package/core/professor.json +14 -0
  266. package/core/prompts/browsing_prompt.md +39 -0
  267. package/core/prompts/compaction.md +32 -0
  268. package/core/skills/memory/classification/SKILL.md +37 -0
  269. package/core/skills/memory/memory-anomalies/SKILL.md +39 -0
  270. package/core/skills/memory/memory-search/SKILL.md +48 -0
  271. package/core/skills/memory/topic-save/SKILL.md +44 -0
  272. package/core/skills/ops/cron/SKILL.md +51 -0
  273. package/core/skills/ops/gdrive-backup/SKILL.md +15 -0
  274. package/core/skills/ops/session-start/SKILL.md +11 -0
  275. package/core/skills/ops/skill-authoring/SKILL.md +54 -0
  276. package/core/skills/ops/system-health/SKILL.md +104 -0
  277. package/core/skills/ops/troubleshooting/SKILL.md +48 -0
  278. package/core/skills/ops/trust-gating/SKILL.md +30 -0
  279. package/core/skills/tools/a2a-communication/SKILL.md +68 -0
  280. package/core/skills/tools/browse-delegate/SKILL.md +27 -0
  281. package/core/skills/tools/browser/SKILL.md +36 -0
  282. package/core/skills/tools/clawhub/SKILL.md +44 -0
  283. package/core/skills/tools/delegation/SKILL.md +48 -0
  284. package/core/skills/tools/fxtwitter/SKILL.md +52 -0
  285. package/core/skills/tools/gmail/SKILL.md +44 -0
  286. package/core/skills/tools/irc-chat/SKILL.md +84 -0
  287. package/core/skills/tools/linear/SKILL.md +90 -0
  288. package/core/skills/tools/mcporter/SKILL.md +46 -0
  289. package/core/skills/tools/model-scout/SKILL.md +132 -0
  290. package/core/skills/tools/model-scout/scout-add-model.py +67 -0
  291. package/core/skills/tools/model-scout/scout-ollama.py +116 -0
  292. package/core/skills/tools/model-scout/scout-openrouter.py +85 -0
  293. package/core/skills/tools/nlm/SKILL.md +40 -0
  294. package/core/skills/tools/todo/SKILL.md +30 -0
  295. package/core/skills/tools/twitterX/SKILL.md +52 -0
  296. package/core/skills/tools/twitterX/scripts/abtars-tweet.js +532 -0
  297. package/core/skills/tools/twitterX/scripts/package.json +1 -0
  298. package/core/skills/tools/web-fetch/SKILL.md +29 -0
  299. package/package.json +59 -0
  300. package/scripts/abtars-daemon.service +23 -0
  301. package/scripts/abtars-fetch.sh +42 -0
  302. package/scripts/abtars-watchdog.service +13 -0
  303. package/scripts/abtars.sh +14 -0
  304. package/scripts/abtars@.service +21 -0
  305. package/scripts/browser-patchright.sh +79 -0
  306. package/scripts/com.abtars.daemon.plist +24 -0
  307. package/scripts/com.abtars.watchdog.plist +27 -0
  308. package/scripts/daily-backup.sh +62 -0
  309. package/scripts/doctor.sh +553 -0
  310. package/scripts/hooks/audit-logger.sh +22 -0
  311. package/scripts/upgrade-deps.sh +64 -0
  312. package/scripts/watchdog.sh +309 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/sisteransi/src/index.js", "../node_modules/fast-string-truncated-width/dist/utils.js", "../node_modules/fast-string-truncated-width/dist/index.js", "../node_modules/fast-string-width/dist/index.js", "../node_modules/fast-wrap-ansi/src/main.ts", "../node_modules/@clack/core/src/utils/cursor.ts", "../node_modules/@clack/core/src/utils/settings.ts", "../node_modules/@clack/core/src/utils/string.ts", "../node_modules/@clack/core/src/utils/index.ts", "../node_modules/@clack/core/src/prompts/prompt.ts", "../node_modules/@clack/core/src/prompts/autocomplete.ts", "../node_modules/@clack/core/src/prompts/confirm.ts", "../node_modules/@clack/core/src/prompts/date.ts", "../node_modules/@clack/core/src/prompts/group-multiselect.ts", "../node_modules/@clack/core/src/prompts/multi-select.ts", "../node_modules/@clack/core/src/prompts/password.ts", "../node_modules/@clack/core/src/prompts/select.ts", "../node_modules/@clack/core/src/prompts/select-key.ts", "../node_modules/@clack/core/src/prompts/text.ts", "../node_modules/node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js", "../node_modules/@clack/prompts/src/common.ts", "../node_modules/@clack/prompts/src/limit-options.ts", "../node_modules/@clack/prompts/src/autocomplete.ts", "../node_modules/@clack/prompts/src/box.ts", "../node_modules/@clack/prompts/src/confirm.ts", "../node_modules/@clack/prompts/src/date.ts", "../node_modules/@clack/prompts/src/group.ts", "../node_modules/@clack/prompts/src/group-multi-select.ts", "../node_modules/@clack/prompts/src/log.ts", "../node_modules/@clack/prompts/src/messages.ts", "../node_modules/@clack/prompts/src/multi-select.ts", "../node_modules/@clack/prompts/src/note.ts", "../node_modules/@clack/prompts/src/password.ts", "../node_modules/@clack/prompts/src/path.ts", "../node_modules/@clack/prompts/src/spinner.ts", "../node_modules/@clack/prompts/src/progress-bar.ts", "../node_modules/@clack/prompts/src/select.ts", "../node_modules/@clack/prompts/src/select-key.ts", "../node_modules/@clack/prompts/src/stream.ts", "../node_modules/@clack/prompts/src/task.ts", "../node_modules/@clack/prompts/src/task-log.ts", "../node_modules/@clack/prompts/src/text.ts"],
4
+ "sourcesContent": ["'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n", "/* MAIN */\n//URL: https://github.com/sindresorhus/get-east-asian-width/blob/main/lookup.js\n//LICENSE: https://github.com/sindresorhus/get-east-asian-width/blob/main/license\n//TODO: Replace these with some unicode property classes, if the ones we need exist\nconst isAmbiguous = (x) => {\n return x === 0xA1 || x === 0xA4 || x === 0xA7 || x === 0xA8 || x === 0xAA || x === 0xAD || x === 0xAE || x >= 0xB0 && x <= 0xB4 || x >= 0xB6 && x <= 0xBA || x >= 0xBC && x <= 0xBF || x === 0xC6 || x === 0xD0 || x === 0xD7 || x === 0xD8 || x >= 0xDE && x <= 0xE1 || x === 0xE6 || x >= 0xE8 && x <= 0xEA || x === 0xEC || x === 0xED || x === 0xF0 || x === 0xF2 || x === 0xF3 || x >= 0xF7 && x <= 0xFA || x === 0xFC || x === 0xFE || x === 0x101 || x === 0x111 || x === 0x113 || x === 0x11B || x === 0x126 || x === 0x127 || x === 0x12B || x >= 0x131 && x <= 0x133 || x === 0x138 || x >= 0x13F && x <= 0x142 || x === 0x144 || x >= 0x148 && x <= 0x14B || x === 0x14D || x === 0x152 || x === 0x153 || x === 0x166 || x === 0x167 || x === 0x16B || x === 0x1CE || x === 0x1D0 || x === 0x1D2 || x === 0x1D4 || x === 0x1D6 || x === 0x1D8 || x === 0x1DA || x === 0x1DC || x === 0x251 || x === 0x261 || x === 0x2C4 || x === 0x2C7 || x >= 0x2C9 && x <= 0x2CB || x === 0x2CD || x === 0x2D0 || x >= 0x2D8 && x <= 0x2DB || x === 0x2DD || x === 0x2DF || x >= 0x300 && x <= 0x36F || x >= 0x391 && x <= 0x3A1 || x >= 0x3A3 && x <= 0x3A9 || x >= 0x3B1 && x <= 0x3C1 || x >= 0x3C3 && x <= 0x3C9 || x === 0x401 || x >= 0x410 && x <= 0x44F || x === 0x451 || x === 0x2010 || x >= 0x2013 && x <= 0x2016 || x === 0x2018 || x === 0x2019 || x === 0x201C || x === 0x201D || x >= 0x2020 && x <= 0x2022 || x >= 0x2024 && x <= 0x2027 || x === 0x2030 || x === 0x2032 || x === 0x2033 || x === 0x2035 || x === 0x203B || x === 0x203E || x === 0x2074 || x === 0x207F || x >= 0x2081 && x <= 0x2084 || x === 0x20AC || x === 0x2103 || x === 0x2105 || x === 0x2109 || x === 0x2113 || x === 0x2116 || x === 0x2121 || x === 0x2122 || x === 0x2126 || x === 0x212B || x === 0x2153 || x === 0x2154 || x >= 0x215B && x <= 0x215E || x >= 0x2160 && x <= 0x216B || x >= 0x2170 && x <= 0x2179 || x === 0x2189 || x >= 0x2190 && x <= 0x2199 || x === 0x21B8 || x === 0x21B9 || x === 0x21D2 || x === 0x21D4 || x === 0x21E7 || x === 0x2200 || x === 0x2202 || x === 0x2203 || x === 0x2207 || x === 0x2208 || x === 0x220B || x === 0x220F || x === 0x2211 || x === 0x2215 || x === 0x221A || x >= 0x221D && x <= 0x2220 || x === 0x2223 || x === 0x2225 || x >= 0x2227 && x <= 0x222C || x === 0x222E || x >= 0x2234 && x <= 0x2237 || x === 0x223C || x === 0x223D || x === 0x2248 || x === 0x224C || x === 0x2252 || x === 0x2260 || x === 0x2261 || x >= 0x2264 && x <= 0x2267 || x === 0x226A || x === 0x226B || x === 0x226E || x === 0x226F || x === 0x2282 || x === 0x2283 || x === 0x2286 || x === 0x2287 || x === 0x2295 || x === 0x2299 || x === 0x22A5 || x === 0x22BF || x === 0x2312 || x >= 0x2460 && x <= 0x24E9 || x >= 0x24EB && x <= 0x254B || x >= 0x2550 && x <= 0x2573 || x >= 0x2580 && x <= 0x258F || x >= 0x2592 && x <= 0x2595 || x === 0x25A0 || x === 0x25A1 || x >= 0x25A3 && x <= 0x25A9 || x === 0x25B2 || x === 0x25B3 || x === 0x25B6 || x === 0x25B7 || x === 0x25BC || x === 0x25BD || x === 0x25C0 || x === 0x25C1 || x >= 0x25C6 && x <= 0x25C8 || x === 0x25CB || x >= 0x25CE && x <= 0x25D1 || x >= 0x25E2 && x <= 0x25E5 || x === 0x25EF || x === 0x2605 || x === 0x2606 || x === 0x2609 || x === 0x260E || x === 0x260F || x === 0x261C || x === 0x261E || x === 0x2640 || x === 0x2642 || x === 0x2660 || x === 0x2661 || x >= 0x2663 && x <= 0x2665 || x >= 0x2667 && x <= 0x266A || x === 0x266C || x === 0x266D || x === 0x266F || x === 0x269E || x === 0x269F || x === 0x26BF || x >= 0x26C6 && x <= 0x26CD || x >= 0x26CF && x <= 0x26D3 || x >= 0x26D5 && x <= 0x26E1 || x === 0x26E3 || x === 0x26E8 || x === 0x26E9 || x >= 0x26EB && x <= 0x26F1 || x === 0x26F4 || x >= 0x26F6 && x <= 0x26F9 || x === 0x26FB || x === 0x26FC || x === 0x26FE || x === 0x26FF || x === 0x273D || x >= 0x2776 && x <= 0x277F || x >= 0x2B56 && x <= 0x2B59 || x >= 0x3248 && x <= 0x324F || x >= 0xE000 && x <= 0xF8FF || x >= 0xFE00 && x <= 0xFE0F || x === 0xFFFD || x >= 0x1F100 && x <= 0x1F10A || x >= 0x1F110 && x <= 0x1F12D || x >= 0x1F130 && x <= 0x1F169 || x >= 0x1F170 && x <= 0x1F18D || x === 0x1F18F || x === 0x1F190 || x >= 0x1F19B && x <= 0x1F1AC || x >= 0xE0100 && x <= 0xE01EF || x >= 0xF0000 && x <= 0xFFFFD || x >= 0x100000 && x <= 0x10FFFD;\n};\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWide = (x) => {\n return x >= 0x1100 && x <= 0x115F || x === 0x231A || x === 0x231B || x === 0x2329 || x === 0x232A || x >= 0x23E9 && x <= 0x23EC || x === 0x23F0 || x === 0x23F3 || x === 0x25FD || x === 0x25FE || x === 0x2614 || x === 0x2615 || x >= 0x2648 && x <= 0x2653 || x === 0x267F || x === 0x2693 || x === 0x26A1 || x === 0x26AA || x === 0x26AB || x === 0x26BD || x === 0x26BE || x === 0x26C4 || x === 0x26C5 || x === 0x26CE || x === 0x26D4 || x === 0x26EA || x === 0x26F2 || x === 0x26F3 || x === 0x26F5 || x === 0x26FA || x === 0x26FD || x === 0x2705 || x === 0x270A || x === 0x270B || x === 0x2728 || x === 0x274C || x === 0x274E || x >= 0x2753 && x <= 0x2755 || x === 0x2757 || x >= 0x2795 && x <= 0x2797 || x === 0x27B0 || x === 0x27BF || x === 0x2B1B || x === 0x2B1C || x === 0x2B50 || x === 0x2B55 || x >= 0x2E80 && x <= 0x2E99 || x >= 0x2E9B && x <= 0x2EF3 || x >= 0x2F00 && x <= 0x2FD5 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3041 && x <= 0x3096 || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0x4E00 && x <= 0xA48C || x >= 0xA490 && x <= 0xA4C6 || x >= 0xA960 && x <= 0xA97C || x >= 0xAC00 && x <= 0xD7A3 || x >= 0xF900 && x <= 0xFAFF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x16FE0 && x <= 0x16FE4 || x === 0x16FF0 || x === 0x16FF1 || x >= 0x17000 && x <= 0x187F7 || x >= 0x18800 && x <= 0x18CD5 || x >= 0x18D00 && x <= 0x18D08 || x >= 0x1AFF0 && x <= 0x1AFF3 || x >= 0x1AFF5 && x <= 0x1AFFB || x === 0x1AFFD || x === 0x1AFFE || x >= 0x1B000 && x <= 0x1B122 || x === 0x1B132 || x >= 0x1B150 && x <= 0x1B152 || x === 0x1B155 || x >= 0x1B164 && x <= 0x1B167 || x >= 0x1B170 && x <= 0x1B2FB || x === 0x1F004 || x === 0x1F0CF || x === 0x1F18E || x >= 0x1F191 && x <= 0x1F19A || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x === 0x1F250 || x === 0x1F251 || x >= 0x1F260 && x <= 0x1F265 || x >= 0x1F300 && x <= 0x1F320 || x >= 0x1F32D && x <= 0x1F335 || x >= 0x1F337 && x <= 0x1F37C || x >= 0x1F37E && x <= 0x1F393 || x >= 0x1F3A0 && x <= 0x1F3CA || x >= 0x1F3CF && x <= 0x1F3D3 || x >= 0x1F3E0 && x <= 0x1F3F0 || x === 0x1F3F4 || x >= 0x1F3F8 && x <= 0x1F43E || x === 0x1F440 || x >= 0x1F442 && x <= 0x1F4FC || x >= 0x1F4FF && x <= 0x1F53D || x >= 0x1F54B && x <= 0x1F54E || x >= 0x1F550 && x <= 0x1F567 || x === 0x1F57A || x === 0x1F595 || x === 0x1F596 || x === 0x1F5A4 || x >= 0x1F5FB && x <= 0x1F64F || x >= 0x1F680 && x <= 0x1F6C5 || x === 0x1F6CC || x >= 0x1F6D0 && x <= 0x1F6D2 || x >= 0x1F6D5 && x <= 0x1F6D7 || x >= 0x1F6DC && x <= 0x1F6DF || x === 0x1F6EB || x === 0x1F6EC || x >= 0x1F6F4 && x <= 0x1F6FC || x >= 0x1F7E0 && x <= 0x1F7EB || x === 0x1F7F0 || x >= 0x1F90C && x <= 0x1F93A || x >= 0x1F93C && x <= 0x1F945 || x >= 0x1F947 && x <= 0x1F9FF || x >= 0x1FA70 && x <= 0x1FA7C || x >= 0x1FA80 && x <= 0x1FA88 || x >= 0x1FA90 && x <= 0x1FABD || x >= 0x1FABF && x <= 0x1FAC5 || x >= 0x1FACE && x <= 0x1FADB || x >= 0x1FAE0 && x <= 0x1FAE8 || x >= 0x1FAF0 && x <= 0x1FAF8 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { isAmbiguous, isFullWidth, isWide };\n", "/* IMPORT */\nimport { isAmbiguous, isFullWidth, isWide } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\n//TODO: Optimize matching non-latin letters\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = widthOptions.ansiWidth ?? 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const AMBIGUOUS_WIDTH = widthOptions.ambiguousWidth ?? 1;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = widthOptions.fullWidthWidth ?? 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? 2;\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWide(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else if (AMBIGUOUS_WIDTH !== REGULAR_WIDTH && isAmbiguous(codePoint)) {\n widthExtra = AMBIGUOUS_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length)\n break;\n /* LATIN */\n LATIN_RE.lastIndex = index;\n if (LATIN_RE.test(input)) {\n lengthExtra = LATIN_RE.lastIndex - index;\n widthExtra = lengthExtra * REGULAR_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / REGULAR_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = LATIN_RE.lastIndex;\n continue;\n }\n /* ANSI */\n ANSI_RE.lastIndex = index;\n if (ANSI_RE.test(input)) {\n if ((width + ANSI_WIDTH) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index);\n }\n if ((width + ANSI_WIDTH) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += ANSI_WIDTH;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = ANSI_RE.lastIndex;\n continue;\n }\n /* CONTROL */\n CONTROL_RE.lastIndex = index;\n if (CONTROL_RE.test(input)) {\n lengthExtra = CONTROL_RE.lastIndex - index;\n widthExtra = lengthExtra * CONTROL_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / CONTROL_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = CONTROL_RE.lastIndex;\n continue;\n }\n /* TAB */\n TAB_RE.lastIndex = index;\n if (TAB_RE.test(input)) {\n lengthExtra = TAB_RE.lastIndex - index;\n widthExtra = lengthExtra * TAB_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / TAB_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = TAB_RE.lastIndex;\n continue;\n }\n /* EMOJI */\n EMOJI_RE.lastIndex = index;\n if (EMOJI_RE.test(input)) {\n if ((width + EMOJI_WIDTH) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index);\n }\n if ((width + EMOJI_WIDTH) > LIMIT) {\n truncationEnabled = true;\n break;\n }\n width += EMOJI_WIDTH;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = EMOJI_RE.lastIndex;\n continue;\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n", "/* IMPORT */\nimport fastStringTruncatedWidth from 'fast-string-truncated-width';\n/* HELPERS */\nconst NO_TRUNCATION = {\n limit: Infinity,\n ellipsis: '',\n ellipsisWidth: 0,\n};\n/* MAIN */\nconst fastStringWidth = (input, options = {}) => {\n return fastStringTruncatedWidth(input, NO_TRUNCATION, options).width;\n};\n/* EXPORT */\nexport default fastStringWidth;\n", null, "export function findCursor<T extends { disabled?: boolean }>(\n\tcursor: number,\n\tdelta: number,\n\toptions: T[]\n) {\n\tconst hasEnabledOptions = options.some((opt) => !opt.disabled);\n\tif (!hasEnabledOptions) {\n\t\treturn cursor;\n\t}\n\tconst newCursor = cursor + delta;\n\tconst maxCursor = Math.max(options.length - 1, 0);\n\tconst clampedCursor = newCursor < 0 ? maxCursor : newCursor > maxCursor ? 0 : newCursor;\n\tconst newOption = options[clampedCursor];\n\tif (newOption.disabled) {\n\t\treturn findCursor(clampedCursor, delta < 0 ? -1 : 1, options);\n\t}\n\treturn clampedCursor;\n}\n", "const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\nconst DEFAULT_MONTH_NAMES = [\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December',\n];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n\tmessages: {\n\t\tcancel: string;\n\t\terror: string;\n\t};\n\twithGuide: boolean;\n\tdate: {\n\t\tmonthNames: string[];\n\t\tmessages: {\n\t\t\tinvalidMonth: string;\n\t\t\trequired: string;\n\t\t\tinvalidDay: (days: number, month: string) => string;\n\t\t\tafterMin: (min: Date) => string;\n\t\t\tbeforeMax: (max: Date) => string;\n\t\t};\n\t};\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n\tmessages: {\n\t\tcancel: 'Canceled',\n\t\terror: 'Something went wrong',\n\t},\n\twithGuide: true,\n\tdate: {\n\t\tmonthNames: [...DEFAULT_MONTH_NAMES],\n\t\tmessages: {\n\t\t\trequired: 'Please enter a valid date',\n\t\t\tinvalidMonth: 'There are only 12 months in a year',\n\t\t\tinvalidDay: (days, month) => `There are only ${days} days in ${month}`,\n\t\t\tafterMin: (min) => `Date must be on or after ${min.toISOString().slice(0, 10)}`,\n\t\t\tbeforeMax: (max) => `Date must be on or before ${max.toISOString().slice(0, 10)}`,\n\t\t},\n\t},\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases?: Record<string, Action>;\n\n\t/**\n\t * Custom messages for prompts\n\t */\n\tmessages?: {\n\t\t/**\n\t\t * Custom message to display when a spinner is cancelled\n\t\t * @default \"Canceled\"\n\t\t */\n\t\tcancel?: string;\n\t\t/**\n\t\t * Custom message to display when a spinner encounters an error\n\t\t * @default \"Something went wrong\"\n\t\t */\n\t\terror?: string;\n\t};\n\n\twithGuide?: boolean;\n\n\t/**\n\t * Date prompt localization\n\t */\n\tdate?: {\n\t\t/** Month names for validation messages (January, February, ...) */\n\t\tmonthNames?: string[];\n\t\tmessages?: {\n\t\t\t/** Shown when date is missing */\n\t\t\trequired?: string;\n\t\t\t/** Shown when month > 12 */\n\t\t\tinvalidMonth?: string;\n\t\t\t/** (days, monthName) => message for invalid day */\n\t\t\tinvalidDay?: (days: number, month: string) => string;\n\t\t\t/** (min) => message when date is before minDate */\n\t\t\tafterMin?: (min: Date) => string;\n\t\t\t/** (max) => message when date is after maxDate */\n\t\t\tbeforeMax?: (max: Date) => string;\n\t\t};\n\t};\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\t// Handle each property in the updates\n\tif (updates.aliases !== undefined) {\n\t\tconst aliases = updates.aliases;\n\t\tfor (const alias in aliases) {\n\t\t\tif (!Object.hasOwn(aliases, alias)) continue;\n\n\t\t\tconst action = aliases[alias];\n\t\t\tif (!settings.actions.has(action)) continue;\n\n\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\tsettings.aliases.set(alias, action);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (updates.messages !== undefined) {\n\t\tconst messages = updates.messages;\n\t\tif (messages.cancel !== undefined) {\n\t\t\tsettings.messages.cancel = messages.cancel;\n\t\t}\n\t\tif (messages.error !== undefined) {\n\t\t\tsettings.messages.error = messages.error;\n\t\t}\n\t}\n\n\tif (updates.withGuide !== undefined) {\n\t\tsettings.withGuide = updates.withGuide !== false;\n\t}\n\n\tif (updates.date !== undefined) {\n\t\tconst date = updates.date;\n\t\tif (date.monthNames !== undefined) {\n\t\t\tsettings.date.monthNames = [...date.monthNames];\n\t\t}\n\t\tif (date.messages !== undefined) {\n\t\t\tif (date.messages.required !== undefined) {\n\t\t\t\tsettings.date.messages.required = date.messages.required;\n\t\t\t}\n\t\t\tif (date.messages.invalidMonth !== undefined) {\n\t\t\t\tsettings.date.messages.invalidMonth = date.messages.invalidMonth;\n\t\t\t}\n\t\t\tif (date.messages.invalidDay !== undefined) {\n\t\t\t\tsettings.date.messages.invalidDay = date.messages.invalidDay;\n\t\t\t}\n\t\t\tif (date.messages.afterMin !== undefined) {\n\t\t\t\tsettings.date.messages.afterMin = date.messages.afterMin;\n\t\t\t}\n\t\t\tif (date.messages.beforeMax !== undefined) {\n\t\t\t\tsettings.date.messages.beforeMax = date.messages.beforeMax;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n", "export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst numLines = Math.max(aLines.length, bLines.length);\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < numLines; i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn {\n\t\tlines: diff,\n\t\tnumLinesBefore: aLines.length,\n\t\tnumLinesAfter: bLines.length,\n\t\tnumLines,\n\t};\n}\n", "import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable, Writable } from 'node:stream';\nimport { ReadStream } from 'node:tty';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings.js';\n\nexport * from './settings.js';\nexport * from './string.js';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\ninterface BlockOptions {\n\tinput?: Readable;\n\toutput?: Writable;\n\toverwrite?: boolean;\n\thideCursor?: boolean;\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n}: BlockOptions = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\n\tif (input instanceof ReadStream && input.isTTY) {\n\t\tinput.setRawMode(true);\n\t}\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input instanceof ReadStream && input.isTTY && !isWindows) {\n\t\t\tinput.setRawMode(false);\n\t\t}\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n\nexport const getColumns = (output: Writable): number => {\n\tif ('columns' in output && typeof output.columns === 'number') {\n\t\treturn output.columns;\n\t}\n\treturn 80;\n};\n\nexport const getRows = (output: Writable): number => {\n\tif ('rows' in output && typeof output.rows === 'number') {\n\t\treturn output.rows;\n\t}\n\treturn 20;\n};\n\nexport function wrapTextWithPrefix(\n\toutput: Writable | undefined,\n\ttext: string,\n\tprefix: string,\n\tstartPrefix: string = prefix\n): string {\n\tconst columns = getColumns(output ?? stdout);\n\tconst wrapped = wrapAnsi(text, columns - prefix.length, {\n\t\thard: true,\n\t\ttrim: false,\n\t});\n\tconst lines = wrapped\n\t\t.split('\\n')\n\t\t.map((line, index) => {\n\t\t\treturn `${index === 0 ? startPrefix : prefix}${line}`;\n\t\t})\n\t\t.join('\\n');\n\treturn lines;\n}\n", "import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable, Writable } from 'node:stream';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport type { ClackEvents, ClackState } from '../types.js';\nimport type { Action } from '../utils/index.js';\nimport {\n\tCANCEL_SYMBOL,\n\tdiffLines,\n\tgetRows,\n\tisActionKey,\n\tsetRawMode,\n\tsettings,\n} from '../utils/index.js';\n\nexport interface PromptOptions<TValue, Self extends Prompt<TValue>> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tinitialValue?: any;\n\tinitialUserInput?: string;\n\tvalidate?: ((value: TValue | undefined) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt<TValue> {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<TValue, Prompt<TValue>>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt<TValue>, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: TValue | undefined;\n\tpublic userInput = '';\n\n\tconstructor(options: PromptOptions<TValue, Prompt<TValue>>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents<TValue>>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents<TValue>[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents<TValue>>(event: T, cb: ClackEvents<TValue>[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents<TValue>>(event: T, cb: ClackEvents<TValue>[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents<TValue>>(\n\t\tevent: T,\n\t\t...data: Parameters<ClackEvents<TValue>[T]>\n\t) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<TValue | symbol | undefined>((resolve) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\tthis.rl.prompt();\n\n\t\t\tif (this.opts.initialUserInput !== undefined) {\n\t\t\t\tthis._setUserInput(this.opts.initialUserInput, true);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprotected _isActionKey(char: string | undefined, _key: Key): boolean {\n\t\treturn char === '\\t';\n\t}\n\n\tprotected _setValue(value: TValue | undefined): void {\n\t\tthis.value = value;\n\t\tthis.emit('value', this.value);\n\t}\n\n\tprotected _setUserInput(value: string | undefined, write?: boolean): void {\n\t\tthis.userInput = value ?? '';\n\t\tthis.emit('userInput', this.userInput);\n\t\tif (write && this._track && this.rl) {\n\t\t\tthis.rl.write(this.userInput);\n\t\t\tthis._cursor = this.rl.cursor;\n\t\t}\n\t}\n\n\tprotected _clearUserInput(): void {\n\t\tthis.rl?.write(null, { ctrl: true, name: 'u' });\n\t\tthis._setUserInput('');\n\t}\n\n\tprivate onKeypress(char: string | undefined, key: Key) {\n\t\tif (this._track && key.name !== 'return') {\n\t\t\tif (key.name && this._isActionKey(char, key)) {\n\t\t\t\tthis.rl?.write(null, { ctrl: true, name: 'h' });\n\t\t\t}\n\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\tthis._setUserInput(this.rl?.line);\n\t\t}\n\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\n\t\t// Call the key event handler and emit the key event\n\t\tthis.emit('key', char?.toLowerCase(), key);\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.userInput);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrapAnsi(this._prevFrame, process.stdout.columns, { hard: true, trim: false }).split('\\n')\n\t\t\t\t.length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrapAnsi(this._render(this) ?? '', process.stdout.columns, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t});\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tconst rows = getRows(this.output);\n\t\t\tthis.restoreCursor();\n\t\t\tif (diff) {\n\t\t\t\tconst diffOffsetAfter = Math.max(0, diff.numLinesAfter - rows);\n\t\t\t\tconst diffOffsetBefore = Math.max(0, diff.numLinesBefore - rows);\n\t\t\t\tlet diffLine = diff.lines.find((line) => line >= diffOffsetAfter);\n\n\t\t\t\tif (diffLine === undefined) {\n\t\t\t\t\tthis._prevFrame = frame;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If a single line has changed, only update that line\n\t\t\t\tif (diff.lines.length === 1) {\n\t\t\t\t\tthis.output.write(cursor.move(0, diffLine - diffOffsetBefore));\n\t\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\t\tthis._prevFrame = frame;\n\t\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\t\treturn;\n\t\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t\t} else if (diff.lines.length > 1) {\n\t\t\t\t\tif (diffOffsetAfter < diffOffsetBefore) {\n\t\t\t\t\t\tdiffLine = diffOffsetAfter;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst adjustedDiffLine = diffLine - diffOffsetBefore;\n\t\t\t\t\t\tif (adjustedDiffLine > 0) {\n\t\t\t\t\t\t\tthis.output.write(cursor.move(0, adjustedDiffLine));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.output.write(erase.down());\n\t\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\t\tthis._prevFrame = frame;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n", "import type { Key } from 'node:readline';\nimport { styleText } from 'node:util';\nimport { findCursor } from '../utils/cursor.js';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\ninterface OptionLike {\n\tvalue: unknown;\n\tlabel?: string;\n\tdisabled?: boolean;\n}\n\ntype FilterFunction<T extends OptionLike> = (search: string, opt: T) => boolean;\n\nfunction getCursorForValue<T extends OptionLike>(\n\tselected: T['value'] | undefined,\n\titems: T[]\n): number {\n\tif (selected === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst currLength = items.length;\n\n\t// If filtering changed the available options, update cursor\n\tif (currLength === 0) {\n\t\treturn 0;\n\t}\n\n\t// Try to maintain the same selected item\n\tconst index = items.findIndex((item) => item.value === selected);\n\treturn index !== -1 ? index : 0;\n}\n\nfunction defaultFilter<T extends OptionLike>(input: string, option: T): boolean {\n\tconst label = option.label ?? String(option.value);\n\treturn label.toLowerCase().includes(input.toLowerCase());\n}\n\nfunction normalisedValue<T>(multiple: boolean, values: T[] | undefined): T | T[] | undefined {\n\tif (!values) {\n\t\treturn undefined;\n\t}\n\tif (multiple) {\n\t\treturn values;\n\t}\n\treturn values[0];\n}\n\nexport interface AutocompleteOptions<T extends OptionLike>\n\textends PromptOptions<T['value'] | T['value'][], AutocompletePrompt<T>> {\n\toptions: T[] | ((this: AutocompletePrompt<T>) => T[]);\n\tfilter?: FilterFunction<T>;\n\tmultiple?: boolean;\n\t/**\n\t * When set (non-empty), pressing Tab with no input fills the field with this value\n\t * and runs the normal filter/selection logic so the user can confirm with Enter.\n\t * Tab only fills the input when the placeholder matches at least one option under\n\t * the prompt's filter (so the value remains selectable).\n\t */\n\tplaceholder?: string;\n}\n\nexport default class AutocompletePrompt<T extends OptionLike> extends Prompt<\n\tT['value'] | T['value'][]\n> {\n\tfilteredOptions: T[];\n\tmultiple: boolean;\n\tisNavigating = false;\n\tselectedValues: Array<T['value']> = [];\n\n\tfocusedValue: T['value'] | undefined;\n\t#cursor = 0;\n\t#lastUserInput = '';\n\t#filterFn: FilterFunction<T> | undefined;\n\t#options: T[] | (() => T[]);\n\t#placeholder: string | undefined;\n\n\tget cursor(): number {\n\t\treturn this.#cursor;\n\t}\n\n\tget userInputWithCursor() {\n\t\tif (!this.userInput) {\n\t\t\treturn styleText(['inverse', 'hidden'], '_');\n\t\t}\n\t\tif (this._cursor >= this.userInput.length) {\n\t\t\treturn `${this.userInput}█`;\n\t\t}\n\t\tconst s1 = this.userInput.slice(0, this._cursor);\n\t\tconst [s2, ...s3] = this.userInput.slice(this._cursor);\n\t\treturn `${s1}${styleText('inverse', s2)}${s3.join('')}`;\n\t}\n\n\tget options(): T[] {\n\t\tif (typeof this.#options === 'function') {\n\t\t\treturn this.#options();\n\t\t}\n\t\treturn this.#options;\n\t}\n\n\tconstructor(opts: AutocompleteOptions<T>) {\n\t\tsuper(opts);\n\n\t\tthis.#options = opts.options;\n\t\tthis.#placeholder = opts.placeholder;\n\t\tconst options = this.options;\n\t\tthis.filteredOptions = [...options];\n\t\tthis.multiple = opts.multiple === true;\n\t\tthis.#filterFn =\n\t\t\ttypeof opts.options === 'function' ? opts.filter : (opts.filter ?? defaultFilter);\n\t\tlet initialValues: unknown[] | undefined;\n\t\tif (opts.initialValue && Array.isArray(opts.initialValue)) {\n\t\t\tif (this.multiple) {\n\t\t\t\tinitialValues = opts.initialValue;\n\t\t\t} else {\n\t\t\t\tinitialValues = opts.initialValue.slice(0, 1);\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.multiple && this.options.length > 0) {\n\t\t\t\tinitialValues = [this.options[0].value];\n\t\t\t}\n\t\t}\n\n\t\tif (initialValues) {\n\t\t\tfor (const selectedValue of initialValues) {\n\t\t\t\tconst selectedIndex = options.findIndex((opt) => opt.value === selectedValue);\n\t\t\t\tif (selectedIndex !== -1) {\n\t\t\t\t\tthis.toggleSelected(selectedValue);\n\t\t\t\t\tthis.#cursor = selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.focusedValue = this.options[this.#cursor]?.value;\n\n\t\tthis.on('key', (char, key) => this.#onKey(char, key));\n\t\tthis.on('userInput', (value) => this.#onUserInputChanged(value));\n\t}\n\n\tprotected override _isActionKey(char: string | undefined, key: Key): boolean {\n\t\treturn (\n\t\t\tchar === '\\t' ||\n\t\t\t(this.multiple &&\n\t\t\t\tthis.isNavigating &&\n\t\t\t\tkey.name === 'space' &&\n\t\t\t\tchar !== undefined &&\n\t\t\t\tchar !== '')\n\t\t);\n\t}\n\n\t#onKey(_char: string | undefined, key: Key): void {\n\t\tconst isUpKey = key.name === 'up';\n\t\tconst isDownKey = key.name === 'down';\n\t\tconst isReturnKey = key.name === 'return';\n\n\t\t// Tab with empty input and placeholder: fill input with placeholder to trigger autocomplete\n\t\t// Only when the placeholder matches at least one (non-disabled) option so the value remains selectable\n\t\tconst isEmptyOrOnlyTab = this.userInput === '' || this.userInput === '\\t';\n\t\tconst placeholder = this.#placeholder;\n\t\tconst options = this.options;\n\t\tconst placeholderMatchesOption =\n\t\t\tplaceholder !== undefined &&\n\t\t\tplaceholder !== '' &&\n\t\t\toptions.some(\n\t\t\t\t(opt) => !opt.disabled && (this.#filterFn ? this.#filterFn(placeholder, opt) : true)\n\t\t\t);\n\t\tif (key.name === 'tab' && isEmptyOrOnlyTab && placeholderMatchesOption) {\n\t\t\tif (this.userInput === '\\t') {\n\t\t\t\tthis._clearUserInput();\n\t\t\t}\n\t\t\tthis._setUserInput(placeholder, true);\n\t\t\tthis.isNavigating = false;\n\t\t\treturn;\n\t\t}\n\n\t\t// Start navigation mode with up/down arrows\n\t\tif (isUpKey || isDownKey) {\n\t\t\tthis.#cursor = findCursor(this.#cursor, isUpKey ? -1 : 1, this.filteredOptions);\n\t\t\tthis.focusedValue = this.filteredOptions[this.#cursor]?.value;\n\t\t\tif (!this.multiple) {\n\t\t\t\tthis.selectedValues = [this.focusedValue];\n\t\t\t}\n\t\t\tthis.isNavigating = true;\n\t\t} else if (isReturnKey) {\n\t\t\tthis.value = normalisedValue(this.multiple, this.selectedValues);\n\t\t} else {\n\t\t\tif (this.multiple) {\n\t\t\t\tif (\n\t\t\t\t\tthis.focusedValue !== undefined &&\n\t\t\t\t\t(key.name === 'tab' || (this.isNavigating && key.name === 'space'))\n\t\t\t\t) {\n\t\t\t\t\tthis.toggleSelected(this.focusedValue);\n\t\t\t\t} else {\n\t\t\t\t\tthis.isNavigating = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this.focusedValue) {\n\t\t\t\t\tthis.selectedValues = [this.focusedValue];\n\t\t\t\t}\n\t\t\t\tthis.isNavigating = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tdeselectAll() {\n\t\tthis.selectedValues = [];\n\t}\n\n\ttoggleSelected(value: T['value']) {\n\t\tif (this.filteredOptions.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.multiple) {\n\t\t\tif (this.selectedValues.includes(value)) {\n\t\t\t\tthis.selectedValues = this.selectedValues.filter((v) => v !== value);\n\t\t\t} else {\n\t\t\t\tthis.selectedValues = [...this.selectedValues, value];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.selectedValues = [value];\n\t\t}\n\t}\n\n\t#onUserInputChanged(value: string): void {\n\t\tif (value !== this.#lastUserInput) {\n\t\t\tthis.#lastUserInput = value;\n\n\t\t\tconst options = this.options;\n\n\t\t\tif (value && this.#filterFn) {\n\t\t\t\tthis.filteredOptions = options.filter((opt) => this.#filterFn?.(value, opt));\n\t\t\t} else {\n\t\t\t\tthis.filteredOptions = [...options];\n\t\t\t}\n\t\t\tconst valueCursor = getCursorForValue(this.focusedValue, this.filteredOptions);\n\t\t\tthis.#cursor = findCursor(valueCursor, 0, this.filteredOptions);\n\t\t\tconst focusedOption = this.filteredOptions[this.#cursor];\n\t\t\tif (focusedOption && !focusedOption.disabled) {\n\t\t\t\tthis.focusedValue = focusedOption.value;\n\t\t\t} else {\n\t\t\t\tthis.focusedValue = undefined;\n\t\t\t}\n\t\t\tif (!this.multiple) {\n\t\t\t\tif (this.focusedValue !== undefined) {\n\t\t\t\t\tthis.toggleSelected(this.focusedValue);\n\t\t\t\t} else {\n\t\t\t\t\tthis.deselectAll();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n", "import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface ConfirmOptions extends PromptOptions<boolean, ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\n\nexport default class ConfirmPrompt extends Prompt<boolean> {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('userInput', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\n}\n", "import type { Key } from 'node:readline';\nimport { settings } from '../utils/settings.js';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\ninterface SegmentConfig {\n\ttype: 'year' | 'month' | 'day';\n\tlen: number;\n}\n\nexport interface DateParts {\n\tyear: string;\n\tmonth: string;\n\tday: string;\n}\n\nexport type DateFormat = 'YMD' | 'MDY' | 'DMY';\n\nconst SEGMENTS: Record<string, SegmentConfig> = {\n\tY: { type: 'year', len: 4 },\n\tM: { type: 'month', len: 2 },\n\tD: { type: 'day', len: 2 },\n} as const;\n\nfunction segmentsFor(fmt: DateFormat): SegmentConfig[] {\n\treturn [...fmt].map((c) => SEGMENTS[c as keyof typeof SEGMENTS]);\n}\n\nfunction detectLocaleFormat(locale?: string): { segments: SegmentConfig[]; separator: string } {\n\tconst fmt = new Intl.DateTimeFormat(locale, {\n\t\tyear: 'numeric',\n\t\tmonth: '2-digit',\n\t\tday: '2-digit',\n\t});\n\tconst parts = fmt.formatToParts(new Date(2000, 0, 15));\n\tconst segments: SegmentConfig[] = [];\n\tlet separator = '/';\n\tfor (const p of parts) {\n\t\tif (p.type === 'literal') {\n\t\t\tseparator = p.value.trim() || p.value;\n\t\t} else if (p.type === 'year' || p.type === 'month' || p.type === 'day') {\n\t\t\tsegments.push({ type: p.type, len: p.type === 'year' ? 4 : 2 });\n\t\t}\n\t}\n\treturn { segments, separator };\n}\n\n/** Parse string segment values to numbers, treating blanks as 0 */\nfunction parseSegmentToNum(s: string): number {\n\treturn Number.parseInt((s || '0').replace(/_/g, '0'), 10) || 0;\n}\n\nfunction parse(parts: DateParts): { year: number; month: number; day: number } {\n\treturn {\n\t\tyear: parseSegmentToNum(parts.year),\n\t\tmonth: parseSegmentToNum(parts.month),\n\t\tday: parseSegmentToNum(parts.day),\n\t};\n}\n\nfunction daysInMonth(year: number, month: number): number {\n\treturn new Date(year || 2001, month || 1, 0).getDate();\n}\n\n/** Validate and return calendar parts, or undefined if invalid */\nfunction validParts(parts: DateParts): { year: number; month: number; day: number } | undefined {\n\tconst { year, month, day } = parse(parts);\n\tif (!year || year < 0 || year > 9999) return undefined;\n\tif (!month || month < 1 || month > 12) return undefined;\n\tif (!day || day < 1) return undefined;\n\tconst d = new Date(Date.UTC(year, month - 1, day));\n\tif (d.getUTCFullYear() !== year || d.getUTCMonth() !== month - 1 || d.getUTCDate() !== day)\n\t\treturn undefined;\n\treturn { year, month, day };\n}\n\nfunction toDate(parts: DateParts): Date | undefined {\n\tconst p = validParts(parts);\n\treturn p ? new Date(Date.UTC(p.year, p.month - 1, p.day)) : undefined;\n}\n\nfunction segmentBounds(\n\ttype: 'year' | 'month' | 'day',\n\tctx: { year: number; month: number },\n\tminDate: Date | undefined,\n\tmaxDate: Date | undefined\n): { min: number; max: number } {\n\tconst minP = minDate\n\t\t? {\n\t\t\t\tyear: minDate.getUTCFullYear(),\n\t\t\t\tmonth: minDate.getUTCMonth() + 1,\n\t\t\t\tday: minDate.getUTCDate(),\n\t\t\t}\n\t\t: null;\n\tconst maxP = maxDate\n\t\t? {\n\t\t\t\tyear: maxDate.getUTCFullYear(),\n\t\t\t\tmonth: maxDate.getUTCMonth() + 1,\n\t\t\t\tday: maxDate.getUTCDate(),\n\t\t\t}\n\t\t: null;\n\n\tif (type === 'year') {\n\t\treturn { min: minP?.year ?? 1, max: maxP?.year ?? 9999 };\n\t}\n\tif (type === 'month') {\n\t\treturn {\n\t\t\tmin: minP && ctx.year === minP.year ? minP.month : 1,\n\t\t\tmax: maxP && ctx.year === maxP.year ? maxP.month : 12,\n\t\t};\n\t}\n\treturn {\n\t\tmin: minP && ctx.year === minP.year && ctx.month === minP.month ? minP.day : 1,\n\t\tmax:\n\t\t\tmaxP && ctx.year === maxP.year && ctx.month === maxP.month\n\t\t\t\t? maxP.day\n\t\t\t\t: daysInMonth(ctx.year, ctx.month),\n\t};\n}\n\nexport interface DateOptions extends PromptOptions<Date, DatePrompt> {\n\tformat?: DateFormat;\n\tlocale?: string;\n\tseparator?: string;\n\tdefaultValue?: Date;\n\tinitialValue?: Date;\n\tminDate?: Date;\n\tmaxDate?: Date;\n}\n\nexport default class DatePrompt extends Prompt<Date> {\n\t#segments: SegmentConfig[];\n\t#separator: string;\n\t#segmentValues: DateParts;\n\t#minDate: Date | undefined;\n\t#maxDate: Date | undefined;\n\t#cursor = { segmentIndex: 0, positionInSegment: 0 };\n\t#segmentSelected = true;\n\t#pendingTensDigit: string | null = null;\n\n\tinlineError = '';\n\n\tget segmentCursor() {\n\t\treturn { ...this.#cursor };\n\t}\n\n\tget segmentValues(): DateParts {\n\t\treturn { ...this.#segmentValues };\n\t}\n\n\tget segments(): readonly SegmentConfig[] {\n\t\treturn this.#segments;\n\t}\n\n\tget separator(): string {\n\t\treturn this.#separator;\n\t}\n\n\tget formattedValue(): string {\n\t\treturn this.#format(this.#segmentValues);\n\t}\n\n\t#format(parts: DateParts): string {\n\t\treturn this.#segments.map((s) => parts[s.type]).join(this.#separator);\n\t}\n\n\t#refresh() {\n\t\tthis._setUserInput(this.#format(this.#segmentValues));\n\t\tthis._setValue(toDate(this.#segmentValues) ?? undefined);\n\t}\n\n\tconstructor(opts: DateOptions) {\n\t\tconst detected = opts.format\n\t\t\t? { segments: segmentsFor(opts.format), separator: opts.separator ?? '/' }\n\t\t\t: detectLocaleFormat(opts.locale);\n\t\tconst sep = opts.separator ?? detected.separator;\n\t\tconst segments = opts.format ? segmentsFor(opts.format) : detected.segments;\n\n\t\tconst initialDate = opts.initialValue ?? opts.defaultValue;\n\t\tconst segmentValues: DateParts = initialDate\n\t\t\t? {\n\t\t\t\t\tyear: String(initialDate.getUTCFullYear()).padStart(4, '0'),\n\t\t\t\t\tmonth: String(initialDate.getUTCMonth() + 1).padStart(2, '0'),\n\t\t\t\t\tday: String(initialDate.getUTCDate()).padStart(2, '0'),\n\t\t\t\t}\n\t\t\t: { year: '____', month: '__', day: '__' };\n\n\t\tconst initialDisplay = segments.map((s) => segmentValues[s.type]).join(sep);\n\n\t\tsuper({ ...opts, initialUserInput: initialDisplay }, false);\n\t\tthis.#segments = segments;\n\t\tthis.#separator = sep;\n\t\tthis.#segmentValues = segmentValues;\n\t\tthis.#minDate = opts.minDate;\n\t\tthis.#maxDate = opts.maxDate;\n\t\tthis.#refresh();\n\n\t\tthis.on('cursor', (key) => this.#onCursor(key));\n\t\tthis.on('key', (char, key) => this.#onKey(char, key));\n\t\tthis.on('finalize', () => this.#onFinalize(opts));\n\t}\n\n\t#seg(): { segment: SegmentConfig; index: number } | undefined {\n\t\tconst index = Math.max(0, Math.min(this.#cursor.segmentIndex, this.#segments.length - 1));\n\t\tconst segment = this.#segments[index];\n\t\tif (!segment) return undefined;\n\t\tthis.#cursor.positionInSegment = Math.max(\n\t\t\t0,\n\t\t\tMath.min(this.#cursor.positionInSegment, segment.len - 1)\n\t\t);\n\t\treturn { segment, index };\n\t}\n\n\t#navigate(direction: 1 | -1) {\n\t\tthis.inlineError = '';\n\t\tthis.#pendingTensDigit = null;\n\t\tconst ctx = this.#seg();\n\t\tif (!ctx) return;\n\t\tthis.#cursor.segmentIndex = Math.max(\n\t\t\t0,\n\t\t\tMath.min(this.#segments.length - 1, ctx.index + direction)\n\t\t);\n\t\tthis.#cursor.positionInSegment = 0;\n\t\tthis.#segmentSelected = true;\n\t}\n\n\t#adjust(direction: 1 | -1) {\n\t\tconst ctx = this.#seg();\n\t\tif (!ctx) return;\n\t\tconst { segment } = ctx;\n\t\tconst raw = this.#segmentValues[segment.type];\n\t\tconst isBlank = !raw || raw.replace(/_/g, '') === '';\n\t\tconst num = Number.parseInt((raw || '0').replace(/_/g, '0'), 10) || 0;\n\t\tconst bounds = segmentBounds(\n\t\t\tsegment.type,\n\t\t\tparse(this.#segmentValues),\n\t\t\tthis.#minDate,\n\t\t\tthis.#maxDate\n\t\t);\n\n\t\tlet next: number;\n\t\tif (isBlank) {\n\t\t\tnext = direction === 1 ? bounds.min : bounds.max;\n\t\t} else {\n\t\t\tnext = Math.max(Math.min(bounds.max, num + direction), bounds.min);\n\t\t}\n\n\t\tthis.#segmentValues = {\n\t\t\t...this.#segmentValues,\n\t\t\t[segment.type]: next.toString().padStart(segment.len, '0'),\n\t\t};\n\t\tthis.#segmentSelected = true;\n\t\tthis.#pendingTensDigit = null;\n\t\tthis.#refresh();\n\t}\n\n\t#onCursor(key?: string) {\n\t\tif (!key) return;\n\t\tswitch (key) {\n\t\t\tcase 'right':\n\t\t\t\treturn this.#navigate(1);\n\t\t\tcase 'left':\n\t\t\t\treturn this.#navigate(-1);\n\t\t\tcase 'up':\n\t\t\t\treturn this.#adjust(1);\n\t\t\tcase 'down':\n\t\t\t\treturn this.#adjust(-1);\n\t\t}\n\t}\n\n\t#onKey(char: string | undefined, key: Key) {\n\t\t// Backspace\n\t\tconst isBackspace =\n\t\t\tkey?.name === 'backspace' ||\n\t\t\tkey?.sequence === '\\x7f' ||\n\t\t\tkey?.sequence === '\\b' ||\n\t\t\tchar === '\\x7f' ||\n\t\t\tchar === '\\b';\n\t\tif (isBackspace) {\n\t\t\tthis.inlineError = '';\n\t\t\tconst ctx = this.#seg();\n\t\t\tif (!ctx) return;\n\t\t\tif (!this.#segmentValues[ctx.segment.type].replace(/_/g, '')) {\n\t\t\t\tthis.#navigate(-1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.#segmentValues[ctx.segment.type] = '_'.repeat(ctx.segment.len);\n\t\t\tthis.#segmentSelected = true;\n\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\tthis.#refresh();\n\t\t\treturn;\n\t\t}\n\n\t\t// Tab navigation\n\t\tif (key?.name === 'tab') {\n\t\t\tthis.inlineError = '';\n\t\t\tconst ctx = this.#seg();\n\t\t\tif (!ctx) return;\n\t\t\tconst dir = key.shift ? -1 : 1;\n\t\t\tconst next = ctx.index + dir;\n\t\t\tif (next >= 0 && next < this.#segments.length) {\n\t\t\t\tthis.#cursor.segmentIndex = next;\n\t\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\t\tthis.#segmentSelected = true;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Digit input\n\t\tif (char && /^[0-9]$/.test(char)) {\n\t\t\tconst ctx = this.#seg();\n\t\t\tif (!ctx) return;\n\t\t\tconst { segment } = ctx;\n\t\t\tconst isBlank = !this.#segmentValues[segment.type].replace(/_/g, '');\n\n\t\t\t// Pending tens digit: complete the two-digit entry\n\t\t\tif (this.#segmentSelected && this.#pendingTensDigit !== null && !isBlank) {\n\t\t\t\tconst newVal = this.#pendingTensDigit + char;\n\t\t\t\tconst newParts = { ...this.#segmentValues, [segment.type]: newVal };\n\t\t\t\tconst err = this.#validateSegment(newParts, segment);\n\t\t\t\tif (err) {\n\t\t\t\t\tthis.inlineError = err;\n\t\t\t\t\tthis.#pendingTensDigit = null;\n\t\t\t\t\tthis.#segmentSelected = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.inlineError = '';\n\t\t\t\tthis.#segmentValues[segment.type] = newVal;\n\t\t\t\tthis.#pendingTensDigit = null;\n\t\t\t\tthis.#segmentSelected = false;\n\t\t\t\tthis.#refresh();\n\t\t\t\tif (ctx.index < this.#segments.length - 1) {\n\t\t\t\t\tthis.#cursor.segmentIndex = ctx.index + 1;\n\t\t\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\t\t\tthis.#segmentSelected = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Clear-on-type: typing into a selected filled segment clears it first\n\t\t\tif (this.#segmentSelected && !isBlank) {\n\t\t\t\tthis.#segmentValues[segment.type] = '_'.repeat(segment.len);\n\t\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\t}\n\t\t\tthis.#segmentSelected = false;\n\t\t\tthis.#pendingTensDigit = null;\n\n\t\t\tconst display = this.#segmentValues[segment.type];\n\t\t\tconst firstBlank = display.indexOf('_');\n\t\t\tconst pos =\n\t\t\t\tfirstBlank >= 0 ? firstBlank : Math.min(this.#cursor.positionInSegment, segment.len - 1);\n\t\t\tif (pos < 0 || pos >= segment.len) return;\n\n\t\t\tlet newVal = display.slice(0, pos) + char + display.slice(pos + 1);\n\n\t\t\t// Smart digit placement\n\t\t\tlet shouldStaySelected = false;\n\t\t\tif (pos === 0 && display === '__' && (segment.type === 'month' || segment.type === 'day')) {\n\t\t\t\tconst digit = Number.parseInt(char, 10);\n\t\t\t\tnewVal = `0${char}`;\n\t\t\t\tshouldStaySelected = digit <= (segment.type === 'month' ? 1 : 2);\n\t\t\t}\n\t\t\tif (segment.type === 'year') {\n\t\t\t\tconst digits = display.replace(/_/g, '');\n\t\t\t\tnewVal = (digits + char).padStart(segment.len, '_');\n\t\t\t}\n\n\t\t\tif (!newVal.includes('_')) {\n\t\t\t\tconst newParts = { ...this.#segmentValues, [segment.type]: newVal };\n\t\t\t\tconst err = this.#validateSegment(newParts, segment);\n\t\t\t\tif (err) {\n\t\t\t\t\tthis.inlineError = err;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.inlineError = '';\n\n\t\t\tthis.#segmentValues[segment.type] = newVal;\n\n\t\t\t// Clamp only when the current segment is fully entered\n\t\t\tconst parsed = !newVal.includes('_') ? validParts(this.#segmentValues) : undefined;\n\t\t\tif (parsed) {\n\t\t\t\tconst { year, month } = parsed;\n\t\t\t\tconst maxDay = daysInMonth(year, month);\n\t\t\t\tthis.#segmentValues = {\n\t\t\t\t\tyear: String(Math.max(0, Math.min(9999, year))).padStart(4, '0'),\n\t\t\t\t\tmonth: String(Math.max(1, Math.min(12, month))).padStart(2, '0'),\n\t\t\t\t\tday: String(Math.max(1, Math.min(maxDay, parsed.day))).padStart(2, '0'),\n\t\t\t\t};\n\t\t\t}\n\t\t\tthis.#refresh();\n\n\t\t\t// Advance cursor\n\t\t\tconst nextBlank = newVal.indexOf('_');\n\t\t\tif (shouldStaySelected) {\n\t\t\t\tthis.#segmentSelected = true;\n\t\t\t\tthis.#pendingTensDigit = char;\n\t\t\t} else if (nextBlank >= 0) {\n\t\t\t\tthis.#cursor.positionInSegment = nextBlank;\n\t\t\t} else if (firstBlank >= 0 && ctx.index < this.#segments.length - 1) {\n\t\t\t\tthis.#cursor.segmentIndex = ctx.index + 1;\n\t\t\t\tthis.#cursor.positionInSegment = 0;\n\t\t\t\tthis.#segmentSelected = true;\n\t\t\t} else {\n\t\t\t\tthis.#cursor.positionInSegment = Math.min(pos + 1, segment.len - 1);\n\t\t\t}\n\t\t}\n\t}\n\n\t#validateSegment(parts: DateParts, seg: SegmentConfig): string | undefined {\n\t\tconst { month, day } = parse(parts);\n\t\tif (seg.type === 'month' && (month < 0 || month > 12)) {\n\t\t\treturn settings.date.messages.invalidMonth;\n\t\t}\n\t\tif (seg.type === 'day' && (day < 0 || day > 31)) {\n\t\t\treturn settings.date.messages.invalidDay(31, 'any month');\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t#onFinalize(opts: DateOptions) {\n\t\tconst { year, month, day } = parse(this.#segmentValues);\n\t\tif (year && month && day) {\n\t\t\tconst maxDay = daysInMonth(year, month);\n\t\t\tthis.#segmentValues = {\n\t\t\t\t...this.#segmentValues,\n\t\t\t\tday: String(Math.min(day, maxDay)).padStart(2, '0'),\n\t\t\t};\n\t\t}\n\t\tthis.value = toDate(this.#segmentValues) ?? opts.defaultValue ?? undefined;\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface GroupMultiSelectOptions<T extends { value: any }>\n\textends PromptOptions<T['value'][], GroupMultiSelectPrompt<T>> {\n\toptions: Record<string, T[]>;\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n\tselectableGroups?: boolean;\n}\nexport default class GroupMultiSelectPrompt<T extends { value: any }> extends Prompt<T['value'][]> {\n\toptions: (T & { group: string | boolean })[];\n\tcursor = 0;\n\t#selectableGroups: boolean;\n\n\tgetGroupItems(group: string): T[] {\n\t\treturn this.options.filter((o) => o.group === group);\n\t}\n\n\tisGroupSelected(group: string) {\n\t\tconst items = this.getGroupItems(group);\n\t\tconst value = this.value;\n\t\tif (value === undefined) {\n\t\t\treturn false;\n\t\t}\n\t\treturn items.every((i) => value.includes(i.value));\n\t}\n\n\tprivate toggleValue() {\n\t\tconst item = this.options[this.cursor];\n\t\tif (this.value === undefined) {\n\t\t\tthis.value = [];\n\t\t}\n\t\tif (item.group === true) {\n\t\t\tconst group = item.value;\n\t\t\tconst groupedItems = this.getGroupItems(group);\n\t\t\tif (this.isGroupSelected(group)) {\n\t\t\t\tthis.value = this.value.filter(\n\t\t\t\t\t(v: string) => groupedItems.findIndex((i) => i.value === v) === -1\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.value = [...this.value, ...groupedItems.map((i) => i.value)];\n\t\t\t}\n\t\t\tthis.value = Array.from(new Set(this.value));\n\t\t} else {\n\t\t\tconst selected = this.value.includes(item.value);\n\t\t\tthis.value = selected\n\t\t\t\t? this.value.filter((v: T['value']) => v !== item.value)\n\t\t\t\t: [...this.value, item.value];\n\t\t}\n\t}\n\n\tconstructor(opts: GroupMultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\t\tconst { options } = opts;\n\t\tthis.#selectableGroups = opts.selectableGroups !== false;\n\t\tthis.options = Object.entries(options).flatMap(([key, option]) => [\n\t\t\t{ value: key, group: true, label: key },\n\t\t\t...option.map((opt) => ({ ...opt, group: key })),\n\t\t]) as any;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\tthis.#selectableGroups ? 0 : 1\n\t\t);\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up': {\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right': {\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import { findCursor } from '../utils/cursor.js';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\ninterface OptionLike {\n\tvalue: any;\n\tdisabled?: boolean;\n}\n\nexport interface MultiSelectOptions<T extends OptionLike>\n\textends PromptOptions<T['value'][], MultiSelectPrompt<T>> {\n\toptions: T[];\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class MultiSelectPrompt<T extends OptionLike> extends Prompt<T['value'][]> {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value(): T['value'] {\n\t\treturn this.options[this.cursor].value;\n\t}\n\n\tprivate get _enabledOptions(): T[] {\n\t\treturn this.options.filter((option) => option.disabled !== true);\n\t}\n\n\tprivate toggleAll() {\n\t\tconst enabledOptions = this._enabledOptions;\n\t\tconst allSelected = this.value !== undefined && this.value.length === enabledOptions.length;\n\t\tthis.value = allSelected ? [] : enabledOptions.map((v) => v.value);\n\t}\n\n\tprivate toggleInvert() {\n\t\tconst value = this.value;\n\t\tif (!value) {\n\t\t\treturn;\n\t\t}\n\t\tconst notSelected = this._enabledOptions.filter((v) => !value.includes(v.value));\n\t\tthis.value = notSelected.map((v) => v.value);\n\t}\n\n\tprivate toggleValue() {\n\t\tif (this.value === undefined) {\n\t\t\tthis.value = [];\n\t\t}\n\t\tconst selected = this.value.includes(this._value);\n\t\tthis.value = selected\n\t\t\t? this.value.filter((value) => value !== this._value)\n\t\t\t: [...this.value, this._value];\n\t}\n\n\tconstructor(opts: MultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tconst cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\t0\n\t\t);\n\t\tthis.cursor = this.options[cursor].disabled ? findCursor<T>(cursor, 1, this.options) : cursor;\n\t\tthis.on('key', (char) => {\n\t\t\tif (char === 'a') {\n\t\t\t\tthis.toggleAll();\n\t\t\t}\n\t\t\tif (char === 'i') {\n\t\t\t\tthis.toggleInvert();\n\t\t\t}\n\t\t});\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = findCursor<T>(this.cursor, -1, this.options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = findCursor<T>(this.cursor, 1, this.options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import { styleText } from 'node:util';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface PasswordOptions extends PromptOptions<string, PasswordPrompt> {\n\tmask?: string;\n}\nexport default class PasswordPrompt extends Prompt<string> {\n\tprivate _mask = '•';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tget masked() {\n\t\treturn this.userInput.replaceAll(/./g, this._mask);\n\t}\n\tget userInputWithCursor() {\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\treturn this.masked;\n\t\t}\n\t\tconst userInput = this.userInput;\n\t\tif (this.cursor >= userInput.length) {\n\t\t\treturn `${this.masked}${styleText(['inverse', 'hidden'], '_')}`;\n\t\t}\n\t\tconst masked = this.masked;\n\t\tconst s1 = masked.slice(0, this.cursor);\n\t\tconst s2 = masked.slice(this.cursor);\n\t\treturn `${s1}${styleText('inverse', s2[0])}${s2.slice(1)}`;\n\t}\n\tclear() {\n\t\tthis._clearUserInput();\n\t}\n\tconstructor({ mask, ...opts }: PasswordOptions) {\n\t\tsuper(opts);\n\t\tthis._mask = mask ?? '•';\n\t\tthis.on('userInput', (input) => {\n\t\t\tthis._setValue(input);\n\t\t});\n\t}\n}\n", "import { findCursor } from '../utils/cursor.js';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface SelectOptions<T extends { value: any; disabled?: boolean }>\n\textends PromptOptions<T['value'], SelectPrompt<T>> {\n\toptions: T[];\n\tinitialValue?: T['value'];\n}\nexport default class SelectPrompt<T extends { value: any; disabled?: boolean }> extends Prompt<\n\tT['value']\n> {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _selectedValue() {\n\t\treturn this.options[this.cursor];\n\t}\n\n\tprivate changeValue() {\n\t\tthis.value = this._selectedValue.value;\n\t}\n\n\tconstructor(opts: SelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\n\t\tconst initialCursor = this.options.findIndex(({ value }) => value === opts.initialValue);\n\t\tconst cursor = initialCursor === -1 ? 0 : initialCursor;\n\t\tthis.cursor = this.options[cursor].disabled ? findCursor<T>(cursor, 1, this.options) : cursor;\n\t\tthis.changeValue();\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = findCursor<T>(this.cursor, -1, this.options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = findCursor<T>(this.cursor, 1, this.options);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.changeValue();\n\t\t});\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface SelectKeyOptions<T extends { value: string }>\n\textends PromptOptions<T['value'], SelectKeyPrompt<T>> {\n\toptions: T[];\n\tcaseSensitive?: boolean;\n}\nexport default class SelectKeyPrompt<T extends { value: string }> extends Prompt<T['value']> {\n\toptions: T[];\n\tcursor = 0;\n\n\tconstructor(opts: SelectKeyOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tconst caseSensitive = opts.caseSensitive === true;\n\t\tconst keys = this.options.map(({ value: [initial] }) => {\n\t\t\treturn caseSensitive ? initial : initial?.toLowerCase();\n\t\t});\n\t\tthis.cursor = Math.max(keys.indexOf(opts.initialValue), 0);\n\n\t\tthis.on('key', (key, keyInfo) => {\n\t\t\tif (!key) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst casedKey = caseSensitive && keyInfo.shift ? key.toUpperCase() : key;\n\t\t\tif (!keys.includes(casedKey)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = this.options.find(({ value: [initial] }) => {\n\t\t\t\treturn caseSensitive ? initial === casedKey : initial?.toLowerCase() === key;\n\t\t\t});\n\t\t\tif (value) {\n\t\t\t\tthis.value = value.value;\n\t\t\t\tthis.state = 'submit';\n\t\t\t\tthis.emit('submit');\n\t\t\t}\n\t\t});\n\t}\n}\n", "import { styleText } from 'node:util';\nimport Prompt, { type PromptOptions } from './prompt.js';\n\nexport interface TextOptions extends PromptOptions<string, TextPrompt> {\n\tplaceholder?: string;\n\tdefaultValue?: string;\n}\n\nexport default class TextPrompt extends Prompt<string> {\n\tget userInputWithCursor() {\n\t\tif (this.state === 'submit') {\n\t\t\treturn this.userInput;\n\t\t}\n\t\tconst userInput = this.userInput;\n\t\tif (this.cursor >= userInput.length) {\n\t\t\treturn `${this.userInput}█`;\n\t\t}\n\t\tconst s1 = userInput.slice(0, this.cursor);\n\t\tconst [s2, ...s3] = userInput.slice(this.cursor);\n\t\treturn `${s1}${styleText('inverse', s2)}${s3.join('')}`;\n\t}\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tconstructor(opts: TextOptions) {\n\t\tsuper({\n\t\t\t...opts,\n\t\t\tinitialUserInput: opts.initialUserInput ?? opts.initialValue,\n\t\t});\n\n\t\tthis.on('userInput', (input) => {\n\t\t\tthis._setValue(input);\n\t\t});\n\t\tthis.on('finalize', () => {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.value = opts.defaultValue;\n\t\t\t}\n\t\t\tif (this.value === undefined) {\n\t\t\t\tthis.value = '';\n\t\t\t}\n\t\t});\n\t}\n}\n", "import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n", "import type { Readable, Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport type { State } from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nexport const unicode = isUnicodeSupported();\nexport const isCI = (): boolean => process.env.CI === 'true';\nexport const isTTY = (output: Writable): boolean => {\n\treturn (output as Writable & { isTTY?: boolean }).isTTY === true;\n};\nexport const unicodeOr = (c: string, fallback: string) => (unicode ? c : fallback);\nexport const S_STEP_ACTIVE = unicodeOr('◆', '*');\nexport const S_STEP_CANCEL = unicodeOr('■', 'x');\nexport const S_STEP_ERROR = unicodeOr('▲', 'x');\nexport const S_STEP_SUBMIT = unicodeOr('◇', 'o');\n\nexport const S_BAR_START = unicodeOr('┌', 'T');\nexport const S_BAR = unicodeOr('│', '|');\nexport const S_BAR_END = unicodeOr('└', '—');\nexport const S_BAR_START_RIGHT = unicodeOr('┐', 'T');\nexport const S_BAR_END_RIGHT = unicodeOr('┘', '—');\n\nexport const S_RADIO_ACTIVE = unicodeOr('●', '>');\nexport const S_RADIO_INACTIVE = unicodeOr('○', ' ');\nexport const S_CHECKBOX_ACTIVE = unicodeOr('◻', '[•]');\nexport const S_CHECKBOX_SELECTED = unicodeOr('◼', '[+]');\nexport const S_CHECKBOX_INACTIVE = unicodeOr('◻', '[ ]');\nexport const S_PASSWORD_MASK = unicodeOr('▪', '•');\n\nexport const S_BAR_H = unicodeOr('─', '-');\nexport const S_CORNER_TOP_RIGHT = unicodeOr('╮', '+');\nexport const S_CONNECT_LEFT = unicodeOr('├', '+');\nexport const S_CORNER_BOTTOM_RIGHT = unicodeOr('╯', '+');\nexport const S_CORNER_BOTTOM_LEFT = unicodeOr('╰', '+');\nexport const S_CORNER_TOP_LEFT = unicodeOr('╭', '+');\n\nexport const S_INFO = unicodeOr('●', '•');\nexport const S_SUCCESS = unicodeOr('◆', '*');\nexport const S_WARN = unicodeOr('▲', '!');\nexport const S_ERROR = unicodeOr('■', 'x');\n\nexport const symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn styleText('cyan', S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn styleText('red', S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn styleText('yellow', S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn styleText('green', S_STEP_SUBMIT);\n\t}\n};\n\nexport const symbolBar = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn styleText('cyan', S_BAR);\n\t\tcase 'cancel':\n\t\t\treturn styleText('red', S_BAR);\n\t\tcase 'error':\n\t\t\treturn styleText('yellow', S_BAR);\n\t\tcase 'submit':\n\t\t\treturn styleText('green', S_BAR);\n\t}\n};\n\nexport interface CommonOptions {\n\tinput?: Readable;\n\toutput?: Writable;\n\tsignal?: AbortSignal;\n\twithGuide?: boolean;\n}\n", "import { styleText } from 'node:util';\nimport { getColumns, getRows } from '@clack/core';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport type { CommonOptions } from './common.js';\n\nexport interface LimitOptionsParams<TOption> extends CommonOptions {\n\toptions: TOption[];\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n\tmaxItems?: number;\n\tcolumnPadding?: number;\n\trowPadding?: number;\n}\n\nconst trimLines = (\n\tgroups: Array<string[]>,\n\tinitialLineCount: number,\n\tstartIndex: number,\n\tendIndex: number,\n\tmaxLines: number\n) => {\n\tlet lineCount = initialLineCount;\n\tlet removals = 0;\n\tfor (let i = startIndex; i < endIndex; i++) {\n\t\tconst group = groups[i];\n\t\tlineCount = lineCount - group.length;\n\t\tremovals++;\n\t\tif (lineCount <= maxLines) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn { lineCount, removals };\n};\n\nexport const limitOptions = <TOption>({\n\tcursor,\n\toptions,\n\tstyle,\n\toutput = process.stdout,\n\tmaxItems = Number.POSITIVE_INFINITY,\n\tcolumnPadding = 0,\n\trowPadding = 4,\n}: LimitOptionsParams<TOption>): string[] => {\n\tconst columns = getColumns(output);\n\tconst maxWidth = columns - columnPadding;\n\tconst rows = getRows(output);\n\tconst overflowFormat = styleText('dim', '...');\n\n\tconst outputMaxItems = Math.max(rows - rowPadding, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst computedMaxItems = Math.max(Math.min(maxItems, outputMaxItems), 5);\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= computedMaxItems - 3) {\n\t\tslidingWindowLocation = Math.max(\n\t\t\tMath.min(cursor - computedMaxItems + 3, options.length - computedMaxItems),\n\t\t\t0\n\t\t);\n\t}\n\n\tlet shouldRenderTopEllipsis = computedMaxItems < options.length && slidingWindowLocation > 0;\n\tlet shouldRenderBottomEllipsis =\n\t\tcomputedMaxItems < options.length && slidingWindowLocation + computedMaxItems < options.length;\n\n\tconst slidingWindowLocationEnd = Math.min(\n\t\tslidingWindowLocation + computedMaxItems,\n\t\toptions.length\n\t);\n\tconst lineGroups: Array<string[]> = [];\n\tlet lineCount = 0;\n\tif (shouldRenderTopEllipsis) {\n\t\tlineCount++;\n\t}\n\tif (shouldRenderBottomEllipsis) {\n\t\tlineCount++;\n\t}\n\n\tconst slidingWindowLocationWithEllipsis =\n\t\tslidingWindowLocation + (shouldRenderTopEllipsis ? 1 : 0);\n\tconst slidingWindowLocationEndWithEllipsis =\n\t\tslidingWindowLocationEnd - (shouldRenderBottomEllipsis ? 1 : 0);\n\n\tfor (let i = slidingWindowLocationWithEllipsis; i < slidingWindowLocationEndWithEllipsis; i++) {\n\t\tconst wrappedLines = wrapAnsi(style(options[i], i === cursor), maxWidth, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t}).split('\\n');\n\t\tlineGroups.push(wrappedLines);\n\t\tlineCount += wrappedLines.length;\n\t}\n\n\tif (lineCount > outputMaxItems) {\n\t\tlet precedingRemovals = 0;\n\t\tlet followingRemovals = 0;\n\t\tlet newLineCount = lineCount;\n\t\tconst cursorGroupIndex = cursor - slidingWindowLocationWithEllipsis;\n\t\tconst trimLinesLocal = (startIndex: number, endIndex: number) =>\n\t\t\ttrimLines(lineGroups, newLineCount, startIndex, endIndex, outputMaxItems);\n\n\t\tif (shouldRenderTopEllipsis) {\n\t\t\t({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal(\n\t\t\t\t0,\n\t\t\t\tcursorGroupIndex\n\t\t\t));\n\t\t\tif (newLineCount > outputMaxItems) {\n\t\t\t\t({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal(\n\t\t\t\t\tcursorGroupIndex + 1,\n\t\t\t\t\tlineGroups.length\n\t\t\t\t));\n\t\t\t}\n\t\t} else {\n\t\t\t({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal(\n\t\t\t\tcursorGroupIndex + 1,\n\t\t\t\tlineGroups.length\n\t\t\t));\n\t\t\tif (newLineCount > outputMaxItems) {\n\t\t\t\t({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal(\n\t\t\t\t\t0,\n\t\t\t\t\tcursorGroupIndex\n\t\t\t\t));\n\t\t\t}\n\t\t}\n\n\t\tif (precedingRemovals > 0) {\n\t\t\tshouldRenderTopEllipsis = true;\n\t\t\tlineGroups.splice(0, precedingRemovals);\n\t\t}\n\t\tif (followingRemovals > 0) {\n\t\t\tshouldRenderBottomEllipsis = true;\n\t\t\tlineGroups.splice(lineGroups.length - followingRemovals, followingRemovals);\n\t\t}\n\t}\n\n\tconst result: string[] = [];\n\tif (shouldRenderTopEllipsis) {\n\t\tresult.push(overflowFormat);\n\t}\n\tfor (const lineGroup of lineGroups) {\n\t\tfor (const line of lineGroup) {\n\t\t\tresult.push(line);\n\t\t}\n\t}\n\tif (shouldRenderBottomEllipsis) {\n\t\tresult.push(overflowFormat);\n\t}\n\n\treturn result;\n};\n", "import { styleText } from 'node:util';\nimport { AutocompletePrompt, settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\nimport type { Option } from './select.js';\n\nfunction getLabel<T>(option: Option<T>) {\n\treturn option.label ?? String(option.value ?? '');\n}\n\nfunction getFilteredOption<T>(searchText: string, option: Option<T>): boolean {\n\tif (!searchText) {\n\t\treturn true;\n\t}\n\tconst label = (option.label ?? String(option.value ?? '')).toLowerCase();\n\tconst hint = (option.hint ?? '').toLowerCase();\n\tconst value = String(option.value).toLowerCase();\n\tconst term = searchText.toLowerCase();\n\n\treturn label.includes(term) || hint.includes(term) || value.includes(term);\n}\n\nfunction getSelectedOptions<T>(values: T[], options: Option<T>[]): Option<T>[] {\n\tconst results: Option<T>[] = [];\n\n\tfor (const option of options) {\n\t\tif (values.includes(option.value)) {\n\t\t\tresults.push(option);\n\t\t}\n\t}\n\n\treturn results;\n}\n\ninterface AutocompleteSharedOptions<Value> extends CommonOptions {\n\t/**\n\t * The message to display to the user.\n\t */\n\tmessage: string;\n\t/**\n\t * Available options for the autocomplete prompt.\n\t */\n\toptions: Option<Value>[] | ((this: AutocompletePrompt<Option<Value>>) => Option<Value>[]);\n\t/**\n\t * Maximum number of items to display at once.\n\t */\n\tmaxItems?: number;\n\t/**\n\t * Placeholder text to display when no input is provided.\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Validates the value\n\t */\n\tvalidate?: (value: Value | Value[] | undefined) => string | Error | undefined;\n\t/**\n\t * Custom filter function to match options against search input.\n\t * If not provided, a default filter that matches label, hint, and value is used.\n\t */\n\tfilter?: (search: string, option: Option<Value>) => boolean;\n}\n\nexport interface AutocompleteOptions<Value> extends AutocompleteSharedOptions<Value> {\n\t/**\n\t * The initial selected value.\n\t */\n\tinitialValue?: Value;\n\t/**\n\t * The initial user input\n\t */\n\tinitialUserInput?: string;\n}\n\nexport const autocomplete = <Value>(opts: AutocompleteOptions<Value>) => {\n\tconst prompt = new AutocompletePrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue ? [opts.initialValue] : undefined,\n\t\tinitialUserInput: opts.initialUserInput,\n\t\tplaceholder: opts.placeholder,\n\t\tfilter:\n\t\t\topts.filter ??\n\t\t\t((search: string, opt: Option<Value>) => {\n\t\t\t\treturn getFilteredOption(search, opt);\n\t\t\t}),\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tvalidate: opts.validate,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\t// Title and message display\n\t\t\tconst headings = hasGuide\n\t\t\t\t? [`${styleText('gray', S_BAR)}`, `${symbol(this.state)} ${opts.message}`]\n\t\t\t\t: [`${symbol(this.state)} ${opts.message}`];\n\t\t\tconst userInput = this.userInput;\n\t\t\tconst options = this.options;\n\t\t\tconst placeholder = opts.placeholder;\n\t\t\tconst showPlaceholder = userInput === '' && placeholder !== undefined;\n\t\t\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'disabled') => {\n\t\t\t\tconst label = getLabel(option);\n\t\t\t\tconst hint =\n\t\t\t\t\toption.hint && option.value === this.focusedValue\n\t\t\t\t\t\t? styleText('dim', ` (${option.hint})`)\n\t\t\t\t\t\t: '';\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase 'active':\n\t\t\t\t\t\treturn `${styleText('green', S_RADIO_ACTIVE)} ${label}${hint}`;\n\t\t\t\t\tcase 'inactive':\n\t\t\t\t\t\treturn `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', label)}`;\n\t\t\t\t\tcase 'disabled':\n\t\t\t\t\t\treturn `${styleText('gray', S_RADIO_INACTIVE)} ${styleText(['strikethrough', 'gray'], label)}`;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Handle different states\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\t// Show selected value\n\t\t\t\t\tconst selected = getSelectedOptions(this.selectedValues, options);\n\t\t\t\t\tconst label =\n\t\t\t\t\t\tselected.length > 0 ? ` ${styleText('dim', selected.map(getLabel).join(', '))}` : '';\n\t\t\t\t\tconst submitPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${headings.join('\\n')}\\n${submitPrefix}${label}`;\n\t\t\t\t}\n\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst userInputText = userInput\n\t\t\t\t\t\t? ` ${styleText(['strikethrough', 'dim'], userInput)}`\n\t\t\t\t\t\t: '';\n\t\t\t\t\tconst cancelPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${headings.join('\\n')}\\n${cancelPrefix}${userInputText}`;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconst barStyle = this.state === 'error' ? 'yellow' : 'cyan';\n\t\t\t\t\tconst guidePrefix = hasGuide ? `${styleText(barStyle, S_BAR)} ` : '';\n\t\t\t\t\tconst guidePrefixEnd = hasGuide ? styleText(barStyle, S_BAR_END) : '';\n\t\t\t\t\t// Display cursor position - show plain text in navigation mode\n\t\t\t\t\tlet searchText = '';\n\t\t\t\t\tif (this.isNavigating || showPlaceholder) {\n\t\t\t\t\t\tconst searchTextValue = showPlaceholder ? placeholder : userInput;\n\t\t\t\t\t\tsearchText = searchTextValue !== '' ? ` ${styleText('dim', searchTextValue)}` : '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearchText = ` ${this.userInputWithCursor}`;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show match count if filtered\n\t\t\t\t\tconst matches =\n\t\t\t\t\t\tthis.filteredOptions.length !== options.length\n\t\t\t\t\t\t\t? styleText(\n\t\t\t\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t\t\t\t` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: '';\n\n\t\t\t\t\t// No matches message\n\t\t\t\t\tconst noResults =\n\t\t\t\t\t\tthis.filteredOptions.length === 0 && userInput\n\t\t\t\t\t\t\t? [`${guidePrefix}${styleText('yellow', 'No matches found')}`]\n\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\tconst validationError =\n\t\t\t\t\t\tthis.state === 'error' ? [`${guidePrefix}${styleText('yellow', this.error)}`] : [];\n\n\t\t\t\t\tif (hasGuide) {\n\t\t\t\t\t\theadings.push(`${guidePrefix.trimEnd()}`);\n\t\t\t\t\t}\n\t\t\t\t\theadings.push(\n\t\t\t\t\t\t`${guidePrefix}${styleText('dim', 'Search:')}${searchText}${matches}`,\n\t\t\t\t\t\t...noResults,\n\t\t\t\t\t\t...validationError\n\t\t\t\t\t);\n\n\t\t\t\t\t// Show instructions\n\t\t\t\t\tconst instructions = [\n\t\t\t\t\t\t`${styleText('dim', '↑/↓')} to select`,\n\t\t\t\t\t\t`${styleText('dim', 'Enter:')} confirm`,\n\t\t\t\t\t\t`${styleText('dim', 'Type:')} to search`,\n\t\t\t\t\t];\n\n\t\t\t\t\tconst footers = [`${guidePrefix}${instructions.join(' • ')}`, guidePrefixEnd];\n\n\t\t\t\t\t// Render options with selection\n\t\t\t\t\tconst displayOptions =\n\t\t\t\t\t\tthis.filteredOptions.length === 0\n\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t: limitOptions({\n\t\t\t\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\t\t\t\toptions: this.filteredOptions,\n\t\t\t\t\t\t\t\t\tcolumnPadding: hasGuide ? 3 : 0, // for `| ` when guide is shown\n\t\t\t\t\t\t\t\t\trowPadding: headings.length + footers.length,\n\t\t\t\t\t\t\t\t\tstyle: (option, active) => {\n\t\t\t\t\t\t\t\t\t\treturn opt(\n\t\t\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\t\t\toption.disabled ? 'disabled' : active ? 'active' : 'inactive'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t// Return the formatted prompt\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...headings,\n\t\t\t\t\t\t...displayOptions.map((option) => `${guidePrefix}${option}`),\n\t\t\t\t\t\t...footers,\n\t\t\t\t\t].join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\t// Return the result or cancel symbol\n\treturn prompt.prompt() as Promise<Value | symbol>;\n};\n\n// Type definition for the autocompleteMultiselect component\nexport interface AutocompleteMultiSelectOptions<Value> extends AutocompleteSharedOptions<Value> {\n\t/**\n\t * The initial selected values\n\t */\n\tinitialValues?: Value[];\n\t/**\n\t * If true, at least one option must be selected\n\t */\n\trequired?: boolean;\n}\n\n/**\n * Integrated autocomplete multiselect - combines type-ahead filtering with multiselect in one UI\n */\nexport const autocompleteMultiselect = <Value>(opts: AutocompleteMultiSelectOptions<Value>) => {\n\tconst formatOption = (\n\t\toption: Option<Value>,\n\t\tactive: boolean,\n\t\tselectedValues: Value[],\n\t\tfocusedValue: Value | undefined\n\t) => {\n\t\tconst isSelected = selectedValues.includes(option.value);\n\t\tconst label = option.label ?? String(option.value ?? '');\n\t\tconst hint =\n\t\t\toption.hint && focusedValue !== undefined && option.value === focusedValue\n\t\t\t\t? styleText('dim', ` (${option.hint})`)\n\t\t\t\t: '';\n\t\tconst checkbox = isSelected\n\t\t\t? styleText('green', S_CHECKBOX_SELECTED)\n\t\t\t: styleText('dim', S_CHECKBOX_INACTIVE);\n\n\t\tif (option.disabled) {\n\t\t\treturn `${styleText('gray', S_CHECKBOX_INACTIVE)} ${styleText(['strikethrough', 'gray'], label)}`;\n\t\t}\n\t\tif (active) {\n\t\t\treturn `${checkbox} ${label}${hint}`;\n\t\t}\n\t\treturn `${checkbox} ${styleText('dim', label)}`;\n\t};\n\n\t// Create text prompt which we'll use as foundation\n\tconst prompt = new AutocompletePrompt<Option<Value>>({\n\t\toptions: opts.options,\n\t\tmultiple: true,\n\t\tplaceholder: opts.placeholder,\n\t\tfilter:\n\t\t\topts.filter ??\n\t\t\t((search, opt) => {\n\t\t\t\treturn getFilteredOption(search, opt);\n\t\t\t}),\n\t\tvalidate: () => {\n\t\t\tif (opts.required && prompt.selectedValues.length === 0) {\n\t\t\t\treturn 'Please select at least one item';\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tinitialValue: opts.initialValues,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\t// Title and symbol\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${\n\t\t\t\topts.message\n\t\t\t}\\n`;\n\n\t\t\t// Selection counter\n\t\t\tconst userInput = this.userInput;\n\t\t\tconst placeholder = opts.placeholder;\n\t\t\tconst showPlaceholder = userInput === '' && placeholder !== undefined;\n\n\t\t\t// Search input display\n\t\t\tconst searchText =\n\t\t\t\tthis.isNavigating || showPlaceholder\n\t\t\t\t\t? styleText('dim', showPlaceholder ? placeholder : userInput) // Just show plain text when in navigation mode\n\t\t\t\t\t: this.userInputWithCursor;\n\n\t\t\tconst options = this.options;\n\n\t\t\tconst matches =\n\t\t\t\tthis.filteredOptions.length !== options.length\n\t\t\t\t\t? styleText(\n\t\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t\t` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`\n\t\t\t\t\t\t)\n\t\t\t\t\t: '';\n\n\t\t\t// Render prompt state\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`${this.selectedValues.length} items selected`\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText(\n\t\t\t\t\t\t['strikethrough', 'dim'],\n\t\t\t\t\t\tuserInput\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst barStyle = this.state === 'error' ? 'yellow' : 'cyan';\n\t\t\t\t\tconst guidePrefix = hasGuide ? `${styleText(barStyle, S_BAR)} ` : '';\n\t\t\t\t\tconst guidePrefixEnd = hasGuide ? styleText(barStyle, S_BAR_END) : '';\n\t\t\t\t\t// Instructions\n\t\t\t\t\tconst instructions = [\n\t\t\t\t\t\t`${styleText('dim', '↑/↓')} to navigate`,\n\t\t\t\t\t\t`${styleText('dim', this.isNavigating ? 'Space/Tab:' : 'Tab:')} select`,\n\t\t\t\t\t\t`${styleText('dim', 'Enter:')} confirm`,\n\t\t\t\t\t\t`${styleText('dim', 'Type:')} to search`,\n\t\t\t\t\t];\n\n\t\t\t\t\t// No results message\n\t\t\t\t\tconst noResults =\n\t\t\t\t\t\tthis.filteredOptions.length === 0 && userInput\n\t\t\t\t\t\t\t? [`${guidePrefix}${styleText('yellow', 'No matches found')}`]\n\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\tconst errorMessage =\n\t\t\t\t\t\tthis.state === 'error' ? [`${guidePrefix}${styleText('yellow', this.error)}`] : [];\n\n\t\t\t\t\t// Calculate header and footer line counts for rowPadding\n\t\t\t\t\tconst headerLines = [\n\t\t\t\t\t\t...`${title}${hasGuide ? styleText(barStyle, S_BAR) : ''}`.split('\\n'),\n\t\t\t\t\t\t`${guidePrefix}${styleText('dim', 'Search:')} ${searchText}${matches}`,\n\t\t\t\t\t\t...noResults,\n\t\t\t\t\t\t...errorMessage,\n\t\t\t\t\t];\n\t\t\t\t\tconst footerLines = [`${guidePrefix}${instructions.join(' • ')}`, guidePrefixEnd];\n\n\t\t\t\t\t// Get limited options for display\n\t\t\t\t\tconst displayOptions = limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.filteredOptions,\n\t\t\t\t\t\tstyle: (option, active) =>\n\t\t\t\t\t\t\tformatOption(option, active, this.selectedValues, this.focusedValue),\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\trowPadding: headerLines.length + footerLines.length,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Build the prompt display\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...headerLines,\n\t\t\t\t\t\t...displayOptions.map((option) => `${guidePrefix}${option}`),\n\t\t\t\t\t\t...footerLines,\n\t\t\t\t\t].join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\t// Return the result or cancel symbol\n\treturn prompt.prompt() as Promise<Value[] | symbol>;\n};\n", "import type { Writable } from 'node:stream';\nimport { getColumns, settings } from '@clack/core';\nimport stringWidth from 'fast-string-width';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_BAR_END_RIGHT,\n\tS_BAR_H,\n\tS_BAR_START,\n\tS_BAR_START_RIGHT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n\tS_CORNER_TOP_LEFT,\n\tS_CORNER_TOP_RIGHT,\n} from './common.js';\n\nexport type BoxAlignment = 'left' | 'center' | 'right';\n\ntype BoxSymbols = [topLeft: string, topRight: string, bottomLeft: string, bottomRight: string];\n\nconst roundedSymbols: BoxSymbols = [\n\tS_CORNER_TOP_LEFT,\n\tS_CORNER_TOP_RIGHT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n];\nconst squareSymbols: BoxSymbols = [S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT];\n\nexport interface BoxOptions extends CommonOptions {\n\tcontentAlign?: BoxAlignment;\n\ttitleAlign?: BoxAlignment;\n\twidth?: number | 'auto';\n\ttitlePadding?: number;\n\tcontentPadding?: number;\n\trounded?: boolean;\n\tformatBorder?: (text: string) => string;\n}\n\nfunction getPaddingForLine(\n\tlineLength: number,\n\tinnerWidth: number,\n\tpadding: number,\n\tcontentAlign: BoxAlignment | undefined\n): [number, number] {\n\tlet leftPadding = padding;\n\tlet rightPadding = padding;\n\tif (contentAlign === 'center') {\n\t\tleftPadding = Math.floor((innerWidth - lineLength) / 2);\n\t} else if (contentAlign === 'right') {\n\t\tleftPadding = innerWidth - lineLength - padding;\n\t}\n\n\trightPadding = innerWidth - leftPadding - lineLength;\n\n\treturn [leftPadding, rightPadding];\n}\n\nconst defaultFormatBorder = (text: string) => text;\n\nexport const box = (message = '', title = '', opts?: BoxOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst columns = getColumns(output);\n\tconst borderWidth = 1;\n\tconst borderTotalWidth = borderWidth * 2;\n\tconst titlePadding = opts?.titlePadding ?? 1;\n\tconst contentPadding = opts?.contentPadding ?? 2;\n\tconst width = opts?.width === undefined || opts.width === 'auto' ? 1 : Math.min(1, opts.width);\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst linePrefix = !hasGuide ? '' : `${S_BAR} `;\n\tconst formatBorder = opts?.formatBorder ?? defaultFormatBorder;\n\tconst symbols = (opts?.rounded ? roundedSymbols : squareSymbols).map(formatBorder);\n\tconst hSymbol = formatBorder(S_BAR_H);\n\tconst vSymbol = formatBorder(S_BAR);\n\tconst linePrefixWidth = stringWidth(linePrefix);\n\tconst titleWidth = stringWidth(title);\n\tconst maxBoxWidth = columns - linePrefixWidth;\n\tlet boxWidth = Math.floor(columns * width) - linePrefixWidth;\n\tif (opts?.width === 'auto') {\n\t\tconst lines = message.split('\\n');\n\t\tlet longestLine = titleWidth + titlePadding * 2;\n\t\tfor (const line of lines) {\n\t\t\tconst lineWithPadding = stringWidth(line) + contentPadding * 2;\n\t\t\tif (lineWithPadding > longestLine) {\n\t\t\t\tlongestLine = lineWithPadding;\n\t\t\t}\n\t\t}\n\t\tconst longestLineWidth = longestLine + borderTotalWidth;\n\t\tif (longestLineWidth < boxWidth) {\n\t\t\tboxWidth = longestLineWidth;\n\t\t}\n\t}\n\tif (boxWidth % 2 !== 0) {\n\t\tif (boxWidth < maxBoxWidth) {\n\t\t\tboxWidth++;\n\t\t} else {\n\t\t\tboxWidth--;\n\t\t}\n\t}\n\tconst innerWidth = boxWidth - borderTotalWidth;\n\tconst maxTitleLength = innerWidth - titlePadding * 2;\n\tconst truncatedTitle =\n\t\ttitleWidth > maxTitleLength ? `${title.slice(0, maxTitleLength - 3)}...` : title;\n\tconst [titlePaddingLeft, titlePaddingRight] = getPaddingForLine(\n\t\tstringWidth(truncatedTitle),\n\t\tinnerWidth,\n\t\ttitlePadding,\n\t\topts?.titleAlign\n\t);\n\tconst wrappedMessage = wrapAnsi(message, innerWidth - contentPadding * 2, {\n\t\thard: true,\n\t\ttrim: false,\n\t});\n\toutput.write(\n\t\t`${linePrefix}${symbols[0]}${hSymbol.repeat(titlePaddingLeft)}${truncatedTitle}${hSymbol.repeat(titlePaddingRight)}${symbols[1]}\\n`\n\t);\n\tconst wrappedLines = wrappedMessage.split('\\n');\n\tfor (const line of wrappedLines) {\n\t\tconst [leftLinePadding, rightLinePadding] = getPaddingForLine(\n\t\t\tstringWidth(line),\n\t\t\tinnerWidth,\n\t\t\tcontentPadding,\n\t\t\topts?.contentAlign\n\t\t);\n\t\toutput.write(\n\t\t\t`${linePrefix}${vSymbol}${' '.repeat(leftLinePadding)}${line}${' '.repeat(rightLinePadding)}${vSymbol}\\n`\n\t\t);\n\t}\n\toutput.write(`${linePrefix}${symbols[2]}${hSymbol.repeat(innerWidth)}${symbols[3]}\\n`);\n};\n", "import { styleText } from 'node:util';\nimport { ConfirmPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n} from './common.js';\n\nexport interface ConfirmOptions extends CommonOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n\tvertical?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${symbol(this.state)} `;\n\t\t\tconst titlePrefixBar = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\tconst messageLines = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\ttitlePrefixBar,\n\t\t\t\ttitlePrefix\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${messageLines}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${styleText('dim', value)}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${styleText(['strikethrough', 'dim'], value)}${\n\t\t\t\t\t\thasGuide ? `\\n${styleText('gray', S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${styleText('green', S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', active)}`\n\t\t\t\t\t}${opts.vertical ? (hasGuide ? `\\n${styleText('cyan', S_BAR)} ` : '\\n') : ` ${styleText('dim', '/')} `}${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${styleText('green', S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', inactive)}`\n\t\t\t\t\t}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n", "import { styleText } from 'node:util';\nimport type { DateFormat, State } from '@clack/core';\nimport { DatePrompt, settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\n\nexport type { DateFormat };\n\nexport interface DateOptions extends CommonOptions {\n\tmessage: string;\n\tformat?: DateFormat;\n\tlocale?: string;\n\tdefaultValue?: Date;\n\tinitialValue?: Date;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tvalidate?: (value: Date | undefined) => string | Error | undefined;\n}\n\nexport const date = (opts: DateOptions) => {\n\tconst validate = opts.validate;\n\treturn new DatePrompt({\n\t\t...opts,\n\t\tvalidate(value: Date | undefined) {\n\t\t\tif (value === undefined) {\n\t\t\t\tif (opts.defaultValue !== undefined) return undefined;\n\t\t\t\tif (validate) return validate(value);\n\t\t\t\treturn settings.date.messages.required;\n\t\t\t}\n\t\t\tconst iso = (d: Date) => d.toISOString().slice(0, 10);\n\t\t\tif (opts.minDate && iso(value) < iso(opts.minDate)) {\n\t\t\t\treturn settings.date.messages.afterMin(opts.minDate);\n\t\t\t}\n\t\t\tif (opts.maxDate && iso(value) > iso(opts.maxDate)) {\n\t\t\t\treturn settings.date.messages.beforeMax(opts.maxDate);\n\t\t\t}\n\t\t\tif (validate) return validate(value);\n\t\t\treturn undefined;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = (opts?.withGuide ?? settings.withGuide) !== false;\n\t\t\tconst titlePrefix = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} `;\n\t\t\tconst title = `${titlePrefix}${opts.message}\\n`;\n\n\t\t\tconst state = this.state !== 'initial' ? this.state : 'active';\n\n\t\t\tconst userInput = renderDate(this, state);\n\t\t\tconst value = this.value instanceof Date ? this.formattedValue : '';\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorText = this.error ? ` ${styleText('yellow', this.error)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst barEnd = hasGuide ? styleText('yellow', S_BAR_END) : '';\n\t\t\t\t\treturn `${title.trim()}\\n${bar}${userInput}\\n${barEnd}${errorText}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText('dim', value)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${bar}${valueText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText(['strikethrough', 'dim'], value)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${bar}${valueText}${value.trim() ? `\\n${bar}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst bar = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst barEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\tconst inlineBar = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst inlineError = this.inlineError\n\t\t\t\t\t\t? `\\n${inlineBar}${styleText('yellow', this.inlineError)}`\n\t\t\t\t\t\t: '';\n\t\t\t\t\treturn `${title}${bar}${userInput}${inlineError}\\n${barEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Date | symbol>;\n};\n\nfunction renderDate(prompt: Omit<InstanceType<typeof DatePrompt>, 'prompt'>, state: State): string {\n\tconst parts = prompt.segmentValues;\n\tconst cursor = prompt.segmentCursor;\n\n\tif (state === 'submit' || state === 'cancel') {\n\t\treturn prompt.formattedValue;\n\t}\n\n\tconst sep = styleText('gray', prompt.separator);\n\treturn prompt.segments\n\t\t.map((seg, i) => {\n\t\t\tconst isActive = i === cursor.segmentIndex && !['submit', 'cancel'].includes(state);\n\t\t\tconst label = DEFAULT_LABELS[seg.type];\n\t\t\treturn renderSegment(parts[seg.type], { isActive, label });\n\t\t})\n\t\t.join(sep);\n}\n\ninterface SegmentOptions {\n\tisActive: boolean;\n\tlabel: string;\n}\nfunction renderSegment(value: string, opts: SegmentOptions): string {\n\tconst isBlank = !value || value.replace(/_/g, '') === '';\n\tif (opts.isActive) return styleText('inverse', isBlank ? opts.label : value.replace(/_/g, ' '));\n\tif (isBlank) return styleText('dim', opts.label);\n\treturn value.replace(/_/g, styleText('dim', ' '));\n}\n\nconst DEFAULT_LABELS: Record<'year' | 'month' | 'day', string> = {\n\tyear: 'yyyy',\n\tmonth: 'mm',\n\tday: 'dd',\n};\n", "import { isCancel } from '@clack/core';\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n", "import { styleText } from 'node:util';\nimport { GroupMultiSelectPrompt, settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_ACTIVE,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tsymbol,\n} from './common.js';\nimport type { Option } from './select.js';\n\nexport interface GroupMultiSelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n\tgroupSpacing?: number;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true, groupSpacing = 0 } = opts;\n\tconst opt = (\n\t\toption: Option<Value> & { group: string | boolean },\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: (Option<Value> & { group: string | boolean })[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof option.group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && next && next.group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\t\tlet spacingPrefix = '';\n\t\tif (groupSpacing > 0 && !isItem) {\n\t\t\tconst spacingPrefixText = `\\n${styleText('cyan', S_BAR)}`;\n\t\t\tspacingPrefix = `${spacingPrefixText.repeat(groupSpacing - 1)}${spacingPrefixText} `;\n\t\t}\n\n\t\tif (state === 'active') {\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${styleText('cyan', S_CHECKBOX_ACTIVE)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${spacingPrefix}${prefix}${styleText('cyan', S_CHECKBOX_ACTIVE)} ${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${spacingPrefix}${prefix}${styleText('green', S_CHECKBOX_SELECTED)} ${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox =\n\t\t\t\tisItem || selectableGroups ? styleText('green', S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${selectedCheckbox} ${styleText('dim', label)}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${styleText(['strikethrough', 'dim'], label)}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${styleText('green', S_CHECKBOX_SELECTED)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${styleText('dim', label)}`;\n\t\t}\n\t\tconst unselectedCheckbox =\n\t\t\tisItem || selectableGroups ? styleText('dim', S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${unselectedCheckbox} ${styleText('dim', label)}`;\n\t};\n\tconst required = opts.required ?? true;\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValues: opts.initialValues,\n\t\trequired,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[] | undefined) {\n\t\t\tif (required && (selected === undefined || selected.length === 0))\n\t\t\t\treturn `Please select at least one option.\\n${styleText(\n\t\t\t\t\t'reset',\n\t\t\t\t\tstyleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText(\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t\tstyleText(['bgWhite', 'inverse'], ' enter ')\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ?? [];\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst selectedOptions = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'));\n\t\t\t\t\tconst optionsText =\n\t\t\t\t\t\tselectedOptions.length === 0 ? '' : ` ${selectedOptions.join(styleText('dim', ', '))}`;\n\t\t\t\t\treturn `${title}${hasGuide ? styleText('gray', S_BAR) : ''}${optionsText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(styleText('dim', ', '));\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${\n\t\t\t\t\t\tlabel.trim() ? `${label}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0\n\t\t\t\t\t\t\t\t? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}`\n\t\t\t\t\t\t\t\t: ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('yellow', S_BAR)} ` : ''}${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tvalue.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${hasGuide ? `${styleText('yellow', S_BAR)} ` : ''}`)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst optionsText = this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tvalue.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tlet optionText = '';\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\toptionText = opt(\n\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\tselected ? 'group-active-selected' : 'group-active',\n\t\t\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (active && selected) {\n\t\t\t\t\t\t\t\toptionText = opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t} else if (selected) {\n\t\t\t\t\t\t\t\toptionText = opt(option, 'selected', options);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptionText = opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst prefix = i !== 0 && !optionText.startsWith('\\n') ? ' ' : '';\n\t\t\t\t\t\t\treturn `${prefix}${optionText}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${hasGuide ? styleText('cyan', S_BAR) : ''}`);\n\t\t\t\t\tconst optionsPrefix = optionsText.startsWith('\\n') ? '' : ' ';\n\t\t\t\t\treturn `${title}${hasGuide ? styleText('cyan', S_BAR) : ''}${optionsPrefix}${optionsText}\\n${\n\t\t\t\t\t\thasGuide ? styleText('cyan', S_BAR_END) : ''\n\t\t\t\t\t}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n", "import { styleText } from 'node:util';\nimport { settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_ERROR,\n\tS_INFO,\n\tS_STEP_SUBMIT,\n\tS_SUCCESS,\n\tS_WARN,\n} from './common.js';\n\nexport interface LogMessageOptions extends CommonOptions {\n\tsymbol?: string;\n\tspacing?: number;\n\tsecondarySymbol?: string;\n}\n\nexport const log = {\n\tmessage: (\n\t\tmessage: string | string[] = [],\n\t\t{\n\t\t\tsymbol = styleText('gray', S_BAR),\n\t\t\tsecondarySymbol = styleText('gray', S_BAR),\n\t\t\toutput = process.stdout,\n\t\t\tspacing = 1,\n\t\t\twithGuide,\n\t\t}: LogMessageOptions = {}\n\t) => {\n\t\tconst parts: string[] = [];\n\t\tconst hasGuide = withGuide ?? settings.withGuide;\n\t\tconst spacingString = !hasGuide ? '' : secondarySymbol;\n\t\tconst prefix = !hasGuide ? '' : `${symbol} `;\n\t\tconst secondaryPrefix = !hasGuide ? '' : `${secondarySymbol} `;\n\n\t\tfor (let i = 0; i < spacing; i++) {\n\t\t\tparts.push(spacingString);\n\t\t}\n\n\t\tconst messageParts = Array.isArray(message) ? message : message.split('\\n');\n\t\tif (messageParts.length > 0) {\n\t\t\tconst [firstLine, ...lines] = messageParts;\n\t\t\tif (firstLine.length > 0) {\n\t\t\t\tparts.push(`${prefix}${firstLine}`);\n\t\t\t} else {\n\t\t\t\tparts.push(hasGuide ? symbol : '');\n\t\t\t}\n\t\t\tfor (const ln of lines) {\n\t\t\t\tif (ln.length > 0) {\n\t\t\t\t\tparts.push(`${secondaryPrefix}${ln}`);\n\t\t\t\t} else {\n\t\t\t\t\tparts.push(hasGuide ? secondarySymbol : '');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\toutput.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('blue', S_INFO) });\n\t},\n\tsuccess: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('green', S_SUCCESS) });\n\t},\n\tstep: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('green', S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('yellow', S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.warn(message, opts);\n\t},\n\terror: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('red', S_ERROR) });\n\t},\n};\n", "import type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, S_BAR_START } from './common.js';\n\nexport const cancel = (message = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR_END)} ` : '';\n\toutput.write(`${prefix}${styleText('red', message)}\\n\\n`);\n};\n\nexport const intro = (title = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR_START)} ` : '';\n\toutput.write(`${prefix}${title}\\n`);\n};\n\nexport const outro = (message = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR)}\\n${styleText('gray', S_BAR_END)} ` : '';\n\toutput.write(`${prefix}${message}\\n\\n`);\n};\n", "import { styleText } from 'node:util';\nimport { MultiSelectPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_ACTIVE,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tsymbol,\n\tsymbolBar,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\nimport type { Option } from './select.js';\n\nexport interface MultiSelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nconst computeLabel = (label: string, format: (text: string) => string) => {\n\treturn label\n\t\t.split('\\n')\n\t\t.map((line) => format(line))\n\t\t.join('\\n');\n};\n\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled'\n\t\t\t| 'disabled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'disabled') {\n\t\t\treturn `${styleText('gray', S_CHECKBOX_INACTIVE)} ${computeLabel(label, (str) => styleText(['strikethrough', 'gray'], str))}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint ?? 'disabled'})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${styleText('cyan', S_CHECKBOX_ACTIVE)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${styleText('green', S_CHECKBOX_SELECTED)} ${computeLabel(label, (text) => styleText('dim', text))}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${computeLabel(label, (text) => styleText(['strikethrough', 'dim'], text))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${styleText('green', S_CHECKBOX_SELECTED)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t}\n\t\treturn `${styleText('dim', S_CHECKBOX_INACTIVE)} ${computeLabel(label, (text) => styleText('dim', text))}`;\n\t};\n\tconst required = opts.required ?? true;\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValues: opts.initialValues,\n\t\trequired,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[] | undefined) {\n\t\t\tif (required && (selected === undefined || selected.length === 0))\n\t\t\t\treturn `Please select at least one option.\\n${styleText(\n\t\t\t\t\t'reset',\n\t\t\t\t\tstyleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText(\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t\tstyleText('bgWhite', styleText('inverse', ' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst wrappedMessage = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\thasGuide ? `${symbolBar(this.state)} ` : '',\n\t\t\t\t`${symbol(this.state)} `\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${wrappedMessage}\\n`;\n\t\t\tconst value = this.value ?? [];\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tif (option.disabled) {\n\t\t\t\t\treturn opt(option, 'disabled');\n\t\t\t\t}\n\t\t\t\tconst selected = value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitText =\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(styleText('dim', ', ')) || styleText('dim', 'none');\n\t\t\t\t\tconst wrappedSubmitText = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\tsubmitText,\n\t\t\t\t\t\thasGuide ? `${styleText('gray', S_BAR)} ` : ''\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedSubmitText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(styleText('dim', ', '));\n\t\t\t\t\tif (label.trim() === '') {\n\t\t\t\t\t\treturn `${title}${styleText('gray', S_BAR)}`;\n\t\t\t\t\t}\n\t\t\t\t\tconst wrappedLabel = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\thasGuide ? `${styleText('gray', S_BAR)} ` : ''\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLabel}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0\n\t\t\t\t\t\t\t\t? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}`\n\t\t\t\t\t\t\t\t: ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (error message + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = footer.split('\\n').length + 1; // footer + trailing newline\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${hasGuide ? styleText('cyan', S_BAR_END) : ''}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n", "import process from 'node:process';\nimport type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { getColumns, settings } from '@clack/core';\nimport stringWidth from 'fast-string-width';\nimport { type Options as WrapAnsiOptions, wrapAnsi } from 'fast-wrap-ansi';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_H,\n\tS_CONNECT_LEFT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n\tS_CORNER_TOP_RIGHT,\n\tS_STEP_SUBMIT,\n} from './common.js';\n\ntype FormatFn = (line: string) => string;\nexport interface NoteOptions extends CommonOptions {\n\tformat?: FormatFn;\n}\n\nconst defaultNoteFormatter = (line: string): string => styleText('dim', line);\n\nconst wrapWithFormat = (message: string, width: number, format: FormatFn): string => {\n\tconst opts: WrapAnsiOptions = {\n\t\thard: true,\n\t\ttrim: false,\n\t};\n\tconst wrapMsg = wrapAnsi(message, width, opts).split('\\n');\n\tconst maxWidthNormal = wrapMsg.reduce((sum, ln) => Math.max(stringWidth(ln), sum), 0);\n\tconst maxWidthFormat = wrapMsg.map(format).reduce((sum, ln) => Math.max(stringWidth(ln), sum), 0);\n\tconst wrapWidth = width - (maxWidthFormat - maxWidthNormal);\n\treturn wrapAnsi(message, wrapWidth, opts);\n};\n\nexport const note = (message = '', title = '', opts?: NoteOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst format = opts?.format ?? defaultNoteFormatter;\n\tconst wrapMsg = wrapWithFormat(message, getColumns(output) - 6, format);\n\tconst lines = ['', ...wrapMsg.split('\\n').map(format), ''];\n\tconst titleLen = stringWidth(title);\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst width = stringWidth(ln);\n\t\t\t\treturn width > sum ? width : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${styleText('gray', S_BAR)} ${ln}${' '.repeat(len - stringWidth(ln))}${styleText('gray', S_BAR)}`\n\t\t)\n\t\t.join('\\n');\n\tconst leadingBorder = hasGuide ? `${styleText('gray', S_BAR)}\\n` : '';\n\tconst bottomLeft = hasGuide ? S_CONNECT_LEFT : S_CORNER_BOTTOM_LEFT;\n\toutput.write(\n\t\t`${leadingBorder}${styleText('green', S_STEP_SUBMIT)} ${styleText('reset', title)} ${styleText(\n\t\t\t'gray',\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${styleText('gray', bottomLeft + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n", "import { styleText } from 'node:util';\nimport { PasswordPrompt, settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, S_PASSWORD_MASK, symbol } from './common.js';\n\nexport interface PasswordOptions extends CommonOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n\tclearOnError?: boolean;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst userInput = this.userInputWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorPrefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst errorPrefixEnd = hasGuide ? `${styleText('yellow', S_BAR_END)} ` : '';\n\t\t\t\t\tconst maskedText = masked ?? '';\n\t\t\t\t\tif (opts.clearOnError) {\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t}\n\t\t\t\t\treturn `${title.trim()}\\n${errorPrefix}${maskedText}\\n${errorPrefixEnd}${styleText('yellow', this.error)}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst maskedText = masked ? styleText('dim', masked) : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${maskedText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst maskedText = masked ? styleText(['strikethrough', 'dim'], masked) : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${maskedText}${\n\t\t\t\t\t\tmasked && hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${userInput}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n", "import { existsSync, lstatSync, readdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { autocomplete } from './autocomplete.js';\nimport type { CommonOptions } from './common.js';\n\nexport interface PathOptions extends CommonOptions {\n\troot?: string;\n\tdirectory?: boolean;\n\tinitialValue?: string;\n\tmessage: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n}\n\nexport const path = (opts: PathOptions) => {\n\tconst validate = opts.validate;\n\n\treturn autocomplete({\n\t\t...opts,\n\t\tinitialUserInput: opts.initialValue ?? opts.root ?? process.cwd(),\n\t\tmaxItems: 5,\n\t\tvalidate(value) {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\t// Shouldn't ever happen since we don't enable `multiple: true`\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (!value) {\n\t\t\t\treturn 'Please select a path';\n\t\t\t}\n\t\t\tif (validate) {\n\t\t\t\treturn validate(value);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\toptions() {\n\t\t\tconst userInput = this.userInput;\n\t\t\tif (userInput === '') {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tlet searchPath: string;\n\n\t\t\t\tif (!existsSync(userInput)) {\n\t\t\t\t\tsearchPath = dirname(userInput);\n\t\t\t\t} else {\n\t\t\t\t\tconst stat = lstatSync(userInput);\n\t\t\t\t\tif (stat.isDirectory() && (!opts.directory || userInput.endsWith('/'))) {\n\t\t\t\t\t\tsearchPath = userInput;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearchPath = dirname(userInput);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Strip trailing slash so startsWith matches the directory itself among its siblings\n\t\t\t\tconst prefix =\n\t\t\t\t\tuserInput.length > 1 && userInput.endsWith('/') ? userInput.slice(0, -1) : userInput;\n\n\t\t\t\tconst items = readdirSync(searchPath)\n\t\t\t\t\t.map((item) => {\n\t\t\t\t\t\tconst path = join(searchPath, item);\n\t\t\t\t\t\tconst stats = lstatSync(path);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tname: item,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tisDirectory: stats.isDirectory(),\n\t\t\t\t\t\t};\n\t\t\t\t\t})\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t({ path, isDirectory }) => path.startsWith(prefix) && (isDirectory || !opts.directory)\n\t\t\t\t\t);\n\n\t\t\t\treturn items.map((item) => ({\n\t\t\t\t\tvalue: item.path,\n\t\t\t\t}));\n\t\t\t} catch (_e) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t});\n};\n", "import { styleText } from 'node:util';\nimport { block, getColumns, settings } from '@clack/core';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport {\n\ttype CommonOptions,\n\tisCI as isCIFn,\n\tS_BAR,\n\tS_STEP_CANCEL,\n\tS_STEP_ERROR,\n\tS_STEP_SUBMIT,\n\tunicode,\n} from './common.js';\n\nexport interface SpinnerOptions extends CommonOptions {\n\tindicator?: 'dots' | 'timer';\n\tonCancel?: () => void;\n\tcancelMessage?: string;\n\terrorMessage?: string;\n\tframes?: string[];\n\tdelay?: number;\n\tstyleFrame?: (frame: string) => string;\n}\n\nexport interface SpinnerResult {\n\tstart(msg?: string): void;\n\tstop(msg?: string): void;\n\tcancel(msg?: string): void;\n\terror(msg?: string): void;\n\tmessage(msg?: string): void;\n\tclear(): void;\n\treadonly isCancelled: boolean;\n}\n\nconst defaultStyleFn: SpinnerOptions['styleFrame'] = (frame) => styleText('magenta', frame);\n\nexport const spinner = ({\n\tindicator = 'dots',\n\tonCancel,\n\toutput = process.stdout,\n\tcancelMessage,\n\terrorMessage,\n\tframes = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'],\n\tdelay = unicode ? 80 : 120,\n\tsignal,\n\t...opts\n}: SpinnerOptions = {}): SpinnerResult => {\n\tconst isCI = isCIFn();\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet isCancelled = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined;\n\tlet _origin: number = performance.now();\n\tconst columns = getColumns(output);\n\tconst styleFn = opts?.styleFrame ?? defaultStyleFn;\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg =\n\t\t\tcode > 1\n\t\t\t\t? (errorMessage ?? settings.messages.error)\n\t\t\t\t: (cancelMessage ?? settings.messages.cancel);\n\t\tisCancelled = code === 1;\n\t\tif (isSpinnerActive) {\n\t\t\t_stop(msg, code);\n\t\t\tif (isCancelled && typeof onCancel === 'function') {\n\t\t\t\tonCancel();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', signalEventHandler);\n\t\t}\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\n\t\tif (signal) {\n\t\t\tsignal.removeEventListener('abort', signalEventHandler);\n\t\t}\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) output.write('\\n');\n\t\tconst wrapped = wrapAnsi(_prevMessage, columns, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t});\n\t\tconst prevLines = wrapped.split('\\n');\n\t\tif (prevLines.length > 1) {\n\t\t\toutput.write(cursor.up(prevLines.length - 1));\n\t\t}\n\t\toutput.write(cursor.to(0));\n\t\toutput.write(erase.down());\n\t};\n\n\tconst removeTrailingDots = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block({ output });\n\t\t_message = removeTrailingDots(msg);\n\t\t_origin = performance.now();\n\t\tif (hasGuide) {\n\t\t\toutput.write(`${styleText('gray', S_BAR)}\\n`);\n\t\t}\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = styleFn(frames[frameIndex]);\n\t\t\tlet outputMessage: string;\n\n\t\t\tif (isCI) {\n\t\t\t\toutputMessage = `${frame} ${_message}...`;\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\toutputMessage = `${frame} ${_message} ${formatTimer(_origin)}`;\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\toutputMessage = `${frame} ${_message}${loadingDots}`;\n\t\t\t}\n\n\t\t\tconst wrapped = wrapAnsi(outputMessage, columns, {\n\t\t\t\thard: true,\n\t\t\t\ttrim: false,\n\t\t\t});\n\t\t\toutput.write(wrapped);\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\t// indicator increase by 1 every 8 frames\n\t\t\tindicatorTimer = indicatorTimer < 4 ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst _stop = (msg = '', code = 0, silent: boolean = false): void => {\n\t\tif (!isSpinnerActive) return;\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? styleText('green', S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? styleText('red', S_STEP_CANCEL)\n\t\t\t\t\t: styleText('red', S_STEP_ERROR);\n\t\t_message = msg ?? _message;\n\t\tif (!silent) {\n\t\t\tif (indicator === 'timer') {\n\t\t\t\toutput.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t\t} else {\n\t\t\t\toutput.write(`${step} ${_message}\\n`);\n\t\t\t}\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst stop = (msg = ''): void => _stop(msg, 0);\n\tconst cancel = (msg = ''): void => _stop(msg, 1);\n\tconst error = (msg = ''): void => _stop(msg, 2);\n\t// TODO (43081j): this will leave the initial S_BAR since we purposely\n\t// don't erase that in `clearPrevMessage`. In future, we may want to treat\n\t// `clear` as a special case and remove the bar too.\n\tconst clear = (): void => _stop('', 0, true);\n\n\tconst message = (msg = ''): void => {\n\t\t_message = removeTrailingDots(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t\tcancel,\n\t\terror,\n\t\tclear,\n\t\tget isCancelled() {\n\t\t\treturn isCancelled;\n\t\t},\n\t};\n};\n", "import { styleText } from 'node:util';\nimport type { State } from '@clack/core';\nimport { unicodeOr } from './common.js';\nimport { type SpinnerOptions, type SpinnerResult, spinner } from './spinner.js';\n\nconst S_PROGRESS_CHAR: Record<NonNullable<ProgressOptions['style']>, string> = {\n\tlight: unicodeOr('─', '-'),\n\theavy: unicodeOr('━', '='),\n\tblock: unicodeOr('█', '#'),\n};\n\nexport interface ProgressOptions extends SpinnerOptions {\n\tstyle?: 'light' | 'heavy' | 'block';\n\tmax?: number;\n\tsize?: number;\n}\n\nexport interface ProgressResult extends SpinnerResult {\n\tadvance(step?: number, msg?: string): void;\n}\n\nexport function progress({\n\tstyle = 'heavy',\n\tmax: userMax = 100,\n\tsize: userSize = 40,\n\t...spinnerOptions\n}: ProgressOptions = {}): ProgressResult {\n\tconst spin = spinner(spinnerOptions);\n\tlet value = 0;\n\tlet previousMessage = '';\n\n\tconst max = Math.max(1, userMax);\n\tconst size = Math.max(1, userSize);\n\n\tconst activeStyle = (state: State) => {\n\t\tswitch (state) {\n\t\t\tcase 'initial':\n\t\t\tcase 'active':\n\t\t\t\treturn (text: string) => styleText('magenta', text);\n\t\t\tcase 'error':\n\t\t\tcase 'cancel':\n\t\t\t\treturn (text: string) => styleText('red', text);\n\t\t\tcase 'submit':\n\t\t\t\treturn (text: string) => styleText('green', text);\n\t\t\tdefault:\n\t\t\t\treturn (text: string) => styleText('magenta', text);\n\t\t}\n\t};\n\tconst drawProgress = (state: State, msg: string) => {\n\t\tconst active = Math.floor((value / max) * size);\n\t\treturn `${activeStyle(state)(S_PROGRESS_CHAR[style].repeat(active))}${styleText('dim', S_PROGRESS_CHAR[style].repeat(size - active))} ${msg}`;\n\t};\n\n\tconst start = (msg = '') => {\n\t\tpreviousMessage = msg;\n\t\tspin.start(drawProgress('initial', msg));\n\t};\n\tconst advance = (step = 1, msg?: string): void => {\n\t\tvalue = Math.min(max, step + value);\n\t\tspin.message(drawProgress('active', msg ?? previousMessage));\n\t\tpreviousMessage = msg ?? previousMessage;\n\t};\n\treturn {\n\t\tstart,\n\t\tstop: spin.stop,\n\t\tcancel: spin.cancel,\n\t\terror: spin.error,\n\t\tclear: spin.clear,\n\t\tadvance,\n\t\tisCancelled: spin.isCancelled,\n\t\tmessage: (msg: string) => advance(0, msg),\n\t};\n}\n", "import { styleText } from 'node:util';\nimport { SelectPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n\tsymbolBar,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t\t/**\n\t\t\t * Whether this option is disabled.\n\t\t\t * Disabled options are visible but cannot be selected.\n\t\t\t *\n\t\t\t * By default, options are not disabled.\n\t\t\t */\n\t\t\tdisabled?: boolean;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t\t/**\n\t\t\t * Whether this option is disabled.\n\t\t\t * Disabled options are visible but cannot be selected.\n\t\t\t *\n\t\t\t * By default, options are not disabled.\n\t\t\t */\n\t\t\tdisabled?: boolean;\n\t\t};\n\nexport interface SelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nconst computeLabel = (label: string, format: (text: string) => string) => {\n\tif (!label.includes('\\n')) {\n\t\treturn format(label);\n\t}\n\treturn label\n\t\t.split('\\n')\n\t\t.map((line) => format(line))\n\t\t.join('\\n');\n};\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' | 'disabled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'disabled':\n\t\t\t\treturn `${styleText('gray', S_RADIO_INACTIVE)} ${computeLabel(label, (text) => styleText('gray', text))}${\n\t\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint ?? 'disabled'})`)}` : ''\n\t\t\t\t}`;\n\t\t\tcase 'selected':\n\t\t\t\treturn `${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${styleText('green', S_RADIO_ACTIVE)} ${label}${\n\t\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${computeLabel(label, (str) => styleText(['strikethrough', 'dim'], str))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${styleText('dim', S_RADIO_INACTIVE)} ${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${symbol(this.state)} `;\n\t\t\tconst titlePrefixBar = `${symbolBar(this.state)} `;\n\t\t\tconst messageLines = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\ttitlePrefixBar,\n\t\t\t\ttitlePrefix\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${messageLines}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrappedLines = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[this.cursor], 'selected'),\n\t\t\t\t\t\tsubmitPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLines}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrappedLines = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[this.cursor], 'cancelled'),\n\t\t\t\t\t\tcancelPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLines}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst prefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline (or just trailing newline)\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: (item, active) =>\n\t\t\t\t\t\t\topt(item, item.disabled ? 'disabled' : active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${prefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n", "import { styleText } from 'node:util';\nimport { SelectKeyPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\nimport type { Option } from './select.js';\n\nexport interface SelectKeyOptions<Value extends string> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tcaseSensitive?: boolean;\n}\n\nexport const selectKey = <Value extends string>(opts: SelectKeyOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${styleText(['strikethrough', 'dim'], label)}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${styleText(['bgCyan', 'gray'], ` ${option.value} `)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${styleText(['gray', 'bgWhite', 'inverse'], ` ${option.value} `)} ${label}${\n\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue,\n\t\tcaseSensitive: opts.caseSensitive,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst selectedOption =\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0];\n\t\t\t\t\tconst wrapped = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(selectedOption, 'selected'),\n\t\t\t\t\t\tsubmitPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrapped}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrapped = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[0], 'cancelled'),\n\t\t\t\t\t\tcancelPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrapped}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\tconst wrapped = this.options\n\t\t\t\t\t\t.map((option, i) =>\n\t\t\t\t\t\t\twrapTextWithPrefix(\n\t\t\t\t\t\t\t\topts.output,\n\t\t\t\t\t\t\t\topt(option, i === this.cursor ? 'active' : 'inactive'),\n\t\t\t\t\t\t\t\tdefaultPrefix\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${wrapped}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n", "import { stripVTControlCharacters as strip, styleText } from 'node:util';\nimport { S_BAR, S_ERROR, S_INFO, S_STEP_SUBMIT, S_SUCCESS, S_WARN } from './common.js';\nimport type { LogMessageOptions } from './log.js';\n\nconst prefix = `${styleText('gray', S_BAR)} `;\n\n// TODO (43081j): this currently doesn't support custom `output` writables\n// because we rely on `columns` existing (i.e. `process.stdout.columns).\n//\n// If we want to support `output` being passed in, we will need to use\n// a condition like `if (output insance Writable)` to check if it has columns\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = styleText('gray', S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${styleText('gray', S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('blue', S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('green', S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('green', S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('yellow', S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('red', S_ERROR) });\n\t},\n};\n", "import type { CommonOptions } from './common.js';\nimport { spinner } from './spinner.js';\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[], opts?: CommonOptions) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner(opts);\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n", "import type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { getColumns } from '@clack/core';\nimport { erase } from 'sisteransi';\nimport {\n\ttype CommonOptions,\n\tisCI as isCIFn,\n\tisTTY as isTTYFn,\n\tS_BAR,\n\tS_STEP_SUBMIT,\n} from './common.js';\nimport { log } from './log.js';\n\nexport interface TaskLogOptions extends CommonOptions {\n\ttitle: string;\n\tlimit?: number;\n\tspacing?: number;\n\tretainLog?: boolean;\n}\n\nexport interface TaskLogMessageOptions {\n\traw?: boolean;\n}\n\nexport interface TaskLogCompletionOptions {\n\tshowLog?: boolean;\n}\n\ninterface BufferEntry {\n\theader?: string;\n\tvalue: string;\n\tfull: string;\n\tresult?: {\n\t\tstatus: 'success' | 'error';\n\t\tmessage: string;\n\t};\n}\n\nconst stripDestructiveANSI = (input: string): string => {\n\t// biome-ignore lint/suspicious/noControlCharactersInRegex: intentional\n\treturn input.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g, '');\n};\n\n/**\n * Renders a log which clears on success and remains on failure\n */\nexport const taskLog = (opts: TaskLogOptions) => {\n\tconst output: Writable = opts.output ?? process.stdout;\n\tconst columns = getColumns(output);\n\tconst secondarySymbol = styleText('gray', S_BAR);\n\tconst spacing = opts.spacing ?? 1;\n\tconst barSize = 3;\n\tconst retainLog = opts.retainLog === true;\n\tconst isTTY = !isCIFn() && isTTYFn(output);\n\n\toutput.write(`${secondarySymbol}\\n`);\n\toutput.write(`${styleText('green', S_STEP_SUBMIT)} ${opts.title}\\n`);\n\tfor (let i = 0; i < spacing; i++) {\n\t\toutput.write(`${secondarySymbol}\\n`);\n\t}\n\n\tconst buffers: BufferEntry[] = [\n\t\t{\n\t\t\tvalue: '',\n\t\t\tfull: '',\n\t\t},\n\t];\n\tlet lastMessageWasRaw = false;\n\n\tconst clear = (clearTitle: boolean): void => {\n\t\tif (buffers.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet lines = 0;\n\n\t\tif (clearTitle) {\n\t\t\tlines += spacing + 2;\n\t\t}\n\n\t\tfor (const buffer of buffers) {\n\t\t\tconst { value, result } = buffer;\n\t\t\tlet text = result?.message ?? value;\n\n\t\t\tif (text.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (result === undefined && buffer.header !== undefined && buffer.header !== '') {\n\t\t\t\ttext += `\\n${buffer.header}`;\n\t\t\t}\n\n\t\t\tconst bufferHeight = text.split('\\n').reduce((count, line) => {\n\t\t\t\tif (line === '') {\n\t\t\t\t\treturn count + 1;\n\t\t\t\t}\n\t\t\t\treturn count + Math.ceil((line.length + barSize) / columns);\n\t\t\t}, 0);\n\n\t\t\tlines += bufferHeight;\n\t\t}\n\n\t\tif (lines > 0) {\n\t\t\tlines += 1;\n\t\t\toutput.write(erase.lines(lines));\n\t\t}\n\t};\n\tconst printBuffer = (buffer: BufferEntry, messageSpacing?: number, full?: boolean): void => {\n\t\tconst messages = full ? `${buffer.full}\\n${buffer.value}` : buffer.value;\n\t\tif (buffer.header !== undefined && buffer.header !== '') {\n\t\t\tlog.message(\n\t\t\t\tbuffer.header.split('\\n').map((line) => styleText('bold', line)),\n\t\t\t\t{\n\t\t\t\t\toutput,\n\t\t\t\t\tsecondarySymbol,\n\t\t\t\t\tsymbol: secondarySymbol,\n\t\t\t\t\tspacing: 0,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tlog.message(\n\t\t\tmessages.split('\\n').map((line) => styleText('dim', line)),\n\t\t\t{\n\t\t\t\toutput,\n\t\t\t\tsecondarySymbol,\n\t\t\t\tsymbol: secondarySymbol,\n\t\t\t\tspacing: messageSpacing ?? spacing,\n\t\t\t}\n\t\t);\n\t};\n\tconst renderBuffer = (): void => {\n\t\tfor (const buffer of buffers) {\n\t\t\tconst { header, value, full } = buffer;\n\t\t\tif ((header === undefined || header.length === 0) && value.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprintBuffer(buffer, undefined, retainLog === true && full.length > 0);\n\t\t}\n\t};\n\tconst message = (buffer: BufferEntry, msg: string, mopts?: TaskLogMessageOptions) => {\n\t\tclear(false);\n\t\tif ((mopts?.raw !== true || !lastMessageWasRaw) && buffer.value !== '') {\n\t\t\tbuffer.value += '\\n';\n\t\t}\n\t\tbuffer.value += stripDestructiveANSI(msg);\n\t\tlastMessageWasRaw = mopts?.raw === true;\n\t\tif (opts.limit !== undefined) {\n\t\t\tconst lines = buffer.value.split('\\n');\n\t\t\tconst linesToRemove = lines.length - opts.limit;\n\t\t\tif (linesToRemove > 0) {\n\t\t\t\tconst removedLines = lines.splice(0, linesToRemove);\n\t\t\t\tif (retainLog) {\n\t\t\t\t\tbuffer.full += (buffer.full === '' ? '' : '\\n') + removedLines.join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer.value = lines.join('\\n');\n\t\t}\n\t\tif (isTTY) {\n\t\t\tprintBuffers();\n\t\t}\n\t};\n\tconst printBuffers = (): void => {\n\t\tfor (const buffer of buffers) {\n\t\t\tif (buffer.result) {\n\t\t\t\tif (buffer.result.status === 'error') {\n\t\t\t\t\tlog.error(buffer.result.message, { output, secondarySymbol, spacing: 0 });\n\t\t\t\t} else {\n\t\t\t\t\tlog.success(buffer.result.message, { output, secondarySymbol, spacing: 0 });\n\t\t\t\t}\n\t\t\t} else if (buffer.value !== '') {\n\t\t\t\tprintBuffer(buffer, 0);\n\t\t\t}\n\t\t}\n\t};\n\tconst completeBuffer = (buffer: BufferEntry, result: BufferEntry['result']): void => {\n\t\tclear(false);\n\n\t\tbuffer.result = result;\n\n\t\tif (isTTY) {\n\t\t\tprintBuffers();\n\t\t}\n\t};\n\n\treturn {\n\t\tmessage(msg: string, mopts?: TaskLogMessageOptions) {\n\t\t\tmessage(buffers[0], msg, mopts);\n\t\t},\n\t\tgroup(name: string) {\n\t\t\tconst buffer: BufferEntry = {\n\t\t\t\theader: name,\n\t\t\t\tvalue: '',\n\t\t\t\tfull: '',\n\t\t\t};\n\t\t\tbuffers.push(buffer);\n\t\t\treturn {\n\t\t\t\tmessage(msg: string, mopts?: TaskLogMessageOptions) {\n\t\t\t\t\tmessage(buffer, msg, mopts);\n\t\t\t\t},\n\t\t\t\terror(message: string) {\n\t\t\t\t\tcompleteBuffer(buffer, {\n\t\t\t\t\t\tstatus: 'error',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsuccess(message: string) {\n\t\t\t\t\tcompleteBuffer(buffer, {\n\t\t\t\t\t\tstatus: 'success',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\terror(message: string, opts?: TaskLogCompletionOptions): void {\n\t\t\tclear(true);\n\t\t\tlog.error(message, { output, secondarySymbol, spacing: 1 });\n\t\t\tif (opts?.showLog !== false) {\n\t\t\t\trenderBuffer();\n\t\t\t}\n\t\t\t// clear buffer since error is an end state\n\t\t\tbuffers.splice(1, buffers.length - 1);\n\t\t\tbuffers[0].value = '';\n\t\t\tbuffers[0].full = '';\n\t\t},\n\t\tsuccess(message: string, opts?: TaskLogCompletionOptions): void {\n\t\t\tclear(true);\n\t\t\tlog.success(message, { output, secondarySymbol, spacing: 1 });\n\t\t\tif (opts?.showLog === true) {\n\t\t\t\trenderBuffer();\n\t\t\t}\n\t\t\t// clear buffer since success is an end state\n\t\t\tbuffers.splice(1, buffers.length - 1);\n\t\t\tbuffers[0].value = '';\n\t\t\tbuffers[0].full = '';\n\t\t},\n\t};\n};\n", "import { styleText } from 'node:util';\nimport { settings, TextPrompt } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\n\nexport interface TextOptions extends CommonOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n}\n\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\toutput: opts.output,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\trender() {\n\t\t\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} `;\n\t\t\tconst title = `${titlePrefix}${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? styleText('inverse', opts.placeholder[0]) + styleText('dim', opts.placeholder.slice(1))\n\t\t\t\t: styleText(['inverse', 'hidden'], '_');\n\t\t\tconst userInput = !this.userInput ? placeholder : this.userInputWithCursor;\n\t\t\tconst value = this.value ?? '';\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorText = this.error ? ` ${styleText('yellow', this.error)}` : '';\n\t\t\t\t\tconst errorPrefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst errorPrefixEnd = hasGuide ? styleText('yellow', S_BAR_END) : '';\n\t\t\t\t\treturn `${title.trim()}\\n${errorPrefix}${userInput}\\n${errorPrefixEnd}${errorText}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText('dim', value)}` : '';\n\t\t\t\t\tconst submitPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${valueText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText(['strikethrough', 'dim'], value)}` : '';\n\t\t\t\t\tconst cancelPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${valueText}${value.trim() ? `\\n${cancelPrefix}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${userInput}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n"],
5
+ "mappings": "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S,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,MAAM,QAAS,KAAK,QAAS,KAAK,QAAS,MAAM,QAAS,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,MAAM,SAAU,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,MAAM,UAAW,MAAM,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,WAAW,KAAK,WAAY,KAAK;AAC1jI;AACA,IAAM,cAAc,CAAC,MAAM;AACvB,SAAO,MAAM,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK;AAC7E;AACA,IAAM,SAAS,CAAC,MAAM;AAClB,SAAO,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,KAAK,QAAU,KAAK,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,QAAU,MAAM,SAAU,MAAM,SAAU,MAAM,SAAU,KAAK,SAAU,KAAK,SAAU,MAAM,SAAU,KAAK,SAAU,KAAK,SAAU,MAAM,SAAU,MAAM,SAAU,MAAM,SAAU,MAAM,SAAU,MAAM,SAAU,MAAM,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAW,KAAK,SAAW,MAAM,SAAW,MAAM,SAAW,KAAK,SAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,MAAM,UAAW,MAAM,UAAW,KAAK,UAAW,KAAK,UAAW,MAAM,UAAW,KAAK,UAAW,KAAK,UAAW,MAAM,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,MAAM,UAAW,MAAM,UAAW,MAAM,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,MAAM,UAAW,MAAM,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,MAAM,UAAW,KAAK,UAAW,KAAK,UAAW,MAAM,UAAW,KAA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",
6
+ "names": ["ESC", "CSI", "y", "NO_TRUNCATION", "dist_default", "dist_default", "findCursor", "cursor", "delta", "options", "opt", "newCursor", "maxCursor", "clampedCursor", "actions", "DEFAULT_MONTH_NAMES", "settings", "days", "month", "min", "max", "updateSettings", "updates", "aliases", "alias", "action", "messages", "date", "isActionKey", "key", "value", "diffLines", "a", "b", "aLines", "bLines", "numLines", "diff", "i", "isWindows", "CANCEL_SYMBOL", "isCancel", "setRawMode", "input", "block", "stdin", "output", "stdout", "overwrite", "hideCursor", "rl", "readline", "ReadStream", "clear", "data", "name", "sequence", "str", "dx", "dy", "getColumns", "getRows", "wrapTextWithPrefix", "text", "prefix", "startPrefix", "columns", "wrapAnsi", "line", "index", "g$1", "trackValue", "render", "signal", "opts", "event", "params", "cb", "cbs", "cleanup", "subscriber", "resolve", "char", "_key", "write", "problem", "lines", "frame", "rows", "diffOffsetAfter", "diffOffsetBefore", "diffLine", "erase", "adjustedDiffLine", "newLines", "getCursorForValue", "selected", "items", "item", "defaultFilter", "option", "normalisedValue", "multiple", "values", "T$1", "Prompt", "#cursor", "#lastUserInput", "#filterFn", "#options", "#placeholder", "styleText", "s1", "s2", "s3", "initialValues", "selectedValue", "selectedIndex", "#onKey", "#onUserInputChanged", "_char", "isUpKey", "isDownKey", "isReturnKey", "isEmptyOrOnlyTab", "placeholder", "placeholderMatchesOption", "v", "valueCursor", "focusedOption", "ConfirmPrompt", "confirm", "SEGMENTS", "segmentsFor", "fmt", "c", "detectLocaleFormat", "locale", "parts", "segments", "separator", "p", "parseSegmentToNum", "s", "parse", "daysInMonth", "year", "validParts", "day", "d", "toDate", "segmentBounds", "type", "ctx", "minDate", "maxDate", "minP", "maxP", "DatePrompt", "#segments", "#separator", "#segmentValues", "#minDate", "#maxDate", "#segmentSelected", "#pendingTensDigit", "#format", "#refresh", "detected", "sep", "initialDate", "segmentValues", "initialDisplay", "#onCursor", "#onFinalize", "#seg", "segment", "#navigate", "direction", "#adjust", "raw", "isBlank", "num", "bounds", "next", "dir", "newVal", "newParts", "err", "#validateSegment", "display", "firstBlank", "pos", "shouldStaySelected", "digit", "parsed", "maxDay", "nextBlank", "seg", "GroupMultiSelectPrompt", "#selectableGroups", "group", "o", "groupedItems", "currentIsGroup", "enabledOptions", "allSelected", "notSelected", "PasswordPrompt", "userInput", "masked", "mask", "SelectPrompt", "initialCursor", "SelectKeyPrompt", "caseSensitive", "keys", "initial", "keyInfo", "casedKey", "TextPrompt", "isUnicodeSupported", "process", "unicode", "isCI", "isTTY", "output", "unicodeOr", "c", "fallback", "S_STEP_ACTIVE", "S_STEP_CANCEL", "S_STEP_ERROR", "S_STEP_SUBMIT", "S_BAR_START", "S_BAR", "S_BAR_END", "S_BAR_START_RIGHT", "S_BAR_END_RIGHT", "S_RADIO_ACTIVE", "S_RADIO_INACTIVE", "S_CHECKBOX_ACTIVE", "S_CHECKBOX_SELECTED", "S_CHECKBOX_INACTIVE", "S_PASSWORD_MASK", "S_BAR_H", "S_CORNER_TOP_RIGHT", "S_CONNECT_LEFT", "S_CORNER_BOTTOM_RIGHT", "S_CORNER_BOTTOM_LEFT", "S_CORNER_TOP_LEFT", "S_INFO", "S_SUCCESS", "S_WARN", "S_ERROR", "symbol", "state", "styleText", "symbolBar", "trimLines", "groups", "initialLineCount", "startIndex", "endIndex", "maxLines", "lineCount", "removals", "i", "group", "limitOptions", "cursor", "options", "style", "maxItems", "columnPadding", "rowPadding", "maxWidth", "getColumns", "rows", "getRows", "overflowFormat", "outputMaxItems", "computedMaxItems", "slidingWindowLocation", "shouldRenderTopEllipsis", "shouldRenderBottomEllipsis", "slidingWindowLocationEnd", "lineGroups", "slidingWindowLocationWithEllipsis", "slidingWindowLocationEndWithEllipsis", "wrappedLines", "wrapAnsi", "precedingRemovals", "followingRemovals", "newLineCount", "cursorGroupIndex", "trimLinesLocal", "result", "lineGroup", "line", "getLabel", "option", "getFilteredOption", "searchText", "label", "hint", "value", "term", "getSelectedOptions", "values", "results", "autocomplete", "opts", "AutocompletePrompt", "search", "opt", "hasGuide", "settings", "headings", "userInput", "placeholder", "showPlaceholder", "selected", "submitPrefix", "userInputText", "cancelPrefix", "barStyle", "guidePrefix", "guidePrefixEnd", "searchTextValue", "matches", "noResults", "validationError", "instructions", "footers", "displayOptions", "active", "autocompleteMultiselect", "formatOption", "selectedValues", "focusedValue", "isSelected", "checkbox", "prompt", "title", "errorMessage", "headerLines", "footerLines", "roundedSymbols", "squareSymbols", "getPaddingForLine", "lineLength", "innerWidth", "padding", "contentAlign", "leftPadding", "rightPadding", "defaultFormatBorder", "text", "box", "message", "columns", "borderTotalWidth", "titlePadding", "contentPadding", "width", "linePrefix", "formatBorder", "symbols", "hSymbol", "vSymbol", "linePrefixWidth", "stringWidth", "titleWidth", "maxBoxWidth", "boxWidth", "lines", "longestLine", "lineWithPadding", "longestLineWidth", "maxTitleLength", "truncatedTitle", "titlePaddingLeft", "titlePaddingRight", "wrappedMessage", "leftLinePadding", "rightLinePadding", "confirm", "inactive", "ConfirmPrompt", "titlePrefix", "titlePrefixBar", "messageLines", "wrapTextWithPrefix", "defaultPrefix", "defaultPrefixEnd", "date", "validate", "DatePrompt", "iso", "d", "renderDate", "errorText", "bar", "barEnd", "valueText", "inlineBar", "inlineError", "parts", "sep", "seg", "isActive", "DEFAULT_LABELS", "renderSegment", "isBlank", "prompts", "promptNames", "name", "e", "isCancel", "groupMultiselect", "selectableGroups", "groupSpacing", "isItem", "next", "isLast", "prefix", "spacingPrefix", "spacingPrefixText", "selectedCheckbox", "unselectedCheckbox", "required", "GroupMultiSelectPrompt", "selectedOptions", "optionValue", "optionsText", "footer", "ln", "groupActive", "optionText", "optionsPrefix", "log", "secondarySymbol", "spacing", "withGuide", "spacingString", "secondaryPrefix", "messageParts", "firstLine", "cancel", "intro", "outro", "computeLabel", "format", "multiselect", "str", "MultiSelectPrompt", "styleOption", "submitText", "wrappedSubmitText", "wrappedLabel", "titleLineCount", "footerLineCount", "defaultNoteFormatter", "wrapWithFormat", "wrapMsg", "maxWidthNormal", "sum", "maxWidthFormat", "wrapWidth", "note", "titleLen", "len", "msg", "leadingBorder", "bottomLeft", "password", "PasswordPrompt", "masked", "errorPrefix", "errorPrefixEnd", "maskedText", "path", "searchPath", "existsSync", "lstatSync", "dirname", "readdirSync", "item", "join", "stats", "isDirectory", "defaultStyleFn", "frame", "spinner", "indicator", "onCancel", "cancelMessage", "frames", "delay", "signal", "isCIFn", "unblock", "loop", "isSpinnerActive", "isCancelled", "_message", "_prevMessage", "_origin", "styleFn", "handleExit", "code", "_stop", "errorEventHandler", "signalEventHandler", "registerHooks", "clearHooks", "clearPrevMessage", "prevLines", "erase", "removeTrailingDots", "formatTimer", "origin", "duration", "min", "secs", "start", "block", "frameIndex", "indicatorTimer", "outputMessage", "loadingDots", "wrapped", "silent", "step", "S_PROGRESS_CHAR", "progress", "userMax", "userSize", "spinnerOptions", "spin", "previousMessage", "max", "size", "activeStyle", "drawProgress", "advance", "select", "SelectPrompt", "prefixEnd", "selectKey", "SelectKeyPrompt", "selectedOption", "stream", "iterable", "lineWidth", "chunk", "strip", "chunkLen", "tasks", "task", "s", "stripDestructiveANSI", "input", "taskLog", "barSize", "retainLog", "isTTYFn", "buffers", "lastMessageWasRaw", "clear", "clearTitle", "buffer", "bufferHeight", "count", "printBuffer", "messageSpacing", "full", "messages", "renderBuffer", "header", "mopts", "linesToRemove", "removedLines", "printBuffers", "completeBuffer", "TextPrompt"]
7
+ }