squidcloudctl 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/dist/auth-revoke-NEWOUC3A.js +2 -0
  2. package/dist/auth-revoke-NEWOUC3A.js.map +1 -0
  3. package/dist/auth-sessions-JOC7PEUT.js +2 -0
  4. package/dist/auth-sessions-JOC7PEUT.js.map +1 -0
  5. package/dist/auth-status-FUO72AA4.js +2 -0
  6. package/dist/auth-status-FUO72AA4.js.map +1 -0
  7. package/dist/bin/squidcloud.js +2 -2
  8. package/dist/bin/squidcloud.js.map +1 -1
  9. package/dist/chunk-23ZOP633.js +2 -0
  10. package/dist/chunk-23ZOP633.js.map +1 -0
  11. package/dist/{logs-tail-YVFZLSC2.js → chunk-2MWPBWUD.js} +3 -3
  12. package/dist/{logs-tail-YVFZLSC2.js.map → chunk-2MWPBWUD.js.map} +1 -1
  13. package/dist/chunk-3OYNZIJC.js +2 -0
  14. package/dist/chunk-3OYNZIJC.js.map +1 -0
  15. package/dist/chunk-3OZ4O4NE.js +2 -0
  16. package/dist/chunk-3OZ4O4NE.js.map +1 -0
  17. package/dist/chunk-3YAAQAPA.js +2 -0
  18. package/dist/chunk-3YAAQAPA.js.map +1 -0
  19. package/dist/chunk-4MW5J5VT.js +2 -0
  20. package/dist/chunk-4MW5J5VT.js.map +1 -0
  21. package/dist/chunk-4N7AHGIY.js +2 -0
  22. package/dist/chunk-4N7AHGIY.js.map +1 -0
  23. package/dist/chunk-4USNCNOY.js +2 -0
  24. package/dist/chunk-4USNCNOY.js.map +1 -0
  25. package/dist/chunk-4VJET5IM.js +2 -0
  26. package/dist/chunk-4VJET5IM.js.map +1 -0
  27. package/dist/chunk-52WHEL73.js +2 -0
  28. package/dist/{chunk-FNCZD2QB.js.map → chunk-52WHEL73.js.map} +1 -1
  29. package/dist/chunk-54BNCBLD.js +2 -0
  30. package/dist/chunk-54BNCBLD.js.map +1 -0
  31. package/dist/chunk-54MZLE2R.js +2 -0
  32. package/dist/chunk-54MZLE2R.js.map +1 -0
  33. package/dist/chunk-57X5IOZ5.js +2 -0
  34. package/dist/chunk-57X5IOZ5.js.map +1 -0
  35. package/dist/chunk-5DXTXML2.js +2 -0
  36. package/dist/chunk-5DXTXML2.js.map +1 -0
  37. package/dist/chunk-5JPIAFB2.js +2 -0
  38. package/dist/chunk-5JPIAFB2.js.map +1 -0
  39. package/dist/chunk-5TMR6Y7L.js +2 -0
  40. package/dist/{chunk-CHBVIZF5.js.map → chunk-5TMR6Y7L.js.map} +1 -1
  41. package/dist/chunk-5Z3A46OK.js +2 -0
  42. package/dist/chunk-5Z3A46OK.js.map +1 -0
  43. package/dist/chunk-6CK2UBNM.js +2 -0
  44. package/dist/chunk-6CK2UBNM.js.map +1 -0
  45. package/dist/chunk-6RI4Z6IY.js +2 -0
  46. package/dist/{chunk-EPDVSZII.js.map → chunk-6RI4Z6IY.js.map} +1 -1
  47. package/dist/chunk-6VDGYAGT.js +2 -0
  48. package/dist/chunk-6VDGYAGT.js.map +1 -0
  49. package/dist/chunk-74TMDLBA.js +2 -0
  50. package/dist/chunk-74TMDLBA.js.map +1 -0
  51. package/dist/chunk-7DPXZUZY.js +2 -0
  52. package/dist/chunk-7DPXZUZY.js.map +1 -0
  53. package/dist/chunk-7VVZS6US.js +2 -0
  54. package/dist/chunk-7VVZS6US.js.map +1 -0
  55. package/dist/chunk-A6WS3TOF.js +2 -0
  56. package/dist/chunk-A6WS3TOF.js.map +1 -0
  57. package/dist/chunk-ADOHZ74F.js +2 -0
  58. package/dist/chunk-ADOHZ74F.js.map +1 -0
  59. package/dist/chunk-BC3STHFS.js +3 -0
  60. package/dist/chunk-BC3STHFS.js.map +1 -0
  61. package/dist/chunk-BQGHHBGH.js +2 -0
  62. package/dist/chunk-BQGHHBGH.js.map +1 -0
  63. package/dist/chunk-CFZZRV3Z.js +2 -0
  64. package/dist/chunk-CFZZRV3Z.js.map +1 -0
  65. package/dist/chunk-CJYNYLZF.js +2 -0
  66. package/dist/chunk-CJYNYLZF.js.map +1 -0
  67. package/dist/chunk-CQAXMUFB.js +3 -0
  68. package/dist/chunk-CQAXMUFB.js.map +1 -0
  69. package/dist/{completion-IF3NB7PB.js → chunk-DNCVZK7V.js} +2 -2
  70. package/dist/chunk-DNCVZK7V.js.map +1 -0
  71. package/dist/chunk-E2QGSNDB.js +2 -0
  72. package/dist/chunk-E2QGSNDB.js.map +1 -0
  73. package/dist/chunk-EGVPYRIE.js +2 -0
  74. package/dist/chunk-EGVPYRIE.js.map +1 -0
  75. package/dist/chunk-EUJ26UNW.js +2 -0
  76. package/dist/chunk-EUJ26UNW.js.map +1 -0
  77. package/dist/chunk-EWFYKNK7.js +2 -0
  78. package/dist/chunk-EWFYKNK7.js.map +1 -0
  79. package/dist/chunk-F6IK5BFP.js +2 -0
  80. package/dist/chunk-F6IK5BFP.js.map +1 -0
  81. package/dist/{chunk-MKRWNV2T.js → chunk-F6Z2OAHW.js} +2 -2
  82. package/dist/chunk-F6Z2OAHW.js.map +1 -0
  83. package/dist/chunk-FBSVAPQ6.js +3 -0
  84. package/dist/chunk-FBSVAPQ6.js.map +1 -0
  85. package/dist/chunk-FJZYWFE2.js +2 -0
  86. package/dist/chunk-FJZYWFE2.js.map +1 -0
  87. package/dist/chunk-FMJZFIA2.js +3 -0
  88. package/dist/chunk-FMJZFIA2.js.map +1 -0
  89. package/dist/chunk-GAP2HHZR.js +2 -0
  90. package/dist/chunk-GAP2HHZR.js.map +1 -0
  91. package/dist/chunk-GIADGCQF.js +9 -0
  92. package/dist/chunk-GIADGCQF.js.map +1 -0
  93. package/dist/chunk-H2WQ3ECX.js +2 -0
  94. package/dist/chunk-H2WQ3ECX.js.map +1 -0
  95. package/dist/chunk-HJWONDZI.js +2 -0
  96. package/dist/chunk-HJWONDZI.js.map +1 -0
  97. package/dist/chunk-HMBPN7ID.js +2 -0
  98. package/dist/chunk-HMBPN7ID.js.map +1 -0
  99. package/dist/chunk-HTDV42AD.js +2 -0
  100. package/dist/chunk-HTDV42AD.js.map +1 -0
  101. package/dist/chunk-IBYIEHIZ.js +2 -0
  102. package/dist/chunk-IBYIEHIZ.js.map +1 -0
  103. package/dist/{chunk-ULVQ53OO.js → chunk-IJ3JNWT6.js} +3 -3
  104. package/dist/{chunk-ULVQ53OO.js.map → chunk-IJ3JNWT6.js.map} +1 -1
  105. package/dist/chunk-JCZENRYY.js +2 -0
  106. package/dist/chunk-JCZENRYY.js.map +1 -0
  107. package/dist/chunk-JLC5WGYQ.js +2 -0
  108. package/dist/chunk-JLC5WGYQ.js.map +1 -0
  109. package/dist/{version-Y2LWIEFC.js → chunk-JSYPWAKP.js} +2 -2
  110. package/dist/chunk-JSYPWAKP.js.map +1 -0
  111. package/dist/chunk-JTIGFOL5.js +2 -0
  112. package/dist/chunk-JTIGFOL5.js.map +1 -0
  113. package/dist/chunk-JTMKKTKL.js +2 -0
  114. package/dist/chunk-JTMKKTKL.js.map +1 -0
  115. package/dist/chunk-KO2JCGEV.js +2 -0
  116. package/dist/chunk-KO2JCGEV.js.map +1 -0
  117. package/dist/chunk-KQMBXJUL.js +2 -0
  118. package/dist/chunk-KQMBXJUL.js.map +1 -0
  119. package/dist/chunk-LSYYM7EZ.js +2 -0
  120. package/dist/chunk-LSYYM7EZ.js.map +1 -0
  121. package/dist/chunk-LW4AQT2F.js +2 -0
  122. package/dist/chunk-LW4AQT2F.js.map +1 -0
  123. package/dist/chunk-MCJLSHUC.js +2 -0
  124. package/dist/chunk-MCJLSHUC.js.map +1 -0
  125. package/dist/chunk-MNSBJ6HR.js +2 -0
  126. package/dist/chunk-MNSBJ6HR.js.map +1 -0
  127. package/dist/chunk-N52M225G.js +2 -0
  128. package/dist/chunk-N52M225G.js.map +1 -0
  129. package/dist/chunk-NCD7PEEP.js +2 -0
  130. package/dist/chunk-NCD7PEEP.js.map +1 -0
  131. package/dist/chunk-NDG5MZ2E.js +2 -0
  132. package/dist/chunk-NDG5MZ2E.js.map +1 -0
  133. package/dist/chunk-NKEQVDH2.js +2 -0
  134. package/dist/chunk-NKEQVDH2.js.map +1 -0
  135. package/dist/chunk-NKPRDJXY.js +2 -0
  136. package/dist/chunk-NKPRDJXY.js.map +1 -0
  137. package/dist/chunk-NLUUDXEF.js +3 -0
  138. package/dist/chunk-NLUUDXEF.js.map +1 -0
  139. package/dist/{scripts-init-BIIEMUXV.js → chunk-NQAQKZPN.js} +3 -3
  140. package/dist/chunk-NQAQKZPN.js.map +1 -0
  141. package/dist/chunk-O45EVN3E.js +3 -0
  142. package/dist/chunk-O45EVN3E.js.map +1 -0
  143. package/dist/chunk-OFJLZCDA.js +2 -0
  144. package/dist/chunk-OFJLZCDA.js.map +1 -0
  145. package/dist/{chunk-N3AD2QRA.js → chunk-OSI5H2T5.js} +2 -2
  146. package/dist/chunk-OSI5H2T5.js.map +1 -0
  147. package/dist/chunk-OWUWBBTM.js +2 -0
  148. package/dist/chunk-OWUWBBTM.js.map +1 -0
  149. package/dist/chunk-P6UN7Y3F.js +2 -0
  150. package/dist/chunk-P6UN7Y3F.js.map +1 -0
  151. package/dist/chunk-PMRLA27Q.js +2 -0
  152. package/dist/chunk-PMRLA27Q.js.map +1 -0
  153. package/dist/chunk-Q25B7YZU.js +2 -0
  154. package/dist/chunk-Q25B7YZU.js.map +1 -0
  155. package/dist/chunk-RN4IKWVM.js +2 -0
  156. package/dist/chunk-RN4IKWVM.js.map +1 -0
  157. package/dist/chunk-RNCPG3CD.js +2 -0
  158. package/dist/chunk-RNCPG3CD.js.map +1 -0
  159. package/dist/chunk-SA36QQCL.js +2 -0
  160. package/dist/chunk-SA36QQCL.js.map +1 -0
  161. package/dist/{sites-logs-AYG43HQV.js → chunk-SAE75K6H.js} +3 -3
  162. package/dist/{sites-logs-AYG43HQV.js.map → chunk-SAE75K6H.js.map} +1 -1
  163. package/dist/chunk-SB7XE246.js +2 -0
  164. package/dist/chunk-SB7XE246.js.map +1 -0
  165. package/dist/chunk-T23UIAGN.js +2 -0
  166. package/dist/chunk-T23UIAGN.js.map +1 -0
  167. package/dist/chunk-TE7L3ICT.js +2 -0
  168. package/dist/chunk-TE7L3ICT.js.map +1 -0
  169. package/dist/chunk-UEZJYSCK.js +2 -0
  170. package/dist/chunk-UEZJYSCK.js.map +1 -0
  171. package/dist/chunk-UPZC233Y.js +2 -0
  172. package/dist/chunk-UPZC233Y.js.map +1 -0
  173. package/dist/chunk-VJNDCFHN.js +2 -0
  174. package/dist/chunk-VJNDCFHN.js.map +1 -0
  175. package/dist/chunk-W74CXS6L.js +2 -0
  176. package/dist/chunk-W74CXS6L.js.map +1 -0
  177. package/dist/chunk-WNB2L5T6.js +2 -0
  178. package/dist/chunk-WNB2L5T6.js.map +1 -0
  179. package/dist/chunk-WRKYGGYI.js +2 -0
  180. package/dist/{chunk-SCKQAF44.js.map → chunk-WRKYGGYI.js.map} +1 -1
  181. package/dist/chunk-XBUJYUM3.js +2 -0
  182. package/dist/chunk-XBUJYUM3.js.map +1 -0
  183. package/dist/chunk-XFLWSNBM.js +2 -0
  184. package/dist/chunk-XFLWSNBM.js.map +1 -0
  185. package/dist/chunk-XM4MU7IT.js +2 -0
  186. package/dist/chunk-XM4MU7IT.js.map +1 -0
  187. package/dist/chunk-XTV6ABCU.js +2 -0
  188. package/dist/chunk-XTV6ABCU.js.map +1 -0
  189. package/dist/chunk-XWVREJPG.js +2 -0
  190. package/dist/chunk-XWVREJPG.js.map +1 -0
  191. package/dist/chunk-Y4LKANAN.js +2 -0
  192. package/dist/chunk-Y4LKANAN.js.map +1 -0
  193. package/dist/chunk-YAN3ZX5N.js +2 -0
  194. package/dist/chunk-YAN3ZX5N.js.map +1 -0
  195. package/dist/chunk-YMVR2Y7T.js +2 -0
  196. package/dist/chunk-YMVR2Y7T.js.map +1 -0
  197. package/dist/chunk-YRA3NRLD.js +2 -0
  198. package/dist/chunk-YRA3NRLD.js.map +1 -0
  199. package/dist/chunk-YZWZNR6K.js +6 -0
  200. package/dist/chunk-YZWZNR6K.js.map +1 -0
  201. package/dist/chunk-Z6CJWDEP.js +2 -0
  202. package/dist/chunk-Z6CJWDEP.js.map +1 -0
  203. package/dist/chunk-ZBT5KBPZ.js +2 -0
  204. package/dist/chunk-ZBT5KBPZ.js.map +1 -0
  205. package/dist/chunk-ZJ7BKNXN.js +3 -0
  206. package/dist/chunk-ZJ7BKNXN.js.map +1 -0
  207. package/dist/chunk-ZP2A2JZ2.js +2 -0
  208. package/dist/chunk-ZP2A2JZ2.js.map +1 -0
  209. package/dist/chunk-ZX2YDSZP.js +2 -0
  210. package/dist/chunk-ZX2YDSZP.js.map +1 -0
  211. package/dist/client-LLUV4KQV.js +2 -0
  212. package/dist/{client-IR7OHGEQ.js.map → client-LLUV4KQV.js.map} +1 -1
  213. package/dist/collab-activity-HHMCCSM6.js +2 -0
  214. package/dist/collab-activity-HHMCCSM6.js.map +1 -0
  215. package/dist/collab-invite-CGTTTC5E.js +2 -0
  216. package/dist/collab-invite-CGTTTC5E.js.map +1 -0
  217. package/dist/collab-leave-XQ4TYSSV.js +2 -0
  218. package/dist/collab-leave-XQ4TYSSV.js.map +1 -0
  219. package/dist/collab-list-QHZLDEQY.js +2 -0
  220. package/dist/collab-list-QHZLDEQY.js.map +1 -0
  221. package/dist/collab-remove-WEOMPRY4.js +2 -0
  222. package/dist/collab-remove-WEOMPRY4.js.map +1 -0
  223. package/dist/collab-transfer-4UAT62Q6.js +2 -0
  224. package/dist/collab-transfer-4UAT62Q6.js.map +1 -0
  225. package/dist/commands/auth/index.js +2 -0
  226. package/dist/commands/auth/index.js.map +1 -0
  227. package/dist/commands/collab/index.js +2 -0
  228. package/dist/commands/collab/index.js.map +1 -0
  229. package/dist/commands/deploy/index.js +3 -0
  230. package/dist/commands/deploy/index.js.map +1 -0
  231. package/dist/commands/forms/index.js +2 -0
  232. package/dist/commands/forms/index.js.map +1 -0
  233. package/dist/commands/logs/index.js +2 -0
  234. package/dist/commands/logs/index.js.map +1 -0
  235. package/dist/commands/monitor/index.js +2 -0
  236. package/dist/commands/monitor/index.js.map +1 -0
  237. package/dist/commands/scripts/index.js +2 -0
  238. package/dist/commands/scripts/index.js.map +1 -0
  239. package/dist/commands/sign/index.js +2 -0
  240. package/dist/commands/sign/index.js.map +1 -0
  241. package/dist/commands/sites/index.js +2 -0
  242. package/dist/commands/sites/index.js.map +1 -0
  243. package/dist/commands/storage/index.js +2 -0
  244. package/dist/commands/storage/index.js.map +1 -0
  245. package/dist/commands/time/index.js +2 -0
  246. package/dist/commands/time/index.js.map +1 -0
  247. package/dist/commands/util/index.js +2 -0
  248. package/dist/commands/util/index.js.map +1 -0
  249. package/dist/completion-I2ARGA2U.js +2 -0
  250. package/dist/completion-I2ARGA2U.js.map +1 -0
  251. package/dist/config-B5FDVP6Q.js +2 -0
  252. package/dist/{config-PL34OPDL.js.map → config-B5FDVP6Q.js.map} +1 -1
  253. package/dist/config-delete-3GEWPGA3.js +2 -0
  254. package/dist/config-delete-3GEWPGA3.js.map +1 -0
  255. package/dist/config-get-4YKTVBHW.js +2 -0
  256. package/dist/config-get-4YKTVBHW.js.map +1 -0
  257. package/dist/config-reset-GCTQD5ZJ.js +2 -0
  258. package/dist/config-reset-GCTQD5ZJ.js.map +1 -0
  259. package/dist/config-set-VHEQM2RQ.js +2 -0
  260. package/dist/config-set-VHEQM2RQ.js.map +1 -0
  261. package/dist/doctor-ZYU3JBJF.js +2 -0
  262. package/dist/doctor-ZYU3JBJF.js.map +1 -0
  263. package/dist/feedback-N5EBJ566.js +2 -0
  264. package/dist/feedback-N5EBJ566.js.map +1 -0
  265. package/dist/forms-clear-RXJVD57O.js +2 -0
  266. package/dist/forms-clear-RXJVD57O.js.map +1 -0
  267. package/dist/forms-create-ADMTRYCJ.js +2 -0
  268. package/dist/forms-create-ADMTRYCJ.js.map +1 -0
  269. package/dist/forms-delete-RFXRQFH6.js +2 -0
  270. package/dist/forms-delete-RFXRQFH6.js.map +1 -0
  271. package/dist/forms-embed-CGKIBURZ.js +2 -0
  272. package/dist/forms-embed-CGKIBURZ.js.map +1 -0
  273. package/dist/forms-export-34JBMXAM.js +2 -0
  274. package/dist/forms-export-34JBMXAM.js.map +1 -0
  275. package/dist/forms-info-LQ5S4I24.js +2 -0
  276. package/dist/forms-info-LQ5S4I24.js.map +1 -0
  277. package/dist/forms-list-7JIQCCVQ.js +2 -0
  278. package/dist/forms-list-7JIQCCVQ.js.map +1 -0
  279. package/dist/forms-submissions-EMJNSTYT.js +2 -0
  280. package/dist/forms-submissions-EMJNSTYT.js.map +1 -0
  281. package/dist/lib/api/index.js +2 -0
  282. package/dist/lib/api/index.js.map +1 -0
  283. package/dist/lib/auth/index.js +2 -0
  284. package/dist/lib/auth/index.js.map +1 -0
  285. package/dist/lib/crypto/index.js +2 -0
  286. package/dist/lib/crypto/index.js.map +1 -0
  287. package/dist/lib/deploy/index.js +2 -0
  288. package/dist/lib/deploy/index.js.map +1 -0
  289. package/dist/lib/output/index.js +2 -0
  290. package/dist/lib/output/index.js.map +1 -0
  291. package/dist/lib/upload/index.js +2 -0
  292. package/dist/lib/upload/index.js.map +1 -0
  293. package/dist/lib/utils/index.js +2 -0
  294. package/dist/lib/utils/index.js.map +1 -0
  295. package/dist/login-I53VTO6L.js +2 -0
  296. package/dist/login-I53VTO6L.js.map +1 -0
  297. package/dist/logout-OJV7AZZO.js +2 -0
  298. package/dist/logout-OJV7AZZO.js.map +1 -0
  299. package/dist/logs-export-TX3TDMAL.js +2 -0
  300. package/dist/logs-export-TX3TDMAL.js.map +1 -0
  301. package/dist/logs-search-N6HWWLHZ.js +2 -0
  302. package/dist/logs-search-N6HWWLHZ.js.map +1 -0
  303. package/dist/logs-tail-SQ4XQW2A.js +2 -0
  304. package/dist/logs-tail-SQ4XQW2A.js.map +1 -0
  305. package/dist/monitor-D3LZU55W.js +2 -0
  306. package/dist/monitor-D3LZU55W.js.map +1 -0
  307. package/dist/monitor-automations-GFDMFRBU.js +2 -0
  308. package/dist/monitor-automations-GFDMFRBU.js.map +1 -0
  309. package/dist/monitor-pipelines-FRVVYKME.js +2 -0
  310. package/dist/monitor-pipelines-FRVVYKME.js.map +1 -0
  311. package/dist/monitor-sites-ATWU7HOA.js +2 -0
  312. package/dist/monitor-sites-ATWU7HOA.js.map +1 -0
  313. package/dist/monitor-storage-TGFNTOHB.js +2 -0
  314. package/dist/monitor-storage-TGFNTOHB.js.map +1 -0
  315. package/dist/registry/index.js +2 -0
  316. package/dist/registry/index.js.map +1 -0
  317. package/dist/scripts-cancel-R7NRYLVG.js +2 -0
  318. package/dist/scripts-cancel-R7NRYLVG.js.map +1 -0
  319. package/dist/scripts-delete-CFRV2B2G.js +2 -0
  320. package/dist/scripts-delete-CFRV2B2G.js.map +1 -0
  321. package/dist/scripts-disable-WQJAP6EW.js +2 -0
  322. package/dist/scripts-disable-WQJAP6EW.js.map +1 -0
  323. package/dist/scripts-enable-GJTRHEJG.js +2 -0
  324. package/dist/scripts-enable-GJTRHEJG.js.map +1 -0
  325. package/dist/scripts-init-XYDUEPHE.js +2 -0
  326. package/dist/scripts-init-XYDUEPHE.js.map +1 -0
  327. package/dist/scripts-list-I42J3TKN.js +2 -0
  328. package/dist/scripts-list-I42J3TKN.js.map +1 -0
  329. package/dist/scripts-logs-T2DBR47F.js +2 -0
  330. package/dist/scripts-logs-T2DBR47F.js.map +1 -0
  331. package/dist/scripts-run-A4V25Q5I.js +2 -0
  332. package/dist/scripts-run-A4V25Q5I.js.map +1 -0
  333. package/dist/scripts-status-5Q5Q76LC.js +2 -0
  334. package/dist/scripts-status-5Q5Q76LC.js.map +1 -0
  335. package/dist/scripts-validate-7525CAVN.js +2 -0
  336. package/dist/scripts-validate-7525CAVN.js.map +1 -0
  337. package/dist/scripts-watch-SB52KWBL.js +2 -0
  338. package/dist/scripts-watch-SB52KWBL.js.map +1 -0
  339. package/dist/sign-cancel-XKIUANS3.js +2 -0
  340. package/dist/sign-cancel-XKIUANS3.js.map +1 -0
  341. package/dist/sign-download-JLV45D2P.js +2 -0
  342. package/dist/sign-download-JLV45D2P.js.map +1 -0
  343. package/dist/sign-list-XW7YYI4K.js +2 -0
  344. package/dist/sign-list-XW7YYI4K.js.map +1 -0
  345. package/dist/sign-request-IDZFPWHL.js +2 -0
  346. package/dist/sign-request-IDZFPWHL.js.map +1 -0
  347. package/dist/sign-status-WMFCBO2Y.js +2 -0
  348. package/dist/sign-status-WMFCBO2Y.js.map +1 -0
  349. package/dist/sign-verify-MQDGGYPL.js +2 -0
  350. package/dist/sign-verify-MQDGGYPL.js.map +1 -0
  351. package/dist/sites-analytics-AU54PJC4.js +2 -0
  352. package/dist/sites-analytics-AU54PJC4.js.map +1 -0
  353. package/dist/sites-delete-ROETL6S7.js +2 -0
  354. package/dist/sites-delete-ROETL6S7.js.map +1 -0
  355. package/dist/sites-deploys-IKKCJFGI.js +2 -0
  356. package/dist/sites-deploys-IKKCJFGI.js.map +1 -0
  357. package/dist/sites-info-M7WDLFTW.js +2 -0
  358. package/dist/sites-info-M7WDLFTW.js.map +1 -0
  359. package/dist/sites-list-DQANT2J6.js +2 -0
  360. package/dist/sites-list-DQANT2J6.js.map +1 -0
  361. package/dist/sites-logs-NAOTBP7I.js +2 -0
  362. package/dist/sites-logs-NAOTBP7I.js.map +1 -0
  363. package/dist/sites-open-LYLLIXUE.js +2 -0
  364. package/dist/sites-open-LYLLIXUE.js.map +1 -0
  365. package/dist/sites-purge-TC26HZI3.js +2 -0
  366. package/dist/sites-purge-TC26HZI3.js.map +1 -0
  367. package/dist/sites-rename-UQNCLOFG.js +2 -0
  368. package/dist/sites-rename-UQNCLOFG.js.map +1 -0
  369. package/dist/sites-rollback-SQ5ITDAM.js +2 -0
  370. package/dist/sites-rollback-SQ5ITDAM.js.map +1 -0
  371. package/dist/sites-unpublish-UWBN253C.js +2 -0
  372. package/dist/sites-unpublish-UWBN253C.js.map +1 -0
  373. package/dist/sites-visibility-K4ECNWQ6.js +2 -0
  374. package/dist/sites-visibility-K4ECNWQ6.js.map +1 -0
  375. package/dist/storage-cat-FHO4FOCH.js +2 -0
  376. package/dist/storage-cat-FHO4FOCH.js.map +1 -0
  377. package/dist/storage-clean-PVEBOPCZ.js +2 -0
  378. package/dist/storage-clean-PVEBOPCZ.js.map +1 -0
  379. package/dist/storage-cp-432CZ24Q.js +2 -0
  380. package/dist/storage-cp-432CZ24Q.js.map +1 -0
  381. package/dist/storage-diff-3HUM7APQ.js +2 -0
  382. package/dist/storage-diff-3HUM7APQ.js.map +1 -0
  383. package/dist/storage-download-MEUZI6VE.js +2 -0
  384. package/dist/storage-download-MEUZI6VE.js.map +1 -0
  385. package/dist/storage-info-TXDUGMAZ.js +2 -0
  386. package/dist/storage-info-TXDUGMAZ.js.map +1 -0
  387. package/dist/storage-ls-UKF6RNFK.js +2 -0
  388. package/dist/storage-ls-UKF6RNFK.js.map +1 -0
  389. package/dist/storage-mkdir-DUCBLMFF.js +2 -0
  390. package/dist/storage-mkdir-DUCBLMFF.js.map +1 -0
  391. package/dist/storage-mv-TBFY3KYG.js +2 -0
  392. package/dist/storage-mv-TBFY3KYG.js.map +1 -0
  393. package/dist/storage-rm-5GL4JECX.js +2 -0
  394. package/dist/storage-rm-5GL4JECX.js.map +1 -0
  395. package/dist/storage-search-LOPWXFNT.js +2 -0
  396. package/dist/storage-search-LOPWXFNT.js.map +1 -0
  397. package/dist/storage-share-RAJJY3I5.js +2 -0
  398. package/dist/storage-share-RAJJY3I5.js.map +1 -0
  399. package/dist/storage-tag-WM33N7XA.js +2 -0
  400. package/dist/storage-tag-WM33N7XA.js.map +1 -0
  401. package/dist/storage-unshare-H5UBXLAT.js +2 -0
  402. package/dist/storage-unshare-H5UBXLAT.js.map +1 -0
  403. package/dist/storage-upload-XY2GN3VU.js +2 -0
  404. package/dist/storage-upload-XY2GN3VU.js.map +1 -0
  405. package/dist/time-list-WSRWMUGP.js +2 -0
  406. package/dist/time-list-WSRWMUGP.js.map +1 -0
  407. package/dist/time-lock-GOKLWQZ6.js +2 -0
  408. package/dist/time-lock-GOKLWQZ6.js.map +1 -0
  409. package/dist/time-proof-J7GT4M5G.js +2 -0
  410. package/dist/time-proof-J7GT4M5G.js.map +1 -0
  411. package/dist/time-status-SV3OA35J.js +2 -0
  412. package/dist/time-status-SV3OA35J.js.map +1 -0
  413. package/dist/time-unlock-6OF5VTV4.js +2 -0
  414. package/dist/time-unlock-6OF5VTV4.js.map +1 -0
  415. package/dist/update-M3RJEWWA.js +2 -0
  416. package/dist/update-M3RJEWWA.js.map +1 -0
  417. package/dist/version-QA4ZYKDW.js +2 -0
  418. package/dist/version-QA4ZYKDW.js.map +1 -0
  419. package/dist/whoami-BQMXFSCR.js +2 -0
  420. package/dist/whoami-BQMXFSCR.js.map +1 -0
  421. package/package.json +5 -2
  422. package/dist/auth-revoke-DWV3OFW6.js +0 -2
  423. package/dist/auth-revoke-DWV3OFW6.js.map +0 -1
  424. package/dist/auth-sessions-D4RWXFPE.js +0 -2
  425. package/dist/auth-sessions-D4RWXFPE.js.map +0 -1
  426. package/dist/auth-status-EPQU6F63.js +0 -2
  427. package/dist/auth-status-EPQU6F63.js.map +0 -1
  428. package/dist/chunk-CHBVIZF5.js +0 -2
  429. package/dist/chunk-EMRHLWPD.js +0 -3
  430. package/dist/chunk-EMRHLWPD.js.map +0 -1
  431. package/dist/chunk-EPDVSZII.js +0 -2
  432. package/dist/chunk-FNCZD2QB.js +0 -2
  433. package/dist/chunk-MKRWNV2T.js.map +0 -1
  434. package/dist/chunk-N3AD2QRA.js.map +0 -1
  435. package/dist/chunk-Q3A4IBGC.js +0 -2
  436. package/dist/chunk-Q3A4IBGC.js.map +0 -1
  437. package/dist/chunk-SCKQAF44.js +0 -2
  438. package/dist/chunk-UNA5CAPX.js +0 -2
  439. package/dist/chunk-UNA5CAPX.js.map +0 -1
  440. package/dist/client-IR7OHGEQ.js +0 -2
  441. package/dist/collab-activity-YOEJEJTQ.js +0 -2
  442. package/dist/collab-activity-YOEJEJTQ.js.map +0 -1
  443. package/dist/collab-invite-VDDBCLSH.js +0 -2
  444. package/dist/collab-invite-VDDBCLSH.js.map +0 -1
  445. package/dist/collab-leave-2AEIFR47.js +0 -2
  446. package/dist/collab-leave-2AEIFR47.js.map +0 -1
  447. package/dist/collab-list-MTJYXE53.js +0 -2
  448. package/dist/collab-list-MTJYXE53.js.map +0 -1
  449. package/dist/collab-remove-I3FKGFOF.js +0 -2
  450. package/dist/collab-remove-I3FKGFOF.js.map +0 -1
  451. package/dist/collab-transfer-VVHH6B2J.js +0 -2
  452. package/dist/collab-transfer-VVHH6B2J.js.map +0 -1
  453. package/dist/completion-IF3NB7PB.js.map +0 -1
  454. package/dist/config-PL34OPDL.js +0 -2
  455. package/dist/config-delete-4UN7BFBI.js +0 -2
  456. package/dist/config-delete-4UN7BFBI.js.map +0 -1
  457. package/dist/config-get-XOS7EWEQ.js +0 -2
  458. package/dist/config-get-XOS7EWEQ.js.map +0 -1
  459. package/dist/config-reset-NIOGYFA5.js +0 -2
  460. package/dist/config-reset-NIOGYFA5.js.map +0 -1
  461. package/dist/config-set-DRTRWWAA.js +0 -2
  462. package/dist/config-set-DRTRWWAA.js.map +0 -1
  463. package/dist/deploy-UOPO2HHL.js +0 -3
  464. package/dist/deploy-UOPO2HHL.js.map +0 -1
  465. package/dist/doctor-B7RAWBD5.js +0 -2
  466. package/dist/doctor-B7RAWBD5.js.map +0 -1
  467. package/dist/feedback-BEX6DRXB.js +0 -3
  468. package/dist/feedback-BEX6DRXB.js.map +0 -1
  469. package/dist/forms-clear-VPH7SHJZ.js +0 -2
  470. package/dist/forms-clear-VPH7SHJZ.js.map +0 -1
  471. package/dist/forms-create-O5W7O2BI.js +0 -2
  472. package/dist/forms-create-O5W7O2BI.js.map +0 -1
  473. package/dist/forms-delete-H4RY6C64.js +0 -2
  474. package/dist/forms-delete-H4RY6C64.js.map +0 -1
  475. package/dist/forms-embed-2WBFYFUO.js +0 -3
  476. package/dist/forms-embed-2WBFYFUO.js.map +0 -1
  477. package/dist/forms-export-MDWMZ7I7.js +0 -2
  478. package/dist/forms-export-MDWMZ7I7.js.map +0 -1
  479. package/dist/forms-info-VO4FK3CS.js +0 -2
  480. package/dist/forms-info-VO4FK3CS.js.map +0 -1
  481. package/dist/forms-list-PDSDIJI7.js +0 -2
  482. package/dist/forms-list-PDSDIJI7.js.map +0 -1
  483. package/dist/forms-submissions-VJQWV7SI.js +0 -2
  484. package/dist/forms-submissions-VJQWV7SI.js.map +0 -1
  485. package/dist/login-PMDO43CL.js +0 -3
  486. package/dist/login-PMDO43CL.js.map +0 -1
  487. package/dist/logout-XIUWCA75.js +0 -2
  488. package/dist/logout-XIUWCA75.js.map +0 -1
  489. package/dist/logs-export-AU4WZDLW.js +0 -2
  490. package/dist/logs-export-AU4WZDLW.js.map +0 -1
  491. package/dist/logs-search-BHVB3BIH.js +0 -2
  492. package/dist/logs-search-BHVB3BIH.js.map +0 -1
  493. package/dist/monitor-KLJ762WM.js +0 -2
  494. package/dist/monitor-KLJ762WM.js.map +0 -1
  495. package/dist/monitor-automations-B2NRWSFH.js +0 -2
  496. package/dist/monitor-automations-B2NRWSFH.js.map +0 -1
  497. package/dist/monitor-pipelines-2PNBET3B.js +0 -2
  498. package/dist/monitor-pipelines-2PNBET3B.js.map +0 -1
  499. package/dist/monitor-sites-QNMTCOSH.js +0 -2
  500. package/dist/monitor-sites-QNMTCOSH.js.map +0 -1
  501. package/dist/monitor-storage-Z53C4CI2.js +0 -2
  502. package/dist/monitor-storage-Z53C4CI2.js.map +0 -1
  503. package/dist/scripts-cancel-2HWDUPFM.js +0 -2
  504. package/dist/scripts-cancel-2HWDUPFM.js.map +0 -1
  505. package/dist/scripts-delete-UI6YRWEN.js +0 -2
  506. package/dist/scripts-delete-UI6YRWEN.js.map +0 -1
  507. package/dist/scripts-disable-7IXFGWWG.js +0 -2
  508. package/dist/scripts-disable-7IXFGWWG.js.map +0 -1
  509. package/dist/scripts-enable-DNEVMHLS.js +0 -2
  510. package/dist/scripts-enable-DNEVMHLS.js.map +0 -1
  511. package/dist/scripts-init-BIIEMUXV.js.map +0 -1
  512. package/dist/scripts-list-LYDOWRTU.js +0 -2
  513. package/dist/scripts-list-LYDOWRTU.js.map +0 -1
  514. package/dist/scripts-logs-32CWQEBA.js +0 -2
  515. package/dist/scripts-logs-32CWQEBA.js.map +0 -1
  516. package/dist/scripts-run-6AJVHB4U.js +0 -2
  517. package/dist/scripts-run-6AJVHB4U.js.map +0 -1
  518. package/dist/scripts-status-KCILW363.js +0 -2
  519. package/dist/scripts-status-KCILW363.js.map +0 -1
  520. package/dist/scripts-validate-MZP4MJZZ.js +0 -2
  521. package/dist/scripts-validate-MZP4MJZZ.js.map +0 -1
  522. package/dist/scripts-watch-3SFVPUAA.js +0 -2
  523. package/dist/scripts-watch-3SFVPUAA.js.map +0 -1
  524. package/dist/sign-cancel-KK745O7W.js +0 -2
  525. package/dist/sign-cancel-KK745O7W.js.map +0 -1
  526. package/dist/sign-download-6V3ABZG2.js +0 -2
  527. package/dist/sign-download-6V3ABZG2.js.map +0 -1
  528. package/dist/sign-list-VCNJSS6F.js +0 -2
  529. package/dist/sign-list-VCNJSS6F.js.map +0 -1
  530. package/dist/sign-request-LNRMPU2F.js +0 -2
  531. package/dist/sign-request-LNRMPU2F.js.map +0 -1
  532. package/dist/sign-status-PNAGMC7S.js +0 -2
  533. package/dist/sign-status-PNAGMC7S.js.map +0 -1
  534. package/dist/sign-verify-ZROVA7LH.js +0 -2
  535. package/dist/sign-verify-ZROVA7LH.js.map +0 -1
  536. package/dist/sites-analytics-L6KVTZNH.js +0 -2
  537. package/dist/sites-analytics-L6KVTZNH.js.map +0 -1
  538. package/dist/sites-delete-JCBOLOA7.js +0 -2
  539. package/dist/sites-delete-JCBOLOA7.js.map +0 -1
  540. package/dist/sites-deploys-XJ3NY4RQ.js +0 -2
  541. package/dist/sites-deploys-XJ3NY4RQ.js.map +0 -1
  542. package/dist/sites-info-V3R7YNPU.js +0 -2
  543. package/dist/sites-info-V3R7YNPU.js.map +0 -1
  544. package/dist/sites-list-ZQTXLHJ3.js +0 -2
  545. package/dist/sites-list-ZQTXLHJ3.js.map +0 -1
  546. package/dist/sites-open-K2JWMIWD.js +0 -3
  547. package/dist/sites-open-K2JWMIWD.js.map +0 -1
  548. package/dist/sites-purge-5Y5AQWBY.js +0 -2
  549. package/dist/sites-purge-5Y5AQWBY.js.map +0 -1
  550. package/dist/sites-rename-QH6YYXUE.js +0 -2
  551. package/dist/sites-rename-QH6YYXUE.js.map +0 -1
  552. package/dist/sites-rollback-ZQ2IHERR.js +0 -2
  553. package/dist/sites-rollback-ZQ2IHERR.js.map +0 -1
  554. package/dist/sites-unpublish-MDK4GP2C.js +0 -2
  555. package/dist/sites-unpublish-MDK4GP2C.js.map +0 -1
  556. package/dist/sites-visibility-WKPIU5OK.js +0 -2
  557. package/dist/sites-visibility-WKPIU5OK.js.map +0 -1
  558. package/dist/storage-cat-OAUEF3EE.js +0 -2
  559. package/dist/storage-cat-OAUEF3EE.js.map +0 -1
  560. package/dist/storage-clean-I7QZ5FR6.js +0 -2
  561. package/dist/storage-clean-I7QZ5FR6.js.map +0 -1
  562. package/dist/storage-cp-H36Q2ER4.js +0 -2
  563. package/dist/storage-cp-H36Q2ER4.js.map +0 -1
  564. package/dist/storage-diff-6KUEJ4DB.js +0 -2
  565. package/dist/storage-diff-6KUEJ4DB.js.map +0 -1
  566. package/dist/storage-download-32EYGI47.js +0 -3
  567. package/dist/storage-download-32EYGI47.js.map +0 -1
  568. package/dist/storage-info-2JSV56KE.js +0 -2
  569. package/dist/storage-info-2JSV56KE.js.map +0 -1
  570. package/dist/storage-ls-G33T3LMU.js +0 -3
  571. package/dist/storage-ls-G33T3LMU.js.map +0 -1
  572. package/dist/storage-mkdir-BDT3GX7A.js +0 -2
  573. package/dist/storage-mkdir-BDT3GX7A.js.map +0 -1
  574. package/dist/storage-mv-2QJZR2FL.js +0 -2
  575. package/dist/storage-mv-2QJZR2FL.js.map +0 -1
  576. package/dist/storage-rm-NRRRFG36.js +0 -2
  577. package/dist/storage-rm-NRRRFG36.js.map +0 -1
  578. package/dist/storage-search-E5BIXLSU.js +0 -2
  579. package/dist/storage-search-E5BIXLSU.js.map +0 -1
  580. package/dist/storage-share-EXSSZ6XL.js +0 -2
  581. package/dist/storage-share-EXSSZ6XL.js.map +0 -1
  582. package/dist/storage-tag-YV5GUZDV.js +0 -2
  583. package/dist/storage-tag-YV5GUZDV.js.map +0 -1
  584. package/dist/storage-unshare-MF4V2NGC.js +0 -2
  585. package/dist/storage-unshare-MF4V2NGC.js.map +0 -1
  586. package/dist/storage-upload-DYWSZ6RO.js +0 -9
  587. package/dist/storage-upload-DYWSZ6RO.js.map +0 -1
  588. package/dist/time-list-4T3FJE2I.js +0 -2
  589. package/dist/time-list-4T3FJE2I.js.map +0 -1
  590. package/dist/time-lock-O55XMYPX.js +0 -2
  591. package/dist/time-lock-O55XMYPX.js.map +0 -1
  592. package/dist/time-proof-SDANSS3D.js +0 -2
  593. package/dist/time-proof-SDANSS3D.js.map +0 -1
  594. package/dist/time-status-JFJA3MYK.js +0 -2
  595. package/dist/time-status-JFJA3MYK.js.map +0 -1
  596. package/dist/time-unlock-F7NGQ2IE.js +0 -2
  597. package/dist/time-unlock-F7NGQ2IE.js.map +0 -1
  598. package/dist/update-5PTOF5ZA.js +0 -2
  599. package/dist/update-5PTOF5ZA.js.map +0 -1
  600. package/dist/version-Y2LWIEFC.js.map +0 -1
  601. package/dist/whoami-BGMVNESX.js +0 -2
  602. package/dist/whoami-BGMVNESX.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import {x}from'./chunk-BC3STHFS.js';import {c}from'./chunk-5TMR6Y7L.js';import e from'chalk';async function t(){let r=(await c("/api/v1/monitor/storage",{authenticated:true})).health;x(""),x(e.bold(" Storage Health Report")),x(e.dim(" \u2500\u2500\u2500".repeat(10))),x(` ${e.bold("Broken Shares:")} ${r.broken_shares>0?e.red(r.broken_shares):e.green("0")}`),x(` ${e.bold("Orphaned Files:")} ${r.orphaned_files>0?e.yellow(r.orphaned_files):e.green("0")}`),x(` ${e.bold("Corrupted:")} ${r.corrupted_uploads>0?e.red(r.corrupted_uploads):e.green("0")}`),x(` ${e.bold("Near Limit:")} ${r.near_limit_folders>0?e.yellow(r.near_limit_folders):e.green("0")}`),x(` ${e.bold("Stale (90d):")} ${r.stale_files_90d>0?e.yellow(r.stale_files_90d):e.green("0")}`),x("");}export{t as a};//# sourceMappingURL=chunk-4VJET5IM.js.map
2
+ //# sourceMappingURL=chunk-4VJET5IM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/monitor/monitor-storage.ts"],"names":["monitorStorage","h","apiGet","logRaw","chalk"],"mappings":"6FAYA,eAAOA,CAAAA,EAAuD,CAE5D,IAAMC,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAkC,yBAAA,CAA2B,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACxF,MAAA,CAEfC,CAAAA,CAAO,EAAE,CAAA,CACTA,CAAAA,CAAOC,CAAAA,CAAM,IAAA,CAAK,yBAAyB,CAAC,CAAA,CAC5CD,CAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,CACpCD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,gBAAgB,CAAC,QAAQH,CAAAA,CAAE,aAAA,CAAgB,CAAA,CAAIG,CAAAA,CAAM,GAAA,CAAIH,CAAAA,CAAE,aAAa,CAAA,CAAIG,EAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CACrHD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,iBAAiB,CAAC,CAAA,IAAA,EAAOH,CAAAA,CAAE,cAAA,CAAiB,CAAA,CAAIG,CAAAA,CAAM,MAAA,CAAOH,EAAE,cAAc,CAAA,CAAIG,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CAC1HD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,YAAY,CAAC,CAAA,SAAA,EAAYH,CAAAA,CAAE,iBAAA,CAAoB,EAAIG,CAAAA,CAAM,GAAA,CAAIH,CAAAA,CAAE,iBAAiB,CAAA,CAAIG,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CAC7HD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,aAAa,CAAC,WAAWH,CAAAA,CAAE,kBAAA,CAAqB,CAAA,CAAIG,CAAAA,CAAM,MAAA,CAAOH,CAAAA,CAAE,kBAAkB,CAAA,CAAIG,EAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CAClID,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,cAAc,CAAC,CAAA,OAAA,EAAUH,CAAAA,CAAE,eAAA,CAAkB,CAAA,CAAIG,CAAAA,CAAM,MAAA,CAAOH,EAAE,eAAe,CAAA,CAAIG,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CAC5HD,CAAAA,CAAO,EAAE,EACX","file":"chunk-4VJET5IM.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logRaw } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\n\ninterface StorageHealth {\n broken_shares: number\n orphaned_files: number\n corrupted_uploads: number\n near_limit_folders: number\n stale_files_90d: number\n}\n\nexport default async function monitorStorage(): Promise<void> {\n const data = await apiGet<{ health: StorageHealth }>('/api/v1/monitor/storage', { authenticated: true })\n const h = data.health\n\n logRaw('')\n logRaw(chalk.bold(' Storage Health Report'))\n logRaw(chalk.dim(' ───'.repeat(10)))\n logRaw(` ${chalk.bold('Broken Shares:')} ${h.broken_shares > 0 ? chalk.red(h.broken_shares) : chalk.green('0')}`)\n logRaw(` ${chalk.bold('Orphaned Files:')} ${h.orphaned_files > 0 ? chalk.yellow(h.orphaned_files) : chalk.green('0')}`)\n logRaw(` ${chalk.bold('Corrupted:')} ${h.corrupted_uploads > 0 ? chalk.red(h.corrupted_uploads) : chalk.green('0')}`)\n logRaw(` ${chalk.bold('Near Limit:')} ${h.near_limit_folders > 0 ? chalk.yellow(h.near_limit_folders) : chalk.green('0')}`)\n logRaw(` ${chalk.bold('Stale (90d):')} ${h.stale_files_90d > 0 ? chalk.yellow(h.stale_files_90d) : chalk.green('0')}`)\n logRaw('')\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {q,y}from'./chunk-BC3STHFS.js';import g from'cli-table3';import f from'chalk';function a(r,t={}){return new g({head:r.map(e=>f.bold(e)),colAligns:t.colAligns,style:{head:[],border:[],"padding-left":1,"padding-right":1,...t.style},chars:{top:"\u2500","top-mid":"\u252C","top-left":"\u250C","top-right":"\u2510",bottom:"\u2500","bottom-mid":"\u2534","bottom-left":"\u2514","bottom-right":"\u2518",left:"\u2502","left-mid":"\u251C",mid:"\u2500","mid-mid":"\u253C",right:"\u2502","right-mid":"\u2524",middle:"\u2502"},...t.compact?{chars:{top:"","top-mid":"","top-left":"","top-right":"",bottom:"","bottom-mid":"","bottom-left":"","bottom-right":"",left:"","left-mid":"",mid:"","mid-mid":"",right:"","right-mid":"",middle:""},style:{"padding-left":0,"padding-right":2}}:{}})}function b(r,t){if(q())return y(r),"";let e=a(t.map(o=>o.label),{colAligns:t.map(o=>o.align??"left")});for(let o of r)e.push(t.map(i=>{let n=o[i.key];return i.format?i.format(n):String(n??"")}));return e.toString()}function c(r,t){if(q())return y(r),"";let e=a(t.map(o=>o.label),{colAligns:t.map(o=>o.align??"left"),compact:true});for(let o of r)e.push(t.map(i=>{let n=o[i.key];return i.format?i.format(n):String(n??"")}));return e.toString()}export{a,b,c};//# sourceMappingURL=chunk-52WHEL73.js.map
2
+ //# sourceMappingURL=chunk-52WHEL73.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/output/table.ts"],"names":["createTable","headers","options","Table","h","chalk","renderTable","data","columns","isJsonMode","logJSON","table","c","row","val","renderCompactTable"],"mappings":"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","file":"chunk-FNCZD2QB.js","sourcesContent":["import Table from 'cli-table3'\nimport chalk from 'chalk'\nimport { isCI } from '../utils/ci-detect.js'\nimport { isJsonMode, logJSON } from './logger.js'\n\ninterface ColumnDef {\n key: string\n label: string\n align?: 'left' | 'center' | 'right'\n format?: (value: unknown) => string\n}\n\ninterface TableOptions {\n head?: string[]\n colAligns?: ('left' | 'center' | 'right')[]\n style?: Record<string, unknown>\n compact?: boolean\n}\n\nexport function createTable(headers: string[], options: TableOptions = {}): Table.Table {\n return new Table({\n head: headers.map(h => chalk.bold(h)),\n colAligns: options.colAligns,\n style: {\n head: [],\n border: [],\n 'padding-left': 1,\n 'padding-right': 1,\n ...options.style,\n },\n chars: {\n top: '─',\n 'top-mid': '┬',\n 'top-left': '┌',\n 'top-right': '┐',\n bottom: '─',\n 'bottom-mid': '┴',\n 'bottom-left': '└',\n 'bottom-right': '┘',\n left: '│',\n 'left-mid': '├',\n mid: '─',\n 'mid-mid': '┼',\n right: '│',\n 'right-mid': '┤',\n middle: '│',\n },\n ...options.compact ? {\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n middle: '',\n },\n style: { 'padding-left': 0, 'padding-right': 2 },\n } : {},\n })\n}\n\nexport function renderTable(data: Record<string, unknown>[], columns: ColumnDef[]): string {\n if (isJsonMode()) {\n logJSON(data)\n return ''\n }\n const table = createTable(\n columns.map(c => c.label),\n { colAligns: columns.map(c => c.align ?? 'left') }\n )\n for (const row of data) {\n table.push(\n columns.map(c => {\n const val = row[c.key]\n return c.format ? c.format(val) : String(val ?? '')\n })\n )\n }\n return table.toString()\n}\n\nexport function renderCompactTable(data: Record<string, unknown>[], columns: ColumnDef[]): string {\n if (isJsonMode()) {\n logJSON(data)\n return ''\n }\n const table = createTable(\n columns.map(c => c.label),\n { colAligns: columns.map(c => c.align ?? 'left'), compact: true }\n )\n for (const row of data) {\n table.push(\n columns.map(c => {\n const val = row[c.key]\n return c.format ? c.format(val) : String(val ?? '')\n })\n )\n }\n return table.toString()\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/output/table.ts"],"names":["createTable","headers","options","Table","h","chalk","renderTable","data","columns","isJsonMode","logJSON","table","c","row","val","renderCompactTable"],"mappings":"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","file":"chunk-52WHEL73.js","sourcesContent":["import Table from 'cli-table3'\nimport chalk from 'chalk'\nimport { isCI } from '../utils/ci-detect.js'\nimport { isJsonMode, logJSON } from './logger.js'\n\ninterface ColumnDef {\n key: string\n label: string\n align?: 'left' | 'center' | 'right'\n format?: (value: unknown) => string\n}\n\ninterface TableOptions {\n head?: string[]\n colAligns?: ('left' | 'center' | 'right')[]\n style?: Record<string, unknown>\n compact?: boolean\n}\n\nexport function createTable(headers: string[], options: TableOptions = {}): Table.Table {\n return new Table({\n head: headers.map(h => chalk.bold(h)),\n colAligns: options.colAligns,\n style: {\n head: [],\n border: [],\n 'padding-left': 1,\n 'padding-right': 1,\n ...options.style,\n },\n chars: {\n top: '─',\n 'top-mid': '┬',\n 'top-left': '┌',\n 'top-right': '┐',\n bottom: '─',\n 'bottom-mid': '┴',\n 'bottom-left': '└',\n 'bottom-right': '┘',\n left: '│',\n 'left-mid': '├',\n mid: '─',\n 'mid-mid': '┼',\n right: '│',\n 'right-mid': '┤',\n middle: '│',\n },\n ...options.compact ? {\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n middle: '',\n },\n style: { 'padding-left': 0, 'padding-right': 2 },\n } : {},\n })\n}\n\nexport function renderTable(data: Record<string, unknown>[], columns: ColumnDef[]): string {\n if (isJsonMode()) {\n logJSON(data)\n return ''\n }\n const table = createTable(\n columns.map(c => c.label),\n { colAligns: columns.map(c => c.align ?? 'left') }\n )\n for (const row of data) {\n table.push(\n columns.map(c => {\n const val = row[c.key]\n return c.format ? c.format(val) : String(val ?? '')\n })\n )\n }\n return table.toString()\n}\n\nexport function renderCompactTable(data: Record<string, unknown>[], columns: ColumnDef[]): string {\n if (isJsonMode()) {\n logJSON(data)\n return ''\n }\n const table = createTable(\n columns.map(c => c.label),\n { colAligns: columns.map(c => c.align ?? 'left'), compact: true }\n )\n for (const row of data) {\n table.push(\n columns.map(c => {\n const val = row[c.key]\n return c.format ? c.format(val) : String(val ?? '')\n })\n )\n }\n return table.toString()\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-YZWZNR6K.js';import {s}from'./chunk-BC3STHFS.js';import {c as c$1}from'./chunk-5TMR6Y7L.js';import n from'fs';import p from'path';async function m(t){let o=c("Exporting submissions...");o.start();let c$2=await c$1(`/api/v1/forms/${t}/export`,{authenticated:true});o.succeed();let s$1=p.join(process.cwd(),`filereq-${t.slice(0,8)}-submissions.csv`);n.writeFileSync(s$1,c$2.csv,"utf-8"),s(`Exported to ${s$1}`);}export{m as a};//# sourceMappingURL=chunk-54BNCBLD.js.map
2
+ //# sourceMappingURL=chunk-54BNCBLD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/forms/forms-export.ts"],"names":["formsExport","id","spinner","createSpinner","data","apiGet","filePath","path","fs","logSuccess"],"mappings":"yJAMA,eAAOA,CAAAA,CAAmCC,CAAAA,CAA2B,CACnE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,0BAA0B,CAAA,CACxDD,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,GAAAA,CAAO,MAAMC,GAAAA,CAAwB,CAAA,cAAA,EAAiBJ,CAAE,CAAA,OAAA,CAAA,CAAW,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAChGC,EAAQ,OAAA,EAAQ,CAChB,IAAMI,GAAAA,CAAWC,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAI,CAAG,CAAA,QAAA,EAAWN,CAAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,gBAAA,CAAkB,CAAA,CACrFO,CAAAA,CAAG,aAAA,CAAcF,GAAAA,CAAUF,GAAAA,CAAK,GAAA,CAAK,OAAO,CAAA,CAC5CK,CAAAA,CAAW,CAAA,YAAA,EAAeH,GAAQ,CAAA,CAAE,EACtC","file":"chunk-54BNCBLD.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function formsExport(id: string): Promise<void> {\n const spinner = createSpinner('Exporting submissions...')\n spinner.start()\n const data = await apiGet<{ csv: string }>(`/api/v1/forms/${id}/export`, { authenticated: true })\n spinner.succeed()\n const filePath = path.join(process.cwd(), `filereq-${id.slice(0, 8)}-submissions.csv`)\n fs.writeFileSync(filePath, data.csv, 'utf-8')\n logSuccess(`Exported to ${filePath}`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-YZWZNR6K.js';import {v,w,g,s}from'./chunk-BC3STHFS.js';import {a}from'./chunk-CQAXMUFB.js';import {f}from'./chunk-BQGHHBGH.js';import u from'inquirer';async function d(){let t=await f();if(t){v(`Already authenticated as ${t.user.email}`);let{force:e}=await u.prompt([{type:"confirm",name:"force",message:"Re-authenticate?",default:false}]);if(!e)return}let r=await u.prompt([{type:"input",name:"email",message:"Email:",validate:e=>e.includes("@")?true:"Please enter a valid email"},{type:"password",name:"password",message:"Password:",mask:"*"}]),a$1=c("Authenticating with SquidCloud...");a$1.start();try{let e=await a(r.email,r.password);a$1.succeed(),w(`Welcome to SquidCloud, ${g(e.user.username)}!`),s(`Authenticated as ${e.user.email} (${e.user.plan})`);}catch(e){throw a$1.fail(),e}}export{d as a};//# sourceMappingURL=chunk-54MZLE2R.js.map
2
+ //# sourceMappingURL=chunk-54MZLE2R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/auth/login.ts"],"names":["login","existing","loadSession","logInfo","force","inquirer","answers","v","spinner","createSpinner","session","performSSPHandshake","logBrand","brand","logSuccess","err"],"mappings":"8KAOA,eAAOA,CAAAA,EAA8C,CACnD,IAAMC,CAAAA,CAAW,MAAMC,CAAAA,EAAY,CACnC,GAAID,CAAAA,CAAU,CACZE,CAAAA,CAAQ,CAAA,yBAAA,EAA4BF,CAAAA,CAAS,IAAA,CAAK,KAAK,CAAA,CAAE,CAAA,CACzD,GAAM,CAAE,KAAA,CAAAG,CAAM,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACvC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,OAAA,CACN,OAAA,CAAS,kBAAA,CACT,OAAA,CAAS,KACX,CAAC,CAAC,CAAA,CACF,GAAI,CAACD,CAAAA,CAAO,MACd,CAEA,IAAME,CAAAA,CAAU,MAAMD,CAAAA,CAAS,MAAA,CAAO,CACpC,CACE,IAAA,CAAM,OAAA,CACN,IAAA,CAAM,OAAA,CACN,OAAA,CAAS,QAAA,CACT,QAAA,CAAWE,CAAAA,EAAcA,EAAE,QAAA,CAAS,GAAG,CAAA,CAAI,IAAA,CAAO,4BACpD,CAAA,CACA,CACE,IAAA,CAAM,UAAA,CACN,IAAA,CAAM,UAAA,CACN,OAAA,CAAS,WAAA,CACT,IAAA,CAAM,GACR,CACF,CAAC,CAAA,CAEKC,GAAAA,CAAUC,CAAAA,CAAc,mCAAmC,CAAA,CACjED,GAAAA,CAAQ,KAAA,EAAM,CAEd,GAAI,CACF,IAAME,CAAAA,CAAU,MAAMC,CAAAA,CAAoBL,CAAAA,CAAQ,MAAOA,CAAAA,CAAQ,QAAQ,CAAA,CACzEE,GAAAA,CAAQ,OAAA,EAAQ,CAChBI,CAAAA,CAAS,CAAA,uBAAA,EAA0BC,CAAAA,CAAMH,CAAAA,CAAQ,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAA,CAAG,CAAA,CAClEI,CAAAA,CAAW,oBAAoBJ,CAAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,EAAA,EAAKA,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,CAAA,CAAG,EAC5E,CAAA,MAASK,CAAAA,CAAK,CACZ,MAAAP,GAAAA,CAAQ,IAAA,EAAK,CACPO,CACR,CACF","file":"chunk-54MZLE2R.js","sourcesContent":["import inquirer from 'inquirer'\nimport { performSSPHandshake } from '../../lib/auth/ssp-handshake.js'\nimport { loadSession } from '../../lib/auth/session.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logInfo, logBrand } from '../../lib/output/logger.js'\nimport { brand } from '../../lib/output/brand.js'\n\nexport default async function login(): Promise<void> {\n const existing = await loadSession()\n if (existing) {\n logInfo(`Already authenticated as ${existing.user.email}`)\n const { force } = await inquirer.prompt([{\n type: 'confirm',\n name: 'force',\n message: 'Re-authenticate?',\n default: false,\n }])\n if (!force) return\n }\n\n const answers = await inquirer.prompt([\n {\n type: 'input',\n name: 'email',\n message: 'Email:',\n validate: (v: string) => v.includes('@') ? true : 'Please enter a valid email',\n },\n {\n type: 'password',\n name: 'password',\n message: 'Password:',\n mask: '*',\n },\n ])\n\n const spinner = createSpinner('Authenticating with SquidCloud...')\n spinner.start()\n\n try {\n const session = await performSSPHandshake(answers.email, answers.password)\n spinner.succeed()\n logBrand(`Welcome to SquidCloud, ${brand(session.user.username)}!`)\n logSuccess(`Authenticated as ${session.user.email} (${session.user.plan})`)\n } catch (err) {\n spinner.fail()\n throw err\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-52WHEL73.js';import {d}from'./chunk-OSI5H2T5.js';import {c}from'./chunk-5TMR6Y7L.js';import e from'chalk';async function r(){let s=((await c("/api/v1/scripts",{authenticated:true})).scripts||[]).map(t=>({name:e.hex("#4FC3F7")(t.name),file:e.dim(t.file_path),last_run:t.last_run?d(t.last_run):e.dim("never"),status:t.last_status==="success"?e.green("\u2713"):t.last_status==="failed"?e.red("\u2717"):e.dim("-"),enabled:t.enabled?e.green("yes"):e.yellow("no")}));console.log(b(s,[{key:"name",label:"Name"},{key:"file",label:"File"},{key:"last_run",label:"Last Run"},{key:"status",label:"Status"},{key:"enabled",label:"Enabled"}]));}export{r as a};//# sourceMappingURL=chunk-57X5IOZ5.js.map
2
+ //# sourceMappingURL=chunk-57X5IOZ5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/scripts/scripts-list.ts"],"names":["scriptsList","rows","apiGet","s","chalk","formatRelative","renderTable"],"mappings":"iIAaA,eAAOA,CAAAA,EAAoD,CAEzD,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAkC,iBAAA,CAAmB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC5E,OAAA,EAAW,EAAC,EAAG,GAAA,CAAIC,CAAAA,GAAM,CAC1C,IAAA,CAAMC,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAED,CAAAA,CAAE,IAAI,CAAA,CACjC,IAAA,CAAMC,CAAAA,CAAM,GAAA,CAAID,CAAAA,CAAE,SAAS,CAAA,CAC3B,QAAA,CAAUA,CAAAA,CAAE,QAAA,CAAWE,CAAAA,CAAeF,CAAAA,CAAE,QAAQ,CAAA,CAAIC,EAAM,GAAA,CAAI,OAAO,CAAA,CACrE,MAAA,CAAQD,CAAAA,CAAE,WAAA,GAAgB,SAAA,CAAYC,CAAAA,CAAM,KAAA,CAAM,QAAG,CAAA,CAAID,CAAAA,CAAE,WAAA,GAAgB,QAAA,CAAWC,EAAM,GAAA,CAAI,QAAG,CAAA,CAAIA,CAAAA,CAAM,GAAA,CAAI,GAAG,CAAA,CACpH,OAAA,CAASD,CAAAA,CAAE,OAAA,CAAUC,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,EAAM,MAAA,CAAO,IAAI,CAC7D,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,GAAA,CAAIE,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,UAAA,CAAY,KAAA,CAAO,UAAW,CAAA,CACrC,CAAE,IAAK,QAAA,CAAU,KAAA,CAAO,QAAS,CAAA,CACjC,CAAE,GAAA,CAAK,SAAA,CAAW,KAAA,CAAO,SAAU,CACrC,CAAC,CAAC,EACJ","file":"chunk-57X5IOZ5.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface ScriptInfo {\n name: string\n file_path: string\n last_run: string | null\n last_status: string | null\n enabled: boolean\n}\n\nexport default async function scriptsList(): Promise<void> {\n const data = await apiGet<{ scripts: ScriptInfo[] }>('/api/v1/scripts', { authenticated: true })\n const rows = (data.scripts || []).map(s => ({\n name: chalk.hex('#4FC3F7')(s.name),\n file: chalk.dim(s.file_path),\n last_run: s.last_run ? formatRelative(s.last_run) : chalk.dim('never'),\n status: s.last_status === 'success' ? chalk.green('✓') : s.last_status === 'failed' ? chalk.red('✗') : chalk.dim('-'),\n enabled: s.enabled ? chalk.green('yes') : chalk.yellow('no'),\n }))\n console.log(renderTable(rows, [\n { key: 'name', label: 'Name' },\n { key: 'file', label: 'File' },\n { key: 'last_run', label: 'Last Run' },\n { key: 'status', label: 'Status' },\n { key: 'enabled', label: 'Enabled' },\n ]))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-WRKYGGYI.js';import {q,y}from'./chunk-BC3STHFS.js';async function f(o){let i=b().get(o);if(q()){y({[o]:i});return}console.log(String(i??""));}export{f as a};//# sourceMappingURL=chunk-5DXTXML2.js.map
2
+ //# sourceMappingURL=chunk-5DXTXML2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/util/config-get.ts"],"names":["configGet","key","value","getConfig","isJsonMode","logJSON"],"mappings":"0EAIA,eAAOA,CAAAA,CAAiCC,CAAAA,CAA4B,CAElE,IAAMC,CAAAA,CADSC,CAAAA,EAAU,CACJ,GAAA,CAAIF,CAAG,CAAA,CAC5B,GAAIG,CAAAA,GAAc,CAChBC,CAAAA,CAAQ,CAAE,CAACJ,CAAG,EAAGC,CAAM,CAAC,CAAA,CACxB,MACF,CACA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAOA,CAAAA,EAAS,EAAE,CAAC,EACjC","file":"chunk-5DXTXML2.js","sourcesContent":["import { getConfig } from './config.js'\nimport { logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nexport default async function configGet(key: string): Promise<void> {\n const config = getConfig()\n const value = config.get(key)\n if (isJsonMode()) {\n logJSON({ [key]: value })\n return\n }\n console.log(String(value ?? ''))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-YZWZNR6K.js';import {q,y,x}from'./chunk-BC3STHFS.js';import {d}from'./chunk-OSI5H2T5.js';import {c as c$1}from'./chunk-5TMR6Y7L.js';import t from'chalk';async function h(r){let n=c(`Checking status of "${r}"...`);n.start();let u=await c$1(`/api/v1/scripts/${r}/status`,{authenticated:true});n.stop();let e=u.status;if(q()){y(e);return}x(""),x(` ${t.bold(e.name)}`),x(t.dim(" \u2500\u2500\u2500".repeat(8)));let c$2=e.health==="healthy"?t.green:e.health==="degraded"?t.yellow:t.red;x(` ${t.bold("Health:")} ${c$2("\u25CF")} ${e.health}`),x(` ${t.bold("Enabled:")} ${e.enabled?t.green("yes"):t.red("no")}`),x(` ${t.bold("Running:")} ${e.running?t.yellow("yes"):t.green("no")}`),x(` ${t.bold("Last OK:")} ${e.last_success?d(e.last_success):t.dim("never")}`),x(` ${t.bold("Last Fail:")} ${e.last_failure?d(e.last_failure):t.dim("never")}`),x("");}export{h as a};//# sourceMappingURL=chunk-5JPIAFB2.js.map
2
+ //# sourceMappingURL=chunk-5JPIAFB2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/scripts/scripts-status.ts"],"names":["scriptsStatus","name","spinner","createSpinner","data","apiGet","s","isJsonMode","logJSON","logRaw","chalk","healthColor","formatRelative"],"mappings":"gLAgBA,eAAOA,EAAqCC,CAAAA,CAA6B,CACvE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,oBAAA,EAAuBF,CAAI,MAAM,CAAA,CAC/DC,CAAAA,CAAQ,OAAM,CACd,IAAME,EAAO,MAAMC,GAAAA,CAAiC,CAAA,gBAAA,EAAmBJ,CAAI,UAAW,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC7GC,EAAQ,IAAA,EAAK,CACb,IAAMI,CAAAA,CAAIF,EAAK,MAAA,CAEf,GAAIG,GAAW,CAAG,CAChBC,EAAQF,CAAC,CAAA,CACT,MACF,CAEAG,EAAO,EAAE,CAAA,CACTA,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAKJ,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,EAChCG,CAAAA,CAAOC,CAAAA,CAAM,IAAI,sBAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CACnC,IAAMC,IAAcL,CAAAA,CAAE,MAAA,GAAW,UAAYI,CAAAA,CAAM,KAAA,CAAQJ,EAAE,MAAA,GAAW,UAAA,CAAaI,CAAAA,CAAM,MAAA,CAASA,EAAM,GAAA,CAC1GD,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,GAAA,EAAMC,GAAAA,CAAY,QAAG,CAAC,CAAA,CAAA,EAAIL,CAAAA,CAAE,MAAM,CAAA,CAAE,CAAA,CACrEG,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,EAAA,EAAKJ,CAAAA,CAAE,QAAUI,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,CAAAA,CAAM,GAAA,CAAI,IAAI,CAAC,CAAA,CAAE,CAAA,CACzFD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,UAAU,CAAC,CAAA,EAAA,EAAKJ,CAAAA,CAAE,QAAUI,CAAAA,CAAM,MAAA,CAAO,KAAK,CAAA,CAAIA,CAAAA,CAAM,MAAM,IAAI,CAAC,CAAA,CAAE,CAAA,CAC5FD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,UAAU,CAAC,KAAKJ,CAAAA,CAAE,YAAA,CAAeM,CAAAA,CAAeN,CAAAA,CAAE,YAAY,CAAA,CAAII,CAAAA,CAAM,IAAI,OAAO,CAAC,EAAE,CAAA,CAC7GD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,YAAY,CAAC,IAAIJ,CAAAA,CAAE,YAAA,CAAeM,EAAeN,CAAAA,CAAE,YAAY,CAAA,CAAII,CAAAA,CAAM,IAAI,OAAO,CAAC,EAAE,CAAA,CAC9GD,CAAAA,CAAO,EAAE,EACX","file":"chunk-5JPIAFB2.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface ScriptStatus {\n name: string\n enabled: boolean\n running: boolean\n last_success: string | null\n last_failure: string | null\n health: 'healthy' | 'degraded' | 'failing'\n}\n\nexport default async function scriptsStatus(name: string): Promise<void> {\n const spinner = createSpinner(`Checking status of \"${name}\"...`)\n spinner.start()\n const data = await apiGet<{ status: ScriptStatus }>(`/api/v1/scripts/${name}/status`, { authenticated: true })\n spinner.stop()\n const s = data.status\n\n if (isJsonMode()) {\n logJSON(s)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(s.name)}`)\n logRaw(chalk.dim(' ───'.repeat(8)))\n const healthColor = s.health === 'healthy' ? chalk.green : s.health === 'degraded' ? chalk.yellow : chalk.red\n logRaw(` ${chalk.bold('Health:')} ${healthColor('●')} ${s.health}`)\n logRaw(` ${chalk.bold('Enabled:')} ${s.enabled ? chalk.green('yes') : chalk.red('no')}`)\n logRaw(` ${chalk.bold('Running:')} ${s.running ? chalk.yellow('yes') : chalk.green('no')}`)\n logRaw(` ${chalk.bold('Last OK:')} ${s.last_success ? formatRelative(s.last_success) : chalk.dim('never')}`)\n logRaw(` ${chalk.bold('Last Fail:')} ${s.last_failure ? formatRelative(s.last_failure) : chalk.dim('never')}`)\n logRaw('')\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-NDB6KXYI.js';import {a as a$1}from'./chunk-IJ3JNWT6.js';import {f}from'./chunk-BQGHHBGH.js';var q=3,x=1e3,h=1e3,R=a(),g=0;async function O(){let e=Date.now()-g;e<h&&await new Promise(n=>setTimeout(n,h-e)),g=Date.now();}async function T(t,e={}){let{method:n="GET",headers:s={},body:r,authenticated:p=false,retries:a=q}=e;await O();let c={"Content-Type":"application/json",...s};if(p){let o=await f();if(o?.api_key)c["x-squidcloud-key"]=o.api_key;else if(o?.access_token){let i=await a$1();i?.api_key&&(c["x-squidcloud-key"]=i.api_key);}}let f$1=`${R}${t}`,u={method:n,headers:c};r&&n!=="GET"&&(u.body=JSON.stringify(r));let l=null;for(let o=0;o<=a;o++)try{let i=await fetch(f$1,u);return k(i)}catch(i){if(l=i instanceof Error?i:new Error(String(i)),o<a){let E=x*Math.pow(2,o)*(.5+Math.random()*.5);await new Promise(P=>setTimeout(P,E));}}throw l||new Error(`Request failed: ${t}`)}async function k(t){if(t.status===204)return;if((t.headers.get("content-type")||"").includes("application/json")){let s=await t.json();if(!t.ok){let r=s?.error?.message||s?.message||`HTTP ${t.status}`;throw new d(r,t.status,s?.error)}return s}if(!t.ok){let s=await t.text();throw new d(s||`HTTP ${t.status}`,t.status)}return await t.text()}var d=class extends Error{constructor(n,s,r){super(n);this.status=s;this.details=r;this.name="ApiError";}status;details};async function A(t,e){return T(t,{...e,method:"GET"})}async function D(t,e,n){return T(t,{...n,method:"POST",body:e})}async function $(t,e,n){return T(t,{...n,method:"PUT",body:e})}async function I(t,e){return T(t,{...e,method:"DELETE"})}async function G(t,e,n){let{method:s="POST",headers:r={},authenticated:p=false}=n||{},a={...r};if(p){let u=await f();u?.api_key&&(a["x-squidcloud-key"]=u.api_key);}let c=`${R}${t}`,f$1=await fetch(c,{method:s,headers:a,body:e});return k(f$1)}export{T as a,d as b,A as c,D as d,$ as e,I as f,G as g};//# sourceMappingURL=chunk-5TMR6Y7L.js.map
2
+ //# sourceMappingURL=chunk-5TMR6Y7L.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/api/client.ts"],"names":["MAX_RETRIES","BASE_DELAY","RATE_LIMIT_WINDOW","API_BASE","getApiBase","lastRequestTime","rateLimit","elapsed","r","apiRequest","path","options","method","headers","body","authenticated","retries","reqHeaders","session","loadSession","newSession","refreshAccessToken","url","fetchOptions","lastError","attempt","response","handleResponse","err","delay","data","message","ApiError","text","status","details","apiGet","apiPost","apiPut","apiDelete","apiUpload","formData"],"mappings":"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","file":"chunk-CHBVIZF5.js","sourcesContent":["import { loadSession } from '../auth/session.js'\nimport { refreshAccessToken } from '../auth/refresh.js'\nimport { getApiBase } from './cert-pin.js'\n\nconst MAX_RETRIES = 3\nconst BASE_DELAY = 1000\nconst RATE_LIMIT_WINDOW = 1000\nconst API_BASE = getApiBase()\n\ninterface RequestOptions {\n method?: string\n headers?: Record<string, string>\n body?: unknown\n authenticated?: boolean\n retries?: number\n}\n\nlet lastRequestTime = 0\n\nasync function rateLimit(): Promise<void> {\n const now = Date.now()\n const elapsed = now - lastRequestTime\n if (elapsed < RATE_LIMIT_WINDOW) {\n await new Promise(r => setTimeout(r, RATE_LIMIT_WINDOW - elapsed))\n }\n lastRequestTime = Date.now()\n}\n\nexport async function apiRequest<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const { method = 'GET', headers = {}, body, authenticated = false, retries = MAX_RETRIES } = options\n\n await rateLimit()\n\n const reqHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...headers,\n }\n\n if (authenticated) {\n const session = await loadSession()\n if (session?.api_key) {\n reqHeaders['x-squidcloud-key'] = session.api_key\n } else if (session?.access_token) {\n const newSession = await refreshAccessToken()\n if (newSession?.api_key) {\n reqHeaders['x-squidcloud-key'] = newSession.api_key\n }\n }\n }\n\n const url = `${API_BASE}${path}`\n const fetchOptions: RequestInit = {\n method,\n headers: reqHeaders,\n }\n\n if (body && method !== 'GET') {\n fetchOptions.body = JSON.stringify(body)\n }\n\n let lastError: Error | null = null\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n const response = await fetch(url, fetchOptions)\n return handleResponse<T>(response)\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err))\n if (attempt < retries) {\n const delay = BASE_DELAY * Math.pow(2, attempt) * (0.5 + Math.random() * 0.5)\n await new Promise(r => setTimeout(r, delay))\n }\n }\n }\n\n throw lastError || new Error(`Request failed: ${path}`)\n}\n\nasync function handleResponse<T>(response: Response): Promise<T> {\n if (response.status === 204) {\n return undefined as T\n }\n const contentType = response.headers.get('content-type') || ''\n if (contentType.includes('application/json')) {\n const data = await response.json()\n if (!response.ok) {\n const message = data?.error?.message || data?.message || `HTTP ${response.status}`\n throw new ApiError(message, response.status, data?.error)\n }\n return data as T\n }\n if (!response.ok) {\n const text = await response.text()\n throw new ApiError(text || `HTTP ${response.status}`, response.status)\n }\n const text = await response.text()\n return text as unknown as T\n}\n\nexport class ApiError extends Error {\n constructor(\n message: string,\n public status: number,\n public details?: unknown,\n ) {\n super(message)\n this.name = 'ApiError'\n }\n}\n\nexport async function apiGet<T>(path: string, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'GET' })\n}\n\nexport async function apiPost<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'POST', body })\n}\n\nexport async function apiPut<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'PUT', body })\n}\n\nexport async function apiDelete<T>(path: string, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'DELETE' })\n}\n\nexport async function apiUpload<T>(path: string, formData: FormData, options?: RequestOptions): Promise<T> {\n const { method = 'POST', headers = {}, authenticated = false } = options || {}\n\n const reqHeaders: Record<string, string> = {\n ...headers,\n }\n\n if (authenticated) {\n const session = await loadSession()\n if (session?.api_key) {\n reqHeaders['x-squidcloud-key'] = session.api_key\n }\n }\n\n const url = `${API_BASE}${path}`\n const response = await fetch(url, {\n method,\n headers: reqHeaders,\n body: formData,\n })\n\n return handleResponse<T>(response)\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/api/client.ts"],"names":["MAX_RETRIES","BASE_DELAY","RATE_LIMIT_WINDOW","API_BASE","getApiBase","lastRequestTime","rateLimit","elapsed","r","apiRequest","path","options","method","headers","body","authenticated","retries","reqHeaders","session","loadSession","newSession","refreshAccessToken","url","fetchOptions","lastError","attempt","response","handleResponse","err","delay","data","message","ApiError","text","status","details","apiGet","apiPost","apiPut","apiDelete","apiUpload","formData"],"mappings":"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","file":"chunk-5TMR6Y7L.js","sourcesContent":["import { loadSession } from '../auth/session.js'\nimport { refreshAccessToken } from '../auth/refresh.js'\nimport { getApiBase } from './cert-pin.js'\n\nconst MAX_RETRIES = 3\nconst BASE_DELAY = 1000\nconst RATE_LIMIT_WINDOW = 1000\nconst API_BASE = getApiBase()\n\ninterface RequestOptions {\n method?: string\n headers?: Record<string, string>\n body?: unknown\n authenticated?: boolean\n retries?: number\n}\n\nlet lastRequestTime = 0\n\nasync function rateLimit(): Promise<void> {\n const now = Date.now()\n const elapsed = now - lastRequestTime\n if (elapsed < RATE_LIMIT_WINDOW) {\n await new Promise(r => setTimeout(r, RATE_LIMIT_WINDOW - elapsed))\n }\n lastRequestTime = Date.now()\n}\n\nexport async function apiRequest<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const { method = 'GET', headers = {}, body, authenticated = false, retries = MAX_RETRIES } = options\n\n await rateLimit()\n\n const reqHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...headers,\n }\n\n if (authenticated) {\n const session = await loadSession()\n if (session?.api_key) {\n reqHeaders['x-squidcloud-key'] = session.api_key\n } else if (session?.access_token) {\n const newSession = await refreshAccessToken()\n if (newSession?.api_key) {\n reqHeaders['x-squidcloud-key'] = newSession.api_key\n }\n }\n }\n\n const url = `${API_BASE}${path}`\n const fetchOptions: RequestInit = {\n method,\n headers: reqHeaders,\n }\n\n if (body && method !== 'GET') {\n fetchOptions.body = JSON.stringify(body)\n }\n\n let lastError: Error | null = null\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n const response = await fetch(url, fetchOptions)\n return handleResponse<T>(response)\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err))\n if (attempt < retries) {\n const delay = BASE_DELAY * Math.pow(2, attempt) * (0.5 + Math.random() * 0.5)\n await new Promise(r => setTimeout(r, delay))\n }\n }\n }\n\n throw lastError || new Error(`Request failed: ${path}`)\n}\n\nasync function handleResponse<T>(response: Response): Promise<T> {\n if (response.status === 204) {\n return undefined as T\n }\n const contentType = response.headers.get('content-type') || ''\n if (contentType.includes('application/json')) {\n const data = await response.json()\n if (!response.ok) {\n const message = data?.error?.message || data?.message || `HTTP ${response.status}`\n throw new ApiError(message, response.status, data?.error)\n }\n return data as T\n }\n if (!response.ok) {\n const text = await response.text()\n throw new ApiError(text || `HTTP ${response.status}`, response.status)\n }\n const text = await response.text()\n return text as unknown as T\n}\n\nexport class ApiError extends Error {\n constructor(\n message: string,\n public status: number,\n public details?: unknown,\n ) {\n super(message)\n this.name = 'ApiError'\n }\n}\n\nexport async function apiGet<T>(path: string, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'GET' })\n}\n\nexport async function apiPost<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'POST', body })\n}\n\nexport async function apiPut<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'PUT', body })\n}\n\nexport async function apiDelete<T>(path: string, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'DELETE' })\n}\n\nexport async function apiUpload<T>(path: string, formData: FormData, options?: RequestOptions): Promise<T> {\n const { method = 'POST', headers = {}, authenticated = false } = options || {}\n\n const reqHeaders: Record<string, string> = {\n ...headers,\n }\n\n if (authenticated) {\n const session = await loadSession()\n if (session?.api_key) {\n reqHeaders['x-squidcloud-key'] = session.api_key\n }\n }\n\n const url = `${API_BASE}${path}`\n const response = await fetch(url, {\n method,\n headers: reqHeaders,\n body: formData,\n })\n\n return handleResponse<T>(response)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-52WHEL73.js';import {d,a}from'./chunk-OSI5H2T5.js';import {c}from'./chunk-5TMR6Y7L.js';import m from'chalk';async function n(r){let s=((await c(`/api/v1/storage/search?q=${encodeURIComponent(r)}`,{authenticated:true})).results||[]).map(e=>({name:e.name,path:m.dim(e.path),type:e.type,size:a(e.size),modified:e.updated_at?d(e.updated_at):""}));console.log(b(s,[{key:"name",label:"Name"},{key:"path",label:"Path"},{key:"type",label:"Type"},{key:"size",label:"Size"},{key:"modified",label:"Modified"}]));}export{n as a};//# sourceMappingURL=chunk-5Z3A46OK.js.map
2
+ //# sourceMappingURL=chunk-5Z3A46OK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/storage/storage-search.ts"],"names":["storageSearch","query","rows","apiGet","r","chalk","formatBytes","formatRelative","renderTable"],"mappings":"mIAaA,eAAOA,EAAqCC,CAAAA,CAA8B,CAExE,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,EAAoC,CAAA,yBAAA,EAA4B,kBAAA,CAAmBF,CAAK,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACpH,OAAA,EAAW,EAAC,EAAG,GAAA,CAAIG,IAAM,CAC1C,IAAA,CAAMA,EAAE,IAAA,CACR,IAAA,CAAMC,EAAM,GAAA,CAAID,CAAAA,CAAE,IAAI,CAAA,CACtB,IAAA,CAAMA,EAAE,IAAA,CACR,IAAA,CAAME,EAAYF,CAAAA,CAAE,IAAI,EACxB,QAAA,CAAUA,CAAAA,CAAE,UAAA,CAAaG,CAAAA,CAAeH,EAAE,UAAU,CAAA,CAAI,EAC1D,CAAA,CAAE,CAAA,CACF,QAAQ,GAAA,CAAII,CAAAA,CAAYN,EAAM,CAC5B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,UAAA,CAAY,KAAA,CAAO,UAAW,CACvC,CAAC,CAAC,EACJ","file":"chunk-5Z3A46OK.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatBytes, formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface SearchResult {\n name: string\n path: string\n type: string\n size: number\n updated_at: string\n}\n\nexport default async function storageSearch(query: string): Promise<void> {\n const data = await apiGet<{ results: SearchResult[] }>(`/api/v1/storage/search?q=${encodeURIComponent(query)}`, { authenticated: true })\n const rows = (data.results || []).map(r => ({\n name: r.name,\n path: chalk.dim(r.path),\n type: r.type,\n size: formatBytes(r.size),\n modified: r.updated_at ? formatRelative(r.updated_at) : '',\n }))\n console.log(renderTable(rows, [\n { key: 'name', label: 'Name' },\n { key: 'path', label: 'Path' },\n { key: 'type', label: 'Type' },\n { key: 'size', label: 'Size' },\n { key: 'modified', label: 'Modified' },\n ]))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-52WHEL73.js';import {t,q,y}from'./chunk-BC3STHFS.js';import {e}from'./chunk-OSI5H2T5.js';import {f,k}from'./chunk-BQGHHBGH.js';import o from'chalk';async function d(){let e$1=await f();if(e$1||(t("Not authenticated"),process.exit(1)),q()){y({authenticated:true,user:e$1.user,session_id:e$1.session_id,expires_at:e$1.expires_at});return}let m=k(e$1),u=[{key:o.bold("Email"),value:e$1.user.email},{key:o.bold("Username"),value:e$1.user.username},{key:o.bold("Plan"),value:o.hex("#7C4DFF")(e$1.user.plan)},{key:o.bold("Session Expires"),value:e(m)}];console.log(c(u,[{key:"key",label:"Attribute"},{key:"value",label:"Value"}]));}export{d as a};//# sourceMappingURL=chunk-6CK2UBNM.js.map
2
+ //# sourceMappingURL=chunk-6CK2UBNM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/auth/whoami.ts"],"names":["whoami","session","loadSession","logError","isJsonMode","logJSON","timeLeft","getTimeUntilExpiry","rows","chalk","formatCountdown","renderCompactTable"],"mappings":"2KAOA,eAAOA,CAAAA,EAA+C,CACpD,IAAMC,GAAAA,CAAU,MAAMC,CAAAA,EAAY,CAMlC,GALKD,GAAAA,GACHE,EAAS,mBAAmB,CAAA,CAC5B,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGZC,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQ,CACN,aAAA,CAAe,IAAA,CACf,IAAA,CAAMJ,IAAQ,IAAA,CACd,UAAA,CAAYA,GAAAA,CAAQ,UAAA,CACpB,UAAA,CAAYA,GAAAA,CAAQ,UACtB,CAAC,CAAA,CACD,MACF,CAEA,IAAMK,CAAAA,CAAWC,CAAAA,CAAmBN,GAAO,CAAA,CACrCO,CAAAA,CAAO,CACX,CAAE,GAAA,CAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAG,KAAA,CAAOR,GAAAA,CAAQ,IAAA,CAAK,KAAM,CAAA,CACtD,CAAE,GAAA,CAAKQ,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAG,KAAA,CAAOR,GAAAA,CAAQ,IAAA,CAAK,QAAS,CAAA,CAC5D,CAAE,GAAA,CAAKQ,CAAAA,CAAM,IAAA,CAAK,MAAM,CAAA,CAAG,KAAA,CAAOA,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAER,GAAAA,CAAQ,IAAA,CAAK,IAAI,CAAE,CAAA,CAC1E,CAAE,GAAA,CAAKQ,CAAAA,CAAM,KAAK,iBAAiB,CAAA,CAAG,KAAA,CAAOC,CAAAA,CAAgBJ,CAAQ,CAAE,CACzE,CAAA,CAEA,OAAA,CAAQ,GAAA,CAAIK,CAAAA,CAAmBH,CAAAA,CAAM,CACnC,CAAE,IAAK,KAAA,CAAO,KAAA,CAAO,WAAY,CAAA,CACjC,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CACjC,CAAC,CAAC,EACJ","file":"chunk-6CK2UBNM.js","sourcesContent":["import { loadSession, getTimeUntilExpiry } from '../../lib/auth/session.js'\nimport { logError, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\nimport { renderCompactTable } from '../../lib/output/table.js'\n\nexport default async function whoami(): Promise<void> {\n const session = await loadSession()\n if (!session) {\n logError('Not authenticated')\n process.exit(1)\n }\n\n if (isJsonMode()) {\n logJSON({\n authenticated: true,\n user: session.user,\n session_id: session.session_id,\n expires_at: session.expires_at,\n })\n return\n }\n\n const timeLeft = getTimeUntilExpiry(session)\n const rows = [\n { key: chalk.bold('Email'), value: session.user.email },\n { key: chalk.bold('Username'), value: session.user.username },\n { key: chalk.bold('Plan'), value: chalk.hex('#7C4DFF')(session.user.plan) },\n { key: chalk.bold('Session Expires'), value: formatCountdown(timeLeft) },\n ]\n\n console.log(renderCompactTable(rows, [\n { key: 'key', label: 'Attribute' },\n { key: 'value', label: 'Value' },\n ]))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {f}from'./chunk-BC3STHFS.js';import {a,b}from'./chunk-OSI5H2T5.js';import g from'cli-progress';import n from'chalk';function h(){let e=Date.now();return {startTime:e,lastBytes:0,lastTime:e,speed:0}}function $(e,r){let t=Date.now(),o=(t-e.lastTime)/1e3;o>=.3&&(e.speed=(r-e.lastBytes)/o,e.lastBytes=r,e.lastTime=t);}function F(e,r){let t=h(),o=new g.SingleBar({format:(i,a$1,b$1)=>{let p=a$1.percentage??0,m=a$1.value??0,d=a$1.barsize??20,l=Math.round(d*p/100),T=n.hex("#7C4DFF")(i.barCompleteChar.repeat(l)+i.barIncompleteChar.repeat(d-l)),S=b$1?.filename??e,c=t.speed,C=c>0?(r-m)/c:0;return [`${f} ${n.bold(S)}`,T,n.white(`${p.toFixed(0)}%`),n.dim(`${a(m)} / ${a(r)}`),n.hex("#4FC3F7")(`${a(c)}/s`),n.dim(`ETA ${b(C*1e3)}`)].join(" ")},barCompleteChar:"\u2588",barIncompleteChar:"\u2591",hideCursor:true,clearOnComplete:false,stopOnComplete:true});return o.start(r,0,{filename:e}),{bar:o,tracker:t}}function P(e,r,t){$(r,t),e.update(t);}export{F as a,P as b};//# sourceMappingURL=chunk-6RI4Z6IY.js.map
2
+ //# sourceMappingURL=chunk-6RI4Z6IY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/output/progress.ts"],"names":["createSpeedTracker","now","updateSpeed","t","bytes","dt","createProgressBar","filename","total","tracker","bar","cliProgress","options","params","payload","percent","val","barSize","completeLen","barStr","chalk","name","speed","eta","PROGRESS_MARK","formatBytes","formatDuration","updateProgress"],"mappings":"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","file":"chunk-EPDVSZII.js","sourcesContent":["import cliProgress from 'cli-progress'\nimport chalk from 'chalk'\nimport { formatBytes, formatDuration } from '../utils/format.js'\nimport { isCI, isJsonMode } from './index.js'\nimport { PROGRESS_MARK } from './brand.js'\n\ninterface SpeedTracker {\n startTime: number\n lastBytes: number\n lastTime: number\n speed: number\n}\n\nexport function createSpeedTracker(): SpeedTracker {\n const now = Date.now()\n return { startTime: now, lastBytes: 0, lastTime: now, speed: 0 }\n}\n\nexport function updateSpeed(t: SpeedTracker, bytes: number): void {\n const now = Date.now()\n const dt = (now - t.lastTime) / 1000\n if (dt >= 0.3) {\n t.speed = (bytes - t.lastBytes) / dt\n t.lastBytes = bytes\n t.lastTime = now\n }\n}\n\nexport function speedInfo(t: SpeedTracker, total: number): string {\n const speed = t.speed\n const elapsed = (Date.now() - t.startTime) / 1000\n const eta = speed > 0 ? ((total - t.lastBytes) / speed) : 0\n return `${chalk.hex('#4FC3F7')(`${formatBytes(speed)}/s`)} ${chalk.dim(`· ETA ${formatDuration(eta * 1000)}`)}`\n}\n\nexport function createProgressBar(filename: string, total: number): { bar: cliProgress.SingleBar; tracker: SpeedTracker } {\n const tracker = createSpeedTracker()\n\n const bar = new cliProgress.SingleBar({\n format: (options, params, payload) => {\n const percent = params.percentage ?? 0\n const val = params.value ?? 0\n const barSize = params.barsize ?? 20\n const completeLen = Math.round(barSize * percent / 100)\n const barStr = chalk.hex('#7C4DFF')(\n options.barCompleteChar!.repeat(completeLen) +\n options.barIncompleteChar!.repeat(barSize - completeLen)\n )\n const name = (payload as { filename?: string })?.filename ?? filename\n const speed = tracker.speed\n const eta = speed > 0 ? ((total - val) / speed) : 0\n return [\n `${PROGRESS_MARK} ${chalk.bold(name)}`,\n barStr,\n chalk.white(`${percent.toFixed(0)}%`),\n chalk.dim(`${formatBytes(val)} / ${formatBytes(total)}`),\n chalk.hex('#4FC3F7')(`${formatBytes(speed)}/s`),\n chalk.dim(`ETA ${formatDuration(eta * 1000)}`),\n ].join(' ')\n },\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n clearOnComplete: false,\n stopOnComplete: true,\n })\n\n bar.start(total, 0, { filename })\n return { bar, tracker }\n}\n\nexport function updateProgress(bar: cliProgress.SingleBar, tracker: SpeedTracker, bytes: number): void {\n updateSpeed(tracker, bytes)\n bar.update(bytes)\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/output/progress.ts"],"names":["createSpeedTracker","now","updateSpeed","t","bytes","dt","createProgressBar","filename","total","tracker","bar","cliProgress","options","params","payload","percent","val","barSize","completeLen","barStr","chalk","name","speed","eta","PROGRESS_MARK","formatBytes","formatDuration","updateProgress"],"mappings":"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","file":"chunk-6RI4Z6IY.js","sourcesContent":["import cliProgress from 'cli-progress'\nimport chalk from 'chalk'\nimport { formatBytes, formatDuration } from '../utils/format.js'\nimport { isCI, isJsonMode } from './index.js'\nimport { PROGRESS_MARK } from './brand.js'\n\ninterface SpeedTracker {\n startTime: number\n lastBytes: number\n lastTime: number\n speed: number\n}\n\nexport function createSpeedTracker(): SpeedTracker {\n const now = Date.now()\n return { startTime: now, lastBytes: 0, lastTime: now, speed: 0 }\n}\n\nexport function updateSpeed(t: SpeedTracker, bytes: number): void {\n const now = Date.now()\n const dt = (now - t.lastTime) / 1000\n if (dt >= 0.3) {\n t.speed = (bytes - t.lastBytes) / dt\n t.lastBytes = bytes\n t.lastTime = now\n }\n}\n\nexport function speedInfo(t: SpeedTracker, total: number): string {\n const speed = t.speed\n const elapsed = (Date.now() - t.startTime) / 1000\n const eta = speed > 0 ? ((total - t.lastBytes) / speed) : 0\n return `${chalk.hex('#4FC3F7')(`${formatBytes(speed)}/s`)} ${chalk.dim(`· ETA ${formatDuration(eta * 1000)}`)}`\n}\n\nexport function createProgressBar(filename: string, total: number): { bar: cliProgress.SingleBar; tracker: SpeedTracker } {\n const tracker = createSpeedTracker()\n\n const bar = new cliProgress.SingleBar({\n format: (options, params, payload) => {\n const percent = params.percentage ?? 0\n const val = params.value ?? 0\n const barSize = params.barsize ?? 20\n const completeLen = Math.round(barSize * percent / 100)\n const barStr = chalk.hex('#7C4DFF')(\n options.barCompleteChar!.repeat(completeLen) +\n options.barIncompleteChar!.repeat(barSize - completeLen)\n )\n const name = (payload as { filename?: string })?.filename ?? filename\n const speed = tracker.speed\n const eta = speed > 0 ? ((total - val) / speed) : 0\n return [\n `${PROGRESS_MARK} ${chalk.bold(name)}`,\n barStr,\n chalk.white(`${percent.toFixed(0)}%`),\n chalk.dim(`${formatBytes(val)} / ${formatBytes(total)}`),\n chalk.hex('#4FC3F7')(`${formatBytes(speed)}/s`),\n chalk.dim(`ETA ${formatDuration(eta * 1000)}`),\n ].join(' ')\n },\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n clearOnComplete: false,\n stopOnComplete: true,\n })\n\n bar.start(total, 0, { filename })\n return { bar, tracker }\n}\n\nexport function updateProgress(bar: cliProgress.SingleBar, tracker: SpeedTracker, bytes: number): void {\n updateSpeed(tracker, bytes)\n bar.update(bytes)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {etc,utils,getPublicKey,verify,sign}from'@noble/ed25519';import {x25519}from'@noble/curves/ed25519.js';import {sha256}from'@noble/hashes/sha256';import {sha512}from'@noble/hashes/sha512';import {hmac}from'@noble/hashes/hmac';import {hkdf}from'@noble/hashes/hkdf';import {blake3}from'@noble/hashes/blake3';import {concatBytes,randomBytes}from'@noble/hashes/utils';import {gcm}from'@noble/ciphers/aes';import {pbkdf2Sync}from'crypto';import {hostname,platform,arch}from'os';etc.sha512Sync=(...r)=>sha512(concatBytes(...r));var w="squidcloud-session-v1";function I(){let r=utils.randomPrivateKey();return {pub:getPublicKey(r),priv:r}}function J(){return randomBytes(32)}function C(r,t){let n=Buffer.from(t.slice(0,32).padEnd(32,"\0"));return pbkdf2Sync(r,n,1e5,32,"sha512")}function M(r){let t=`${r}:${hostname()}:${platform()}:${arch()}`;return Buffer.from(blake3(t)).toString("hex")}function R(r,t,n,i){let e=new Uint8Array(r.length+t.length+n.length+8);e.set(r,0),e.set(t,r.length),e.set(n,r.length+t.length);let s=new Uint8Array(8);return new DataView(s.buffer).setBigUint64(0,BigInt(i),false),e.set(s,r.length+t.length+n.length),blake3(e)}function V(r,t){return x25519.getSharedSecret(t,r)}function j(r,t,n){let i=new Uint8Array(t.length+n.length);return i.set(t,0),i.set(n,t.length),hkdf(sha256,r,i,w,32)}function z(r,t){let n=randomBytes(12),i=new TextEncoder().encode(JSON.stringify(r)),s=gcm(t,n).encrypt(i),o=s.slice(0,-16),u=s.slice(-16);return {ciphertext:o,iv:n,tag:u}}function G(r,t,n,i){let e=new Uint8Array(r.length+n.length);e.set(r,0),e.set(n,r.length);let o=gcm(i,t).decrypt(e);return JSON.parse(new TextDecoder().decode(o))}function L(r,t,n){return verify(r,t,n)}function Q(r,t){return sign(t,r)}function W(r,t){return Buffer.from(hmac(sha256,r,t)).toString("hex")}function X(r){return Buffer.from(r).toString("hex")}function Y(r){return new Uint8Array(Buffer.from(r,"hex"))}export{I as a,J as b,C as c,M as d,R as e,V as f,j as g,z as h,G as i,L as j,Q as k,W as l,X as m,Y as n};//# sourceMappingURL=chunk-6VDGYAGT.js.map
2
+ //# sourceMappingURL=chunk-6VDGYAGT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/crypto/ssp.ts"],"names":["etc","msgs","sha512","concatBytes","HKDF_INFO","generateKeypair","priv","edUtils","getPublicKey","generateNonce","randomBytes","hashPassword","password","email","salt","pbkdf2Sync","computeDeviceFingerprint","machineId","data","hostname","platform","arch","blake3","computeSignPayload","clientNonce","serverNonce","clientPub","timestamp","payload","tsBuf","deriveSharedSecret","pub","x25519","deriveEncryptionKey","ecdhSecret","hkdf","sha256","encryptSession","session","key","iv","plaintext","encrypted","gcm","ciphertext","tag","decryptSession","combined","verifyServerSignature","signature","serverPub","verify","signPayload","sign","computeHMAC","hmac","bytesToHex","buf","hexToBytes","hex"],"mappings":"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","file":"chunk-6VDGYAGT.js","sourcesContent":["import { getPublicKey, sign, verify, etc, utils as edUtils } from '@noble/ed25519'\nimport { x25519 } from '@noble/curves/ed25519.js'\nimport { sha256 } from '@noble/hashes/sha256'\nimport { sha512 } from '@noble/hashes/sha512'\nimport { hmac } from '@noble/hashes/hmac'\nimport { hkdf } from '@noble/hashes/hkdf'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { randomBytes, concatBytes } from '@noble/hashes/utils'\nimport { gcm } from '@noble/ciphers/aes'\nimport { pbkdf2Sync } from 'node:crypto'\nimport { hostname, platform, arch } from 'node:os'\n\netc.sha512Sync = (...msgs: Uint8Array[]) => sha512(concatBytes(...msgs))\n\nconst HKDF_INFO = 'squidcloud-session-v1'\n\nexport interface SSPHello {\n email: string\n password_proof: string\n client_ephemeral_pub: string\n client_nonce: string\n device_fingerprint: string\n timestamp: number\n}\n\nexport interface SSPResponse {\n server_nonce: string\n server_ephemeral_pub: string\n server_signature: string\n encrypted_session: string\n session_iv: string\n session_tag: string\n}\n\nexport interface SquidSession {\n session_id: string\n access_token: string\n refresh_token: string\n refresh_token_id: string\n device_fingerprint: string\n issued_at: number\n expires_at: number\n user: {\n id: string\n email: string\n username: string\n plan: 'free' | 'pro' | 'team'\n }\n api_key?: string\n}\n\nexport function generateKeypair(): { pub: Uint8Array; priv: Uint8Array } {\n const priv = edUtils.randomPrivateKey()\n const pub = getPublicKey(priv)\n return { pub, priv }\n}\n\nexport function generateNonce(): Uint8Array {\n return randomBytes(32)\n}\n\nexport function hashPassword(password: string, email: string): Buffer {\n const salt = Buffer.from(email.slice(0, 32).padEnd(32, '\\x00'))\n return pbkdf2Sync(password, salt, 100000, 32, 'sha512')\n}\n\nexport function computeDeviceFingerprint(machineId: string): string {\n const data = `${machineId}:${hostname()}:${platform()}:${arch()}`\n return Buffer.from(blake3(data)).toString('hex')\n}\n\nexport function computeSignPayload(clientNonce: Uint8Array, serverNonce: Uint8Array, clientPub: Uint8Array, timestamp: number): Uint8Array {\n const payload = new Uint8Array(clientNonce.length + serverNonce.length + clientPub.length + 8)\n payload.set(clientNonce, 0)\n payload.set(serverNonce, clientNonce.length)\n payload.set(clientPub, clientNonce.length + serverNonce.length)\n const tsBuf = new Uint8Array(8)\n new DataView(tsBuf.buffer).setBigUint64(0, BigInt(timestamp), false)\n payload.set(tsBuf, clientNonce.length + serverNonce.length + clientPub.length)\n return blake3(payload)\n}\n\nexport function deriveSharedSecret(pub: Uint8Array, priv: Uint8Array): Uint8Array {\n return x25519.getSharedSecret(priv, pub)\n}\n\nexport function deriveEncryptionKey(ecdhSecret: Uint8Array, clientNonce: Uint8Array, serverNonce: Uint8Array): Uint8Array {\n const salt = new Uint8Array(clientNonce.length + serverNonce.length)\n salt.set(clientNonce, 0)\n salt.set(serverNonce, clientNonce.length)\n return hkdf(sha256, ecdhSecret, salt, HKDF_INFO, 32)\n}\n\nexport function encryptSession(session: SquidSession, key: Uint8Array): { ciphertext: Uint8Array; iv: Uint8Array; tag: Uint8Array } {\n const iv = randomBytes(12)\n const plaintext = new TextEncoder().encode(JSON.stringify(session))\n const aes = gcm(key, iv)\n const encrypted = aes.encrypt(plaintext)\n const ciphertext = encrypted.slice(0, -16)\n const tag = encrypted.slice(-16)\n return { ciphertext, iv, tag }\n}\n\nexport function decryptSession(encrypted: Uint8Array, iv: Uint8Array, tag: Uint8Array, key: Uint8Array): SquidSession {\n const combined = new Uint8Array(encrypted.length + tag.length)\n combined.set(encrypted, 0)\n combined.set(tag, encrypted.length)\n const aes = gcm(key, iv)\n const plaintext = aes.decrypt(combined)\n return JSON.parse(new TextDecoder().decode(plaintext)) as SquidSession\n}\n\nexport function verifyServerSignature(signature: Uint8Array, payload: Uint8Array, serverPub: Uint8Array): Promise<boolean> {\n return verify(signature, payload, serverPub)\n}\n\nexport function signPayload(priv: Uint8Array, payload: Uint8Array): Promise<Uint8Array> {\n return sign(payload, priv)\n}\n\nexport function computeHMAC(key: Uint8Array, data: string): string {\n return Buffer.from(hmac(sha256, key, data)).toString('hex')\n}\n\nexport function bytesToHex(buf: Uint8Array): string {\n return Buffer.from(buf).toString('hex')\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n return new Uint8Array(Buffer.from(hex, 'hex'))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {q,y,x}from'./chunk-BC3STHFS.js';import {a,c as c$1}from'./chunk-OSI5H2T5.js';import {c}from'./chunk-5TMR6Y7L.js';import e from'chalk';async function m(r){let o=(await c(`/api/v1/storage/info?path=${encodeURIComponent(r)}`,{authenticated:true})).file;if(q()){y(o);return}x(""),x(` ${e.bold(o.name)}`),x(e.dim(" \u2500\u2500\u2500".repeat(10))),x(` ${e.bold("Size:")} ${a(o.size)}`),x(` ${e.bold("Type:")} ${o.mime_type}`),x(` ${e.bold("Hash:")} ${e.dim(o.content_hash?.slice(0,16)||"-")}`),x(` ${e.bold("Created:")} ${c$1(o.created_at)}`),x(` ${e.bold("Modified:")} ${c$1(o.updated_at)}`),x(` ${e.bold("Tags:")} ${o.tags?.length?o.tags.join(", "):e.dim("none")}`),x(` ${e.bold("Shared:")} ${o.shared?e.green("yes"):e.dim("no")}`),x(` ${e.bold("Published:")} ${o.published?e.green("yes"):e.dim("no")}`),x(` ${e.bold("Scan:")} ${o.scan_status||e.dim("pending")}`),x("");}export{m as a};//# sourceMappingURL=chunk-74TMDLBA.js.map
2
+ //# sourceMappingURL=chunk-74TMDLBA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/storage/storage-info.ts"],"names":["storageInfo","path","f","apiGet","isJsonMode","logJSON","logRaw","chalk","formatBytes","formatDate"],"mappings":"8IAmBA,eAAOA,CAAAA,CAAmCC,EAA6B,CAErE,IAAMC,GADO,MAAMC,CAAAA,CAA2B,6BAA6B,kBAAA,CAAmBF,CAAI,CAAC,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,CAAA,EAC/G,IAAA,CAEf,GAAIG,CAAAA,GAAc,CAChBC,CAAAA,CAAQH,CAAC,CAAA,CACT,MACF,CAEAI,CAAAA,CAAO,EAAE,EACTA,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAKL,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,EAChCI,CAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,CACpCD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,OAAO,CAAC,YAAYC,CAAAA,CAAYN,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,EAChEI,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,OAAO,CAAC,CAAA,SAAA,EAAYL,CAAAA,CAAE,SAAS,EAAE,CAAA,CACxDI,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA,SAAA,EAAYA,EAAM,GAAA,CAAIL,CAAAA,CAAE,cAAc,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,EAAK,GAAG,CAAC,CAAA,CAAE,CAAA,CAC3FI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,MAAA,EAASE,IAAWP,CAAAA,CAAE,UAAU,CAAC,CAAA,CAAE,CAAA,CACrEI,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,WAAW,CAAC,QAAQE,GAAAA,CAAWP,CAAAA,CAAE,UAAU,CAAC,CAAA,CAAE,CAAA,CACrEI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,OAAO,CAAC,YAAYL,CAAAA,CAAE,IAAA,EAAM,OAASA,CAAAA,CAAE,IAAA,CAAK,KAAK,IAAI,CAAA,CAAIK,EAAM,GAAA,CAAI,MAAM,CAAC,CAAA,CAAE,CAAA,CACnGD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,OAAA,EAAUL,EAAE,MAAA,CAASK,CAAAA,CAAM,MAAM,KAAK,CAAA,CAAIA,EAAM,GAAA,CAAI,IAAI,CAAC,CAAA,CAAE,CAAA,CAC5FD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,YAAY,CAAC,OAAOL,CAAAA,CAAE,SAAA,CAAYK,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,EAAM,GAAA,CAAI,IAAI,CAAC,CAAA,CAAE,CAAA,CAC/FD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,OAAO,CAAC,YAAYL,CAAAA,CAAE,WAAA,EAAeK,EAAM,GAAA,CAAI,SAAS,CAAC,CAAA,CAAE,CAAA,CAClFD,CAAAA,CAAO,EAAE,EACX","file":"chunk-74TMDLBA.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes, formatDate } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface FileInfo {\n name: string\n size: number\n mime_type: string\n content_hash: string\n created_at: string\n updated_at: string\n tags: string[]\n shared: boolean\n published: boolean\n scan_status: string\n}\n\nexport default async function storageInfo(path: string): Promise<void> {\n const data = await apiGet<{ file: FileInfo }>(`/api/v1/storage/info?path=${encodeURIComponent(path)}`, { authenticated: true })\n const f = data.file\n\n if (isJsonMode()) {\n logJSON(f)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(f.name)}`)\n logRaw(chalk.dim(' ───'.repeat(10)))\n logRaw(` ${chalk.bold('Size:')} ${formatBytes(f.size)}`)\n logRaw(` ${chalk.bold('Type:')} ${f.mime_type}`)\n logRaw(` ${chalk.bold('Hash:')} ${chalk.dim(f.content_hash?.slice(0, 16) || '-')}`)\n logRaw(` ${chalk.bold('Created:')} ${formatDate(f.created_at)}`)\n logRaw(` ${chalk.bold('Modified:')} ${formatDate(f.updated_at)}`)\n logRaw(` ${chalk.bold('Tags:')} ${f.tags?.length ? f.tags.join(', ') : chalk.dim('none')}`)\n logRaw(` ${chalk.bold('Shared:')} ${f.shared ? chalk.green('yes') : chalk.dim('no')}`)\n logRaw(` ${chalk.bold('Published:')} ${f.published ? chalk.green('yes') : chalk.dim('no')}`)\n logRaw(` ${chalk.bold('Scan:')} ${f.scan_status || chalk.dim('pending')}`)\n logRaw('')\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-YZWZNR6K.js';import {x}from'./chunk-BC3STHFS.js';import {c as c$2}from'./chunk-5TMR6Y7L.js';import y from'fs';import c$1 from'path';import {createHash}from'crypto';import o from'chalk';async function S(v,w){let g=c("Computing diff...");g.start();let m=c$1.resolve(v),l=new Map;function p(e,a){let F=y.readdirSync(e,{withFileTypes:true});for(let s of F){let h=c$1.join(e,s.name),k=c$1.relative(a,h);if(!(s.name.startsWith(".")||s.name==="node_modules")){if(s.isDirectory())p(h,a);else if(s.isFile()){let C=createHash("sha256").update(y.readFileSync(h)).digest("hex");l.set(k,C);}}}}p(m,m);let $=await c$2(`/api/v1/storage/ls-recursive?path=${encodeURIComponent(w)}`,{authenticated:true}),f=new Map(($.files||[]).map(e=>[e.path,e.hash]));g.stop();let n=[],r=[],i=[];for(let[e,a]of l)f.has(e)?f.get(e)!==a&&i.push(e):n.push(e);for(let e of f.keys())l.has(e)||r.push(e);x(""),n.length===0&&r.length===0&&i.length===0?x(` ${o.green("\u2713 Identical \u2014 no changes")}`):(n.length>0&&(x(o.green(` + ${n.length} to upload`)),n.forEach(e=>x(o.green(` + ${e}`)))),i.length>0&&(x(o.yellow(` ~ ${i.length} modified`)),i.forEach(e=>x(o.yellow(` ~ ${e}`)))),r.length>0&&(x(o.red(` - ${r.length} to delete`)),r.forEach(e=>x(o.red(` - ${e}`))))),x("");}export{S as a};//# sourceMappingURL=chunk-7DPXZUZY.js.map
2
+ //# sourceMappingURL=chunk-7DPXZUZY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/storage/storage-diff.ts"],"names":["storageDiff","localPath","remotePath","spinner","createSpinner","localDir","path","localFiles","walk","dir","baseDir","entries","fs","entry","fullPath","relative","hash","createHash","remote","apiGet","remoteFiles","f","added","removed","modified","rel","logRaw","chalk"],"mappings":"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","file":"chunk-7DPXZUZY.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { createHash } from 'node:crypto'\nimport { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logRaw } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\nimport { renderCompactTable } from '../../lib/output/table.js'\n\nexport default async function storageDiff(localPath: string, remotePath: string): Promise<void> {\n const spinner = createSpinner('Computing diff...')\n spinner.start()\n\n const localDir = path.resolve(localPath)\n const localFiles = new Map<string, string>()\n\n function walk(dir: string, baseDir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n const relative = path.relative(baseDir, fullPath)\n if (entry.name.startsWith('.') || entry.name === 'node_modules') continue\n if (entry.isDirectory()) {\n walk(fullPath, baseDir)\n } else if (entry.isFile()) {\n const hash = createHash('sha256').update(fs.readFileSync(fullPath)).digest('hex')\n localFiles.set(relative, hash)\n }\n }\n }\n walk(localDir, localDir)\n\n const remote = await apiGet<{ files: { path: string; hash: string }[] }>(`/api/v1/storage/ls-recursive?path=${encodeURIComponent(remotePath)}`, { authenticated: true })\n const remoteFiles = new Map((remote.files || []).map(f => [f.path, f.hash]))\n\n spinner.stop()\n\n const added: string[] = []\n const removed: string[] = []\n const modified: string[] = []\n\n for (const [rel, hash] of localFiles) {\n if (!remoteFiles.has(rel)) {\n added.push(rel)\n } else if (remoteFiles.get(rel) !== hash) {\n modified.push(rel)\n }\n }\n for (const rel of remoteFiles.keys()) {\n if (!localFiles.has(rel)) {\n removed.push(rel)\n }\n }\n\n logRaw('')\n if (added.length === 0 && removed.length === 0 && modified.length === 0) {\n logRaw(` ${chalk.green('✓ Identical — no changes')}`)\n } else {\n if (added.length > 0) {\n logRaw(chalk.green(` + ${added.length} to upload`))\n added.forEach(f => logRaw(chalk.green(` + ${f}`)))\n }\n if (modified.length > 0) {\n logRaw(chalk.yellow(` ~ ${modified.length} modified`))\n modified.forEach(f => logRaw(chalk.yellow(` ~ ${f}`)))\n }\n if (removed.length > 0) {\n logRaw(chalk.red(` - ${removed.length} to delete`))\n removed.forEach(f => logRaw(chalk.red(` - ${f}`)))\n }\n }\n logRaw('')\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c as c$1}from'./chunk-YZWZNR6K.js';import {s}from'./chunk-BC3STHFS.js';import {d}from'./chunk-5TMR6Y7L.js';import {h}from'./chunk-BQGHHBGH.js';import a from'inquirer';async function c(e){if(e.all){let{confirm:s$1}=await a.prompt([{type:"confirm",name:"confirm",message:"Revoke ALL active sessions? This will log out every device.",default:false}]);if(!s$1)return;let t=c$1("Revoking all sessions...");t.start(),await d("/api/auth/ssp/revoke-all",{},{authenticated:true}),await h(),t.succeed(),s("All sessions revoked");return}if(e.session){let s$1=c$1(`Revoking session ${e.session}...`);s$1.start(),await d("/api/auth/ssp/revoke",{session_id:e.session},{authenticated:true}),s$1.succeed(),s(`Session ${e.session} revoked`);return}console.error("Specify --session <id> or --all"),process.exit(1);}export{c as a};//# sourceMappingURL=chunk-7VVZS6US.js.map
2
+ //# sourceMappingURL=chunk-7VVZS6US.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/auth/auth-revoke.ts"],"names":["authRevoke","options","confirm","inquirer","spinner","createSpinner","apiPost","clearSession","logSuccess"],"mappings":"+KAOA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA6D,CACpG,GAAIA,CAAAA,CAAQ,GAAA,CAAK,CACf,GAAM,CAAE,QAAAC,GAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,6DAAA,CACT,QAAS,KACX,CAAC,CAAC,CAAA,CACF,GAAI,CAACD,IAAS,OACd,IAAME,CAAAA,CAAUC,GAAAA,CAAc,0BAA0B,CAAA,CACxDD,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,0BAAA,CAA4B,EAAC,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACrE,MAAMC,CAAAA,GACNH,CAAAA,CAAQ,OAAA,EAAQ,CAChBI,CAAAA,CAAW,sBAAsB,CAAA,CACjC,MACF,CAEA,GAAIP,CAAAA,CAAQ,OAAA,CAAS,CACnB,IAAMG,IAAUC,GAAAA,CAAc,CAAA,iBAAA,EAAoBJ,CAAAA,CAAQ,OAAO,CAAA,GAAA,CAAK,CAAA,CACtEG,IAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,WAAYL,CAAAA,CAAQ,OAAQ,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC9FG,GAAAA,CAAQ,OAAA,EAAQ,CAChBI,CAAAA,CAAW,CAAA,QAAA,EAAWP,EAAQ,OAAO,CAAA,QAAA,CAAU,CAAA,CAC/C,MACF,CAEA,OAAA,CAAQ,KAAA,CAAM,iCAAiC,CAAA,CAC/C,OAAA,CAAQ,IAAA,CAAK,CAAC,EAChB","file":"chunk-7VVZS6US.js","sourcesContent":["import { Command } from 'commander'\nimport { apiPost } from '../../lib/api/client.js'\nimport { clearSession } from '../../lib/auth/session.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\nimport inquirer from 'inquirer'\n\nexport default async function authRevoke(options: { session?: string; all?: boolean }): Promise<void> {\n if (options.all) {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: 'Revoke ALL active sessions? This will log out every device.',\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner('Revoking all sessions...')\n spinner.start()\n await apiPost('/api/auth/ssp/revoke-all', {}, { authenticated: true })\n await clearSession()\n spinner.succeed()\n logSuccess('All sessions revoked')\n return\n }\n\n if (options.session) {\n const spinner = createSpinner(`Revoking session ${options.session}...`)\n spinner.start()\n await apiPost('/api/auth/ssp/revoke', { session_id: options.session }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Session ${options.session} revoked`)\n return\n }\n\n console.error('Specify --session <id> or --all')\n process.exit(1)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-YZWZNR6K.js';import {q,y,s}from'./chunk-BC3STHFS.js';import {d}from'./chunk-5TMR6Y7L.js';import f from'fs';import m from'path';async function l(u,e){let t=m.resolve(u);f.existsSync(t)||(console.error(`File not found: ${t}`),process.exit(1));let d$1=f.readFileSync(t),g=Array.isArray(e.to)?e.to:e.to?[e.to]:[],r=c("Sending signing request...");r.start();let o=await d("/api/v1/sign/request",{filename:m.basename(t),content:d$1.toString("base64"),recipients:g,ordered:e.order||false},{authenticated:true});if(r.succeed(),q()){y(o);return}s(`Signing request sent (${o.request_id.slice(0,8)})`);}export{l as a};//# sourceMappingURL=chunk-A6WS3TOF.js.map
2
+ //# sourceMappingURL=chunk-A6WS3TOF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/sign/sign-request.ts"],"names":["signRequest","file","options","filePath","path","fs","content","to","spinner","createSpinner","result","apiPost","isJsonMode","logJSON","logSuccess"],"mappings":"sJAOA,eAAOA,CAAAA,CAAmCC,CAAAA,CAAcC,CAAAA,CAAqE,CAC3H,IAAMC,CAAAA,CAAWC,EAAK,OAAA,CAAQH,CAAI,CAAA,CAC7BI,CAAAA,CAAG,UAAA,CAAWF,CAAQ,IACzB,OAAA,CAAQ,KAAA,CAAM,CAAA,gBAAA,EAAmBA,CAAQ,CAAA,CAAE,CAAA,CAC3C,QAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGhB,IAAMG,GAAAA,CAAUD,CAAAA,CAAG,aAAaF,CAAQ,CAAA,CAClCI,CAAAA,CAAK,KAAA,CAAM,OAAA,CAAQL,CAAAA,CAAQ,EAAE,CAAA,CAAIA,CAAAA,CAAQ,EAAA,CAAKA,CAAAA,CAAQ,EAAA,CAAK,CAACA,EAAQ,EAAE,CAAA,CAAI,EAAC,CAE3EM,CAAAA,CAAUC,CAAAA,CAAc,4BAA4B,CAAA,CAC1DD,CAAAA,CAAQ,KAAA,EAAM,CAEd,IAAME,CAAAA,CAAS,MAAMC,CAAAA,CAAgC,sBAAA,CAAwB,CAC3E,QAAA,CAAUP,CAAAA,CAAK,QAAA,CAASD,CAAQ,CAAA,CAChC,OAAA,CAASG,GAAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA,CAClC,WAAYC,CAAAA,CACZ,OAAA,CAASL,CAAAA,CAAQ,KAAA,EAAS,KAC5B,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAG1B,GADAM,CAAAA,CAAQ,SAAQ,CACZI,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAM,EACd,MACF,CACAI,CAAAA,CAAW,CAAA,sBAAA,EAAyBJ,CAAAA,CAAO,UAAA,CAAW,MAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAAG,EACtE","file":"chunk-A6WS3TOF.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nexport default async function signRequest(file: string, options: { to?: string | string[]; order?: boolean }): Promise<void> {\n const filePath = path.resolve(file)\n if (!fs.existsSync(filePath)) {\n console.error(`File not found: ${filePath}`)\n process.exit(1)\n }\n\n const content = fs.readFileSync(filePath)\n const to = Array.isArray(options.to) ? options.to : options.to ? [options.to] : []\n\n const spinner = createSpinner('Sending signing request...')\n spinner.start()\n\n const result = await apiPost<{ request_id: string }>('/api/v1/sign/request', {\n filename: path.basename(filePath),\n content: content.toString('base64'),\n recipients: to,\n ordered: options.order || false,\n }, { authenticated: true })\n\n spinner.succeed()\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n logSuccess(`Signing request sent (${result.request_id.slice(0, 8)})`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {t,q,y,x}from'./chunk-BC3STHFS.js';import {e as e$1}from'./chunk-OSI5H2T5.js';import {f,a,k}from'./chunk-BQGHHBGH.js';import e from'chalk';async function u(){let i=await f();i||(t("Not authenticated"),process.exit(1));let f$1=a(),t$1=i.device_fingerprint===f$1,o=k(i),s=o<=120*1e3;if(q()){y({authenticated:true,session_id:i.session_id,expires_in_ms:o,fingerprint_match:t$1,needs_refresh:s,user:i.user});return}x(""),x(`${e.bold("Session Health")}`),x(`${e.dim("\u2500\u2500\u2500".repeat(15))}`),x(` ${e.bold("Session ID:")} ${e.dim(i.session_id)}`),x(` ${e.bold("User:")} ${i.user.email} (${i.user.username})`),x(` ${e.bold("Plan:")} ${e.hex("#7C4DFF")(i.user.plan)}`),x(` ${e.bold("Expires:")} ${o>0?e$1(o):e.red("expired")}`),x(` ${e.bold("Fingerprint:")} ${t$1?e.green("\u2713 match"):e.red("\u2717 mismatch")}`),x(` ${e.bold("Refresh:")} ${s?e.yellow("needed soon"):e.green("ok")}`),x("");}export{u as a};//# sourceMappingURL=chunk-ADOHZ74F.js.map
2
+ //# sourceMappingURL=chunk-ADOHZ74F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/auth/auth-status.ts"],"names":["authStatus","session","loadSession","logError","currentFingerprint","computeDeviceFingerprint","fingerprintMatch","timeLeft","getTimeUntilExpiry","needsRefresh","isJsonMode","logJSON","logRaw","chalk","formatCountdown"],"mappings":"kJAOA,eAAOA,GAAmD,CACxD,IAAMC,EAAU,MAAMC,CAAAA,GACjBD,CAAAA,GACHE,CAAAA,CAAS,mBAAmB,CAAA,CAC5B,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA,CAGhB,IAAMC,GAAAA,CAAqBC,CAAAA,EAAyB,CAC9CC,GAAAA,CAAmBL,EAAQ,kBAAA,GAAuBG,GAAAA,CAClDG,EAAWC,CAAAA,CAAmBP,CAAO,EACrCQ,CAAAA,CAAeF,CAAAA,EAAY,IAAS,GAAA,CAE1C,GAAIG,GAAW,CAAG,CAChBC,EAAQ,CACN,aAAA,CAAe,KACf,UAAA,CAAYV,CAAAA,CAAQ,UAAA,CACpB,aAAA,CAAeM,EACf,iBAAA,CAAmBD,GAAAA,CACnB,cAAeG,CAAAA,CACf,IAAA,CAAMR,EAAQ,IAChB,CAAC,EACD,MACF,CAEAW,EAAO,EAAE,CAAA,CACTA,EAAO,CAAA,EAAGC,CAAAA,CAAM,KAAK,gBAAgB,CAAC,EAAE,CAAA,CACxCD,CAAAA,CAAO,GAAGC,CAAAA,CAAM,GAAA,CAAI,qBAAM,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,CAAE,EACvCD,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,aAAa,CAAC,CAAA,IAAA,EAAOA,CAAAA,CAAM,IAAIZ,CAAAA,CAAQ,UAAU,CAAC,CAAA,CAAE,EAC3EW,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,OAAO,CAAC,CAAA,UAAA,EAAaZ,CAAAA,CAAQ,KAAK,KAAK,CAAA,EAAA,EAAKA,EAAQ,IAAA,CAAK,QAAQ,GAAG,CAAA,CAC3FW,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA,UAAA,EAAaA,EAAM,GAAA,CAAI,SAAS,EAAEZ,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,EACrFW,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,UAAU,CAAC,CAAA,OAAA,EAAUN,CAAAA,CAAW,EAAIO,GAAAA,CAAgBP,CAAQ,CAAA,CAAIM,CAAAA,CAAM,IAAI,SAAS,CAAC,EAAE,CAAA,CAC7GD,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,cAAc,CAAC,CAAA,GAAA,EAAMP,IAAmBO,CAAAA,CAAM,KAAA,CAAM,cAAS,CAAA,CAAIA,CAAAA,CAAM,IAAI,iBAAY,CAAC,EAAE,CAAA,CACjHD,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,OAAA,EAAUJ,EAAeI,CAAAA,CAAM,MAAA,CAAO,aAAa,CAAA,CAAIA,CAAAA,CAAM,MAAM,IAAI,CAAC,EAAE,CAAA,CAC5GD,CAAAA,CAAO,EAAE,EACX","file":"chunk-ADOHZ74F.js","sourcesContent":["import { loadSession, getTimeUntilExpiry } from '../../lib/auth/session.js'\nimport { computeDeviceFingerprint } from '../../lib/auth/fingerprint.js'\nimport { logError, logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\nimport { formatCountdown } from '../../lib/utils/format.js'\n\nexport default async function authStatus(): Promise<void> {\n const session = await loadSession()\n if (!session) {\n logError('Not authenticated')\n process.exit(1)\n }\n\n const currentFingerprint = computeDeviceFingerprint()\n const fingerprintMatch = session.device_fingerprint === currentFingerprint\n const timeLeft = getTimeUntilExpiry(session)\n const needsRefresh = timeLeft <= 2 * 60 * 1000\n\n if (isJsonMode()) {\n logJSON({\n authenticated: true,\n session_id: session.session_id,\n expires_in_ms: timeLeft,\n fingerprint_match: fingerprintMatch,\n needs_refresh: needsRefresh,\n user: session.user,\n })\n return\n }\n\n logRaw('')\n logRaw(`${chalk.bold('Session Health')}`)\n logRaw(`${chalk.dim('───'.repeat(15))}`)\n logRaw(` ${chalk.bold('Session ID:')} ${chalk.dim(session.session_id)}`)\n logRaw(` ${chalk.bold('User:')} ${session.user.email} (${session.user.username})`)\n logRaw(` ${chalk.bold('Plan:')} ${chalk.hex('#7C4DFF')(session.user.plan)}`)\n logRaw(` ${chalk.bold('Expires:')} ${timeLeft > 0 ? formatCountdown(timeLeft) : chalk.red('expired')}`)\n logRaw(` ${chalk.bold('Fingerprint:')} ${fingerprintMatch ? chalk.green('✓ match') : chalk.red('✗ mismatch')}`)\n logRaw(` ${chalk.bold('Refresh:')} ${needsRefresh ? chalk.yellow('needed soon') : chalk.green('ok')}`)\n logRaw('')\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import {a}from'./chunk-CFZZRV3Z.js';import n from'chalk';import $ from'gradient-string';import O from'os';import x from'fs';import R from'path';var F=$(["#4FC3F7","#7C4DFF"]),S=$(["#1a5276","#4a148c"]),d=F("\u25C6"),f=n.hex("#4CAF50")("\u2713"),g=n.hex("#F44336")("\u2717"),u=n.hex("#FF9800")("\u26A0"),l=n.hex("#4FC3F7")("\u2139"),N=n.hex("#7C4DFF")("\u25B8");function A(r){return F(r)}function K(r){return S(r)}function _(r){return `${d} ${A(r)}`}function y(r){return `${f} ${n.green(r)}`}function E(r){return `${g} ${n.red(r)}`}function J(r){return `${u} ${n.hex("#FF9800")(r)}`}function w(r){return `${l} ${n.hex("#4FC3F7")(r)}`}function h(r){return n.dim(r)}function D(r){return h("(copied to clipboard)")}var o=false;function q(r){o=r;}function U(){return o}function e(){return n.dim(`[${new Date().toISOString()}]`)}function P(r,s){if(o)return;let c=s?.prefix?`${s.prefix} `:"";a()?console.log(`${e()} ${c}${r}`):console.log(`${c}${r}`);}function z(r){if(o){console.log(JSON.stringify({level:"success",message:r}));return}a()?console.log(`${e()} ${f} ${r}`):console.log(`${f} ${n.green(r)}`);}function M(r){if(o){console.error(JSON.stringify({error:{message:r}}));return}a()?console.error(`${e()} ${g} ${n.red(r)}`):console.error(`${g} ${n.red(r)}`);}function H(r){o||(a()?console.warn(`${e()} ${u} ${n.hex("#FF9800")(r)}`):console.warn(`${u} ${n.hex("#FF9800")(r)}`));}function Q(r){o||(a()?console.log(`${e()} ${l} ${n.hex("#4FC3F7")(r)}`):console.log(`${l} ${n.hex("#4FC3F7")(r)}`));}function T(r){o||console.log(`${d} ${r}`);}function V(r){o||console.log(r);}function X(r){o&&console.log(JSON.stringify(r));}function Y(r){if(!o){M(r.message);return}console.error(JSON.stringify({error:r}));}function Z(r,s,c){let p=R.join(O.homedir(),".squidcloud"),m=R.join(p,"audit.log"),a=JSON.stringify({timestamp:new Date().toISOString(),command:r,args:s,exitCode:c,pid:process.pid})+`
2
+ `;try{x.existsSync(p)||x.mkdirSync(p,{recursive:!0,mode:448}),x.appendFileSync(m,a,{encoding:"utf-8"});}catch{}}export{Z as A,d as a,f as b,g as c,u as d,l as e,N as f,A as g,K as h,_ as i,y as j,E as k,J as l,w as m,h as n,D as o,q as p,U as q,P as r,z as s,M as t,H as u,Q as v,T as w,V as x,X as y,Y as z};//# sourceMappingURL=chunk-BC3STHFS.js.map
3
+ //# sourceMappingURL=chunk-BC3STHFS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/output/brand.ts","../src/lib/output/logger.ts"],"names":["squidGradient","gradient","dimGradient","BRAND_MARKER","SUCCESS_MARK","chalk","ERROR_MARK","WARN_MARK","INFO_MARK","PROGRESS_MARK","brand","text","brandDim","brandLine","success","error","warn","info","muted","copied","jsonMode","setJsonMode","mode","isJsonMode","timestamp","log","message","options","prefix","isCI","logSuccess","logError","logWarn","logInfo","logBrand","logRaw","logJSON","data","logErrorJSON","writeAudit","command","args","exitCode","auditDir","path","os","auditFile","entry","fs"],"mappings":"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","file":"chunk-BC3STHFS.js","sourcesContent":["import chalk from 'chalk'\nimport gradient from 'gradient-string'\n\nconst squidGradient = gradient(['#4FC3F7', '#7C4DFF'])\nconst dimGradient = gradient(['#1a5276', '#4a148c'])\n\nexport const BRAND_MARKER = squidGradient('◆')\nexport const SUCCESS_MARK = chalk.hex('#4CAF50')('✓')\nexport const ERROR_MARK = chalk.hex('#F44336')('✗')\nexport const WARN_MARK = chalk.hex('#FF9800')('⚠')\nexport const INFO_MARK = chalk.hex('#4FC3F7')('ℹ')\nexport const PROGRESS_MARK = chalk.hex('#7C4DFF')('▸')\n\nexport function brand(text: string): string {\n return squidGradient(text)\n}\n\nexport function brandDim(text: string): string {\n return dimGradient(text)\n}\n\nexport function brandLine(text: string): string {\n return `${BRAND_MARKER} ${brand(text)}`\n}\n\nexport function success(text: string): string {\n return `${SUCCESS_MARK} ${chalk.green(text)}`\n}\n\nexport function error(text: string): string {\n return `${ERROR_MARK} ${chalk.red(text)}`\n}\n\nexport function warn(text: string): string {\n return `${WARN_MARK} ${chalk.hex('#FF9800')(text)}`\n}\n\nexport function info(text: string): string {\n return `${INFO_MARK} ${chalk.hex('#4FC3F7')(text)}`\n}\n\nexport function muted(text: string): string {\n return chalk.dim(text)\n}\n\nexport function copied(text: string): string {\n return muted(`(copied to clipboard)`)\n}\n","import chalk from 'chalk'\nimport os from 'node:os'\nimport fs from 'node:fs'\nimport path from 'node:path'\nimport { isCI } from '../utils/ci-detect.js'\nimport { BRAND_MARKER, SUCCESS_MARK, ERROR_MARK, WARN_MARK, INFO_MARK, muted } from './brand.js'\n\nlet jsonMode = false\n\nexport function setJsonMode(mode: boolean): void {\n jsonMode = mode\n}\n\nexport function isJsonMode(): boolean {\n return jsonMode\n}\n\ninterface LogOptions {\n prefix?: string\n}\n\nfunction timestamp(): string {\n return chalk.dim(`[${new Date().toISOString()}]`)\n}\n\nexport function log(message: string, options?: LogOptions): void {\n if (jsonMode) return\n const prefix = options?.prefix ? `${options.prefix} ` : ''\n if (isCI()) {\n console.log(`${timestamp()} ${prefix}${message}`)\n } else {\n console.log(`${prefix}${message}`)\n }\n}\n\nexport function logSuccess(message: string): void {\n if (jsonMode) {\n console.log(JSON.stringify({ level: 'success', message }))\n return\n }\n if (isCI()) {\n console.log(`${timestamp()} ${SUCCESS_MARK} ${message}`)\n } else {\n console.log(`${SUCCESS_MARK} ${chalk.green(message)}`)\n }\n}\n\nexport function logError(message: string): void {\n if (jsonMode) {\n console.error(JSON.stringify({ error: { message } }))\n return\n }\n if (isCI()) {\n console.error(`${timestamp()} ${ERROR_MARK} ${chalk.red(message)}`)\n } else {\n console.error(`${ERROR_MARK} ${chalk.red(message)}`)\n }\n}\n\nexport function logWarn(message: string): void {\n if (jsonMode) return\n if (isCI()) {\n console.warn(`${timestamp()} ${WARN_MARK} ${chalk.hex('#FF9800')(message)}`)\n } else {\n console.warn(`${WARN_MARK} ${chalk.hex('#FF9800')(message)}`)\n }\n}\n\nexport function logInfo(message: string): void {\n if (jsonMode) return\n if (isCI()) {\n console.log(`${timestamp()} ${INFO_MARK} ${chalk.hex('#4FC3F7')(message)}`)\n } else {\n console.log(`${INFO_MARK} ${chalk.hex('#4FC3F7')(message)}`)\n }\n}\n\nexport function logBrand(message: string): void {\n if (jsonMode) return\n console.log(`${BRAND_MARKER} ${message}`)\n}\n\nexport function logRaw(message: string): void {\n if (jsonMode) return\n console.log(message)\n}\n\nexport function logJSON(data: unknown): void {\n if (!jsonMode) return\n console.log(JSON.stringify(data))\n}\n\nexport function logErrorJSON(data: { message: string; code?: string }): void {\n if (!jsonMode) {\n logError(data.message)\n return\n }\n console.error(JSON.stringify({ error: data }))\n}\n\nexport function writeAudit(command: string, args: string, exitCode: number): void {\n const auditDir = path.join(os.homedir(), '.squidcloud')\n const auditFile = path.join(auditDir, 'audit.log')\n const entry = JSON.stringify({\n timestamp: new Date().toISOString(),\n command,\n args,\n exitCode,\n pid: process.pid,\n }) + '\\n'\n try {\n if (!fs.existsSync(auditDir)) {\n fs.mkdirSync(auditDir, { recursive: true, mode: 0o700 })\n }\n fs.appendFileSync(auditFile, entry, { encoding: 'utf-8' })\n } catch {\n // Silently fail — audit should never crash the CLI\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {m,n as n$1}from'./chunk-6VDGYAGT.js';import {randomBytes,createHash}from'crypto';import n from'os';import o,{existsSync,readFileSync}from'fs';import {blake3}from'@noble/hashes/blake3';import f from'path';import {randomBytes as randomBytes$1}from'@noble/hashes/utils';import {sha256}from'@noble/hashes/sha256';import {hkdf}from'@noble/hashes/hkdf';import {gcm}from'@noble/ciphers/aes';var D=["/etc/machine-id","/var/lib/dbus/machine-id","/etc/hostid"];function F(){for(let t of D)try{if(existsSync(t))return readFileSync(t,"utf-8").trim()}catch{continue}return createHash("sha256").update(n.hostname()+n.arch()+n.platform()).digest("hex")}function p(){let i=[F(),n.hostname(),n.platform(),n.arch(),n.release()].join(":");return m(blake3(i))}function N(){return randomBytes(32).toString("hex")}var d=f.join(n.homedir(),".squidcloud"),s=f.join(d,".session");function S(){let e=p(),t=new TextEncoder().encode(e);return hkdf(sha256,t,new Uint8Array(32),"squidcloud-fallback-v1",32)}async function y(e){let t=S(),i=randomBytes$1(12),a=new TextEncoder().encode(e),m$1=gcm(t,i).encrypt(a);o.existsSync(d)||o.mkdirSync(d,{recursive:true,mode:448});let g={iv:m(i),data:m(m$1)};o.writeFileSync(s,JSON.stringify(g),{mode:384,encoding:"utf-8"});}async function x(){try{if(!o.existsSync(s))return null;let e=o.readFileSync(s,"utf-8"),{iv:t,data:i}=JSON.parse(e),a=S(),m=gcm(a,n$1(t)).decrypt(n$1(i));return new TextDecoder().decode(m)}catch{return null}}async function c(){try{o.existsSync(s)&&o.unlinkSync(s);}catch{}}async function W(){try{let e=await x();if(!e)return null;let t=JSON.parse(e);return !t.session_id||!t.access_token?(await c(),null):t}catch{return await c(),null}}async function X(e){await y(JSON.stringify(e));}async function Y(){await c();}function Z(e){return Date.now()>=e.expires_at}function $(e){return e.expires_at-Date.now()<=12e4}function ee(e){return e.expires_at-Date.now()}export{p as a,N as b,y as c,x as d,c as e,W as f,X as g,Y as h,Z as i,$ as j,ee as k};//# sourceMappingURL=chunk-BQGHHBGH.js.map
2
+ //# sourceMappingURL=chunk-BQGHHBGH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/auth/fingerprint.ts","../src/lib/auth/keychain.ts","../src/lib/auth/session.ts"],"names":["MACHINE_ID_PATHS","getMachineId","p","existsSync","readFileSync","createHash","os","computeDeviceFingerprint","data","bytesToHex","blake3","generateDeviceId","randomBytes","FALLBACK_DIR","path","FALLBACK_FILE","getFallbackKey","fingerprint","ikm","hkdf","sha256","storeSession","sessionJson","key","iv","plaintext","encrypted","gcm","fs","payload","getSession","raw","decrypted","hexToBytes","deleteSession","loadSession","session","saveSession","clearSession","isSessionExpired","shouldRefreshToken","getTimeUntilExpiry"],"mappings":"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","file":"chunk-BQGHHBGH.js","sourcesContent":["import { createHash, randomBytes } from 'node:crypto'\nimport os from 'node:os'\nimport { readFileSync, existsSync } from 'node:fs'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { bytesToHex } from '../crypto/ssp.js'\n\nconst MACHINE_ID_PATHS = [\n '/etc/machine-id',\n '/var/lib/dbus/machine-id',\n '/etc/hostid',\n]\n\nfunction getMachineId(): string {\n for (const p of MACHINE_ID_PATHS) {\n try {\n if (existsSync(p)) {\n return readFileSync(p, 'utf-8').trim()\n }\n } catch {\n continue\n }\n }\n const h = createHash('sha256').update(os.hostname() + os.arch() + os.platform()).digest('hex')\n return h\n}\n\nexport function computeDeviceFingerprint(): string {\n const machineId = getMachineId()\n const components = [\n machineId,\n os.hostname(),\n os.platform(),\n os.arch(),\n os.release(),\n ]\n const data = components.join(':')\n return bytesToHex(blake3(data))\n}\n\nexport function generateDeviceId(): string {\n return randomBytes(32).toString('hex')\n}\n","import os from 'node:os'\nimport path from 'node:path'\nimport fs from 'node:fs'\nimport { randomBytes } from '@noble/hashes/utils'\nimport { sha256 } from '@noble/hashes/sha256'\nimport { hkdf } from '@noble/hashes/hkdf'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { gcm } from '@noble/ciphers/aes'\nimport { bytesToHex, hexToBytes } from '../crypto/ssp.js'\nimport { computeDeviceFingerprint } from './fingerprint.js'\n\nconst FALLBACK_DIR = path.join(os.homedir(), '.squidcloud')\nconst FALLBACK_FILE = path.join(FALLBACK_DIR, '.session')\n\nfunction getFallbackKey(): Uint8Array {\n const fingerprint = computeDeviceFingerprint()\n const ikm = new TextEncoder().encode(fingerprint)\n return hkdf(sha256, ikm, new Uint8Array(32), 'squidcloud-fallback-v1', 32)\n}\n\nexport async function storeSession(sessionJson: string): Promise<void> {\n const key = getFallbackKey()\n const iv = randomBytes(12)\n const plaintext = new TextEncoder().encode(sessionJson)\n const aes = gcm(key, iv)\n const encrypted = aes.encrypt(plaintext)\n if (!fs.existsSync(FALLBACK_DIR)) {\n fs.mkdirSync(FALLBACK_DIR, { recursive: true, mode: 0o700 })\n }\n const payload = {\n iv: bytesToHex(iv),\n data: bytesToHex(encrypted),\n }\n fs.writeFileSync(FALLBACK_FILE, JSON.stringify(payload), { mode: 0o600, encoding: 'utf-8' })\n}\n\nexport async function getSession(): Promise<string | null> {\n try {\n if (!fs.existsSync(FALLBACK_FILE)) return null\n const raw = fs.readFileSync(FALLBACK_FILE, 'utf-8')\n const { iv, data } = JSON.parse(raw) as { iv: string; data: string }\n const key = getFallbackKey()\n const aes = gcm(key, hexToBytes(iv))\n const decrypted = aes.decrypt(hexToBytes(data))\n return new TextDecoder().decode(decrypted)\n } catch {\n return null\n }\n}\n\nexport async function deleteSession(): Promise<void> {\n try {\n if (fs.existsSync(FALLBACK_FILE)) {\n fs.unlinkSync(FALLBACK_FILE)\n }\n } catch {\n // ignore\n }\n}\n","import { SquidSession } from '../crypto/ssp.js'\nimport { storeSession, getSession, deleteSession } from './keychain.js'\n\nexport async function loadSession(): Promise<SquidSession | null> {\n try {\n const raw = await getSession()\n if (!raw) return null\n const session = JSON.parse(raw) as SquidSession\n if (!session.session_id || !session.access_token) {\n await deleteSession()\n return null\n }\n return session\n } catch {\n await deleteSession()\n return null\n }\n}\n\nexport async function saveSession(session: SquidSession): Promise<void> {\n await storeSession(JSON.stringify(session))\n}\n\nexport async function clearSession(): Promise<void> {\n await deleteSession()\n}\n\nexport function isSessionExpired(session: SquidSession): boolean {\n return Date.now() >= session.expires_at\n}\n\nexport function shouldRefreshToken(session: SquidSession): boolean {\n const twoMinutes = 2 * 60 * 1000\n return (session.expires_at - Date.now()) <= twoMinutes\n}\n\nexport function getTimeUntilExpiry(session: SquidSession): number {\n return session.expires_at - Date.now()\n}\n"]}
@@ -0,0 +1,2 @@
1
+ function e(){return !!(process.env.CI||process.env.GITHUB_ACTIONS||process.env.GITLAB_CI||process.env.CIRCLECI||process.env.TRAVIS||process.env.JENKINS_HOME)}function r(){return e()?false:process.stdout.isTTY&&process.stdin.isTTY}function n(){return process.env.GITHUB_ACTIONS?"github-actions":process.env.GITLAB_CI?"gitlab-ci":process.env.CIRCLECI?"circleci":process.env.TRAVIS?"travis":process.env.JENKINS_HOME?"jenkins":process.env.CI?"unknown-ci":null}export{e as a,r as b,n as c};//# sourceMappingURL=chunk-CFZZRV3Z.js.map
2
+ //# sourceMappingURL=chunk-CFZZRV3Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils/ci-detect.ts"],"names":["isCI","isInteractive","getCIProvider"],"mappings":"AAAO,SAASA,CAAAA,EAAgB,CAC9B,OAAO,CAAC,EACN,OAAA,CAAQ,GAAA,CAAI,EAAA,EACZ,OAAA,CAAQ,GAAA,CAAI,cAAA,EACZ,OAAA,CAAQ,IAAI,SAAA,EACZ,OAAA,CAAQ,GAAA,CAAI,QAAA,EACZ,OAAA,CAAQ,GAAA,CAAI,MAAA,EACZ,OAAA,CAAQ,IAAI,YAAA,CAEhB,CAEO,SAASC,CAAAA,EAAyB,CACvC,OAAID,CAAAA,EAAK,CAAU,MACZ,OAAA,CAAQ,MAAA,CAAO,KAAA,EAAS,OAAA,CAAQ,KAAA,CAAM,KAC/C,CAEO,SAASE,CAAAA,EAA+B,CAC7C,OAAI,OAAA,CAAQ,GAAA,CAAI,cAAA,CAAuB,gBAAA,CACnC,OAAA,CAAQ,IAAI,SAAA,CAAkB,WAAA,CAC9B,OAAA,CAAQ,GAAA,CAAI,QAAA,CAAiB,UAAA,CAC7B,OAAA,CAAQ,GAAA,CAAI,OAAe,QAAA,CAC3B,OAAA,CAAQ,GAAA,CAAI,YAAA,CAAqB,SAAA,CACjC,OAAA,CAAQ,GAAA,CAAI,EAAA,CAAW,aACpB,IACT","file":"chunk-CFZZRV3Z.js","sourcesContent":["export function isCI(): boolean {\n return !!(\n process.env.CI ||\n process.env.GITHUB_ACTIONS ||\n process.env.GITLAB_CI ||\n process.env.CIRCLECI ||\n process.env.TRAVIS ||\n process.env.JENKINS_HOME\n )\n}\n\nexport function isInteractive(): boolean {\n if (isCI()) return false\n return process.stdout.isTTY && process.stdin.isTTY\n}\n\nexport function getCIProvider(): string | null {\n if (process.env.GITHUB_ACTIONS) return 'github-actions'\n if (process.env.GITLAB_CI) return 'gitlab-ci'\n if (process.env.CIRCLECI) return 'circleci'\n if (process.env.TRAVIS) return 'travis'\n if (process.env.JENKINS_HOME) return 'jenkins'\n if (process.env.CI) return 'unknown-ci'\n return null\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-52WHEL73.js';import {a,c as c$1}from'./chunk-OSI5H2T5.js';import {c}from'./chunk-5TMR6Y7L.js';import t from'chalk';async function y(l){let o=((await c(`/api/v1/sites/${l}/deploys`,{authenticated:true})).deploys||[]).map(e=>({id:t.dim(e.id.slice(0,8)),date:c$1(e.created_at),files:String(e.file_count),size:a(e.total_size),by:e.triggered_by,status:e.status==="success"?t.green("\u25CF"):e.status==="failed"?t.red("\u25CF"):t.yellow("\u25CB")}));console.log(b(o,[{key:"id",label:"Deploy"},{key:"date",label:"Date"},{key:"files",label:"Files"},{key:"size",label:"Size"},{key:"by",label:"Triggered By"},{key:"status",label:""}]));}export{y as a};//# sourceMappingURL=chunk-CJYNYLZF.js.map
2
+ //# sourceMappingURL=chunk-CJYNYLZF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/sites/sites-deploys.ts"],"names":["sitesDeploys","slug","rows","apiGet","d","chalk","formatDate","formatBytes","renderTable"],"mappings":"0IAcA,eAAOA,CAAAA,CAAoCC,CAAAA,CAA6B,CAEtE,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAmC,CAAA,cAAA,EAAiBF,CAAI,CAAA,QAAA,CAAA,CAAY,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC3F,OAAA,EAAW,EAAC,EAAG,GAAA,CAAIG,CAAAA,GAAM,CAC1C,EAAA,CAAIC,CAAAA,CAAM,GAAA,CAAID,CAAAA,CAAE,GAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAC9B,IAAA,CAAME,GAAAA,CAAWF,CAAAA,CAAE,UAAU,CAAA,CAC7B,KAAA,CAAO,MAAA,CAAOA,CAAAA,CAAE,UAAU,EAC1B,IAAA,CAAMG,CAAAA,CAAYH,CAAAA,CAAE,UAAU,CAAA,CAC9B,EAAA,CAAIA,CAAAA,CAAE,YAAA,CACN,MAAA,CAAQA,CAAAA,CAAE,MAAA,GAAW,SAAA,CAAYC,CAAAA,CAAM,KAAA,CAAM,QAAG,CAAA,CAAID,CAAAA,CAAE,MAAA,GAAW,QAAA,CAAWC,CAAAA,CAAM,GAAA,CAAI,QAAG,CAAA,CAAIA,CAAAA,CAAM,MAAA,CAAO,QAAG,CAC/G,CAAA,CAAE,CAAA,CACF,QAAQ,GAAA,CAAIG,CAAAA,CAAYN,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,IAAA,CAAM,KAAA,CAAO,QAAS,CAAA,CAC7B,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CAAA,CAC/B,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,IAAA,CAAM,KAAA,CAAO,cAAe,CAAA,CACnC,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,EAAG,CAC7B,CAAC,CAAC,EACJ","file":"chunk-CJYNYLZF.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatDate, formatBytes } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface DeployEntry {\n id: string\n created_at: string\n file_count: number\n total_size: number\n triggered_by: string\n status: string\n}\n\nexport default async function sitesDeploys(slug: string): Promise<void> {\n const data = await apiGet<{ deploys: DeployEntry[] }>(`/api/v1/sites/${slug}/deploys`, { authenticated: true })\n const rows = (data.deploys || []).map(d => ({\n id: chalk.dim(d.id.slice(0, 8)),\n date: formatDate(d.created_at),\n files: String(d.file_count),\n size: formatBytes(d.total_size),\n by: d.triggered_by,\n status: d.status === 'success' ? chalk.green('●') : d.status === 'failed' ? chalk.red('●') : chalk.yellow('○'),\n }))\n console.log(renderTable(rows, [\n { key: 'id', label: 'Deploy' },\n { key: 'date', label: 'Date' },\n { key: 'files', label: 'Files' },\n { key: 'size', label: 'Size' },\n { key: 'by', label: 'Triggered By' },\n { key: 'status', label: '' },\n ]))\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import {a,g}from'./chunk-BQGHHBGH.js';import {randomBytes,createHash}from'crypto';var d="https://aouqcwbdoyrccjcrhzzi.supabase.co",f="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImFvdXFjd2Jkb3lyY2NqY3JoenppIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDI5NjAyMTEsImV4cCI6MjA1ODUzNjIxMX0.b_VHC6uP3Efw3o_yibCoZKmsCIVZgOJ4FUF1NK-nd7U";function l(){return "sqc_"+randomBytes(32).toString("hex")}function k(t){let i=randomBytes(16).toString("base64"),s=Buffer.from(i,"base64"),e=Buffer.concat([s,Buffer.from(t)]);return {hash:createHash("sha256").update(e).digest("hex"),prefix:t.slice(0,8),salt:i}}async function x(t,i){let s=await fetch(`${d}/auth/v1/token?grant_type=password`,{method:"POST",headers:{"Content-Type":"application/json",apikey:f},body:JSON.stringify({email:t,password:i})});if(!s.ok){let r=await s.text();throw new Error(r||`Authentication failed (HTTP ${s.status})`)}let e=await s.json(),n=a(),a$1=l(),{hash:m,prefix:_,salt:y}=k(a$1),o=await fetch(`${d}/rest/v1/api_keys`,{method:"POST",headers:{"Content-Type":"application/json",apikey:f,Authorization:`Bearer ${e.access_token}`,Prefer:"return=minimal"},body:JSON.stringify({user_id:e.user.id,name:"squidcloud-cli",key_hash:m,key_prefix:_,key_salt:y,scopes:["all"],is_active:true})});if(!o.ok){let r=await o.text();console.error("API key creation failed:",r);}let c={session_id:e.user.id+"-"+Date.now(),access_token:e.access_token,refresh_token:e.refresh_token,refresh_token_id:"",device_fingerprint:n,issued_at:Date.now(),expires_at:e.expires_at*1e3,user:{id:e.user.id,email:e.user.email,username:e.user.user_metadata?.username||e.user.email.split("@")[0]||"user",plan:"free"},api_key:a$1};return await g(c),c}
2
+ export{x as a};//# sourceMappingURL=chunk-CQAXMUFB.js.map
3
+ //# sourceMappingURL=chunk-CQAXMUFB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/auth/ssp-handshake.ts"],"names":["SUPABASE_URL","ANON_KEY","generateApiKey","randomBytes","hashApiKey","key","salt","saltBytes","combined","createHash","performSSPHandshake","email","password","response","text","data","fingerprint","computeDeviceFingerprint","apiKey","hash","prefix","createKeyResponse","session","saveSession"],"mappings":"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","file":"chunk-CQAXMUFB.js","sourcesContent":["import { createHash, randomBytes } from 'node:crypto'\nimport { SquidSession } from '../crypto/ssp.js'\nimport { saveSession } from './session.js'\nimport { computeDeviceFingerprint } from './fingerprint.js'\n\nconst SUPABASE_URL = 'https://aouqcwbdoyrccjcrhzzi.supabase.co'\nconst ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImFvdXFjd2Jkb3lyY2NqY3JoenppIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDI5NjAyMTEsImV4cCI6MjA1ODUzNjIxMX0.b_VHC6uP3Efw3o_yibCoZKmsCIVZgOJ4FUF1NK-nd7U'\n\ninterface SupabaseAuthResponse {\n access_token: string\n token_type: string\n expires_in: number\n expires_at: number\n refresh_token: string\n user: {\n id: string\n email: string\n user_metadata: Record<string, unknown>\n aud: string\n }\n}\n\nfunction generateApiKey(): string {\n return 'sqc_' + randomBytes(32).toString('hex')\n}\n\nfunction hashApiKey(key: string): { hash: string; prefix: string; salt: string } {\n const salt = randomBytes(16).toString('base64')\n const saltBytes = Buffer.from(salt, 'base64')\n const combined = Buffer.concat([saltBytes, Buffer.from(key)])\n const hash = createHash('sha256').update(combined).digest('hex')\n return { hash, prefix: key.slice(0, 8), salt }\n}\n\nexport async function performSSPHandshake(email: string, password: string): Promise<SquidSession> {\n const response = await fetch(`${SUPABASE_URL}/auth/v1/token?grant_type=password`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'apikey': ANON_KEY,\n },\n body: JSON.stringify({ email, password }),\n })\n\n if (!response.ok) {\n const text = await response.text()\n throw new Error(text || `Authentication failed (HTTP ${response.status})`)\n }\n\n const data: SupabaseAuthResponse = await response.json()\n const fingerprint = computeDeviceFingerprint()\n\n const apiKey = generateApiKey()\n const { hash, prefix, salt } = hashApiKey(apiKey)\n\n const createKeyResponse = await fetch(`${SUPABASE_URL}/rest/v1/api_keys`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'apikey': ANON_KEY,\n 'Authorization': `Bearer ${data.access_token}`,\n 'Prefer': 'return=minimal',\n },\n body: JSON.stringify({\n user_id: data.user.id,\n name: 'squidcloud-cli',\n key_hash: hash,\n key_prefix: prefix,\n key_salt: salt,\n scopes: ['all'],\n is_active: true,\n }),\n })\n\n if (!createKeyResponse.ok) {\n const text = await createKeyResponse.text()\n console.error('API key creation failed:', text)\n }\n\n const session: SquidSession = {\n session_id: data.user.id + '-' + Date.now(),\n access_token: data.access_token,\n refresh_token: data.refresh_token,\n refresh_token_id: '',\n device_fingerprint: fingerprint,\n issued_at: Date.now(),\n expires_at: data.expires_at * 1000,\n user: {\n id: data.user.id,\n email: data.user.email,\n username: (data.user.user_metadata?.username as string) || data.user.email.split('@')[0] || 'user',\n plan: 'free',\n },\n api_key: apiKey,\n }\n\n await saveSession(session)\n return session\n}\n"]}
@@ -40,5 +40,5 @@ Register-ArgumentCompleter -Native -CommandName 'squidcloud' -ScriptBlock {
40
40
  $commandAst.CommandElements | Select-Object -Skip 1 | ForEach-Object { $wordToComplete = $_ }
41
41
  $commands | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) }
42
42
  }
43
- `);break;default:console.error(`Unknown shell: ${o}. Supported: bash, zsh, fish, powershell`),process.exit(1);}}export{e as default};//# sourceMappingURL=completion-IF3NB7PB.js.map
44
- //# sourceMappingURL=completion-IF3NB7PB.js.map
43
+ `);break;default:console.error(`Unknown shell: ${o}. Supported: bash, zsh, fish, powershell`),process.exit(1);}}export{e as a};//# sourceMappingURL=chunk-DNCVZK7V.js.map
44
+ //# sourceMappingURL=chunk-DNCVZK7V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/util/completion.ts"],"names":["completion","shell"],"mappings":"AAGA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA8B,CACrE,OAAQA,CAAAA,EACN,KAAK,MAAA,CACH,OAAA,CAAQ,GAAA,CAAI,iGAAiG,CAAA,CAC7G,QAAQ,GAAA,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAWjB,CAAA,CACK,MACF,KAAK,KAAA,CACH,QAAQ,GAAA,CAAI,qBAAqB,CAAA,CACjC,OAAA,CAAQ,GAAA,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAwBjB,CAAA,CACK,MACF,KAAK,MAAA,CACH,QAAQ,GAAA,CAAI,2BAA2B,CAAA,CACvC,OAAA,CAAQ,GAAA,CAAI,uDAAuD,CAAA,CACnE,OAAA,CAAQ,IAAI,iFAAiF,CAAA,CAC7F,OAAA,CAAQ,GAAA,CAAI,6FAA6F,CAAA,CACzG,OAAA,CAAQ,GAAA,CAAI,sFAAsF,CAAA,CAClG,OAAA,CAAQ,GAAA,CAAI,yGAAyG,CAAA,CACrH,MACF,KAAK,YAAA,CACH,QAAQ,GAAA,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAOjB,CAAA,CACK,MACF,QACE,OAAA,CAAQ,KAAA,CAAM,CAAA,eAAA,EAAkBA,CAAK,CAAA,wCAAA,CAA0C,CAAA,CAC/E,OAAA,CAAQ,IAAA,CAAK,CAAC,EAClB,CACF","file":"chunk-DNCVZK7V.js","sourcesContent":["import { program } from 'commander'\nimport { logRaw } from '../../lib/output/logger.js'\n\nexport default async function completion(shell: string): Promise<void> {\n switch (shell) {\n case 'bash':\n console.log('# Generate bash completion with: squidcloud completion bash > /etc/bash_completion.d/squidcloud')\n console.log(`\n_squidcloud_completions() {\n local cur prev opts\n COMPREPLY=()\n cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n prev=\"\\${COMP_WORDS[COMP_CWORD-1]}\"\n opts=\"login logout whoami auth storage deploy sites scripts filereq time collab sign monitor logs doctor version config completion feedback update\"\n COMPREPLY=( $(compgen -W \"\\${opts}\" -- \\${cur}) )\n return 0\n}\ncomplete -F _squidcloud_completions squidcloud\n`)\n break\n case 'zsh':\n console.log('#compdef squidcloud')\n console.log(`\n_squidcloud() {\n local line\n _arguments -C \\\\\n \"-v[Show version]\" \\\\\n \"--version[Show version]\" \\\\\n \"--output[Output format]:format:(text json)\" \\\\\n \"1: :(login logout whoami auth storage deploy sites scripts filereq time collab sign monitor logs doctor version config completion feedback update)\" \\\\\n \"*::arg:->args\"\n case $line[1] in\n auth) _arguments \"2: :(status sessions revoke)\" ;;\n storage) _arguments \"2: :(ls upload download cp mv rm mkdir cat info share unshare tag search diff clean)\" ;;\n sites) _arguments \"2: :(list info open unpublish delete visibility rename rollback deploys logs analytics purge)\" ;;\n scripts) _arguments \"2: :(list run logs validate init enable disable delete status cancel watch)\" ;;\n filereq) _arguments \"2: :(list create info submissions export clear delete embed)\" ;;\n time) _arguments \"2: :(lock unlock status list proof)\" ;;\n collab) _arguments \"2: :(invite list remove activity leave transfer)\" ;;\n sign) _arguments \"2: :(request status list cancel verify download)\" ;;\n monitor) _arguments \"2: :(sites pipelines storage automations)\" ;;\n logs) _arguments \"2: :(tail search export)\" ;;\n config) _arguments \"2: :(list set get delete reset)\" ;;\n esac\n}\ncompdef _squidcloud squidcloud\n`)\n break\n case 'fish':\n console.log('complete -c squidcloud -f')\n console.log('complete -c squidcloud -l output -r -f -a \"text json\"')\n console.log('complete -c squidcloud -n \"__fish_use_subcommand\" -a \"login logout whoami auth\"')\n console.log('complete -c squidcloud -n \"__fish_use_subcommand\" -a \"storage deploy sites scripts filereq\"')\n console.log('complete -c squidcloud -n \"__fish_use_subcommand\" -a \"time collab sign monitor logs\"')\n console.log('complete -c squidcloud -n \"__fish_use_subcommand\" -a \"doctor version config completion feedback update\"')\n break\n case 'powershell':\n console.log(`\nRegister-ArgumentCompleter -Native -CommandName 'squidcloud' -ScriptBlock {\n param($wordToComplete, $commandAst, $cursorPosition)\n $commands = @('login', 'logout', 'whoami', 'auth', 'storage', 'deploy', 'sites', 'scripts', 'filereq', 'time', 'collab', 'sign', 'monitor', 'logs', 'doctor', 'version', 'config', 'completion', 'feedback', 'update')\n $commandAst.CommandElements | Select-Object -Skip 1 | ForEach-Object { $wordToComplete = $_ }\n $commands | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) }\n}\n`)\n break\n default:\n console.error(`Unknown shell: ${shell}. Supported: bash, zsh, fish, powershell`)\n process.exit(1)\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-YZWZNR6K.js';import {v,q,y,s}from'./chunk-BC3STHFS.js';import {d}from'./chunk-5TMR6Y7L.js';async function l(r,n){let t={};if(n?.env)for(let d of n.env){let[o,...a]=d.split("=");o&&(t[o]=a.join("="));}if(n?.dryRun){v(`[DRY-RUN] Would run script "${r}" with env: ${JSON.stringify(t)}`);return}let i=c(`Running script "${r}"...`);i.start();let s$1=await d("/api/v1/scripts/run",{name:r,env:t},{authenticated:true});if(i.succeed(),q()){y(s$1);return}s(`Script "${r}" triggered (run: ${s$1.run_id.slice(0,8)})`);}export{l as a};//# sourceMappingURL=chunk-E2QGSNDB.js.map
2
+ //# sourceMappingURL=chunk-E2QGSNDB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/scripts/scripts-run.ts"],"names":["scriptsRun","name","options","envVars","e","k","v","logInfo","spinner","createSpinner","result","apiPost","isJsonMode","logJSON","logSuccess"],"mappings":"kHAUA,eAAOA,CAAAA,CAAkCC,EAAcC,CAAAA,CAAqC,CAC1F,IAAMC,CAAAA,CAAkC,EAAC,CACzC,GAAID,CAAAA,EAAS,GAAA,CACX,QAAWE,CAAAA,IAAKF,CAAAA,CAAQ,IAAK,CAC3B,GAAM,CAACG,CAAAA,CAAG,GAAGC,CAAC,CAAA,CAAIF,CAAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CACzBC,CAAAA,GAAGF,EAAQE,CAAC,CAAA,CAAIC,EAAE,IAAA,CAAK,GAAG,CAAA,EAChC,CAGF,GAAIJ,CAAAA,EAAS,OAAQ,CACnBK,CAAAA,CAAQ,+BAA+BN,CAAI,CAAA,YAAA,EAAe,KAAK,SAAA,CAAUE,CAAO,CAAC,CAAA,CAAE,CAAA,CACnF,MACF,CAEA,IAAMK,CAAAA,CAAUC,EAAc,CAAA,gBAAA,EAAmBR,CAAI,MAAM,CAAA,CAC3DO,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,GAAAA,CAAS,MAAMC,CAAAA,CAA4C,qBAAA,CAAuB,CAAE,IAAA,CAAAV,CAAAA,CAAM,IAAKE,CAAQ,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,EAGvI,GAFAK,CAAAA,CAAQ,SAAQ,CAEZI,CAAAA,GAAc,CAChBC,CAAAA,CAAQH,GAAM,CAAA,CACd,MACF,CACAI,EAAW,CAAA,QAAA,EAAWb,CAAI,qBAAqBS,GAAAA,CAAO,MAAA,CAAO,MAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAAG,EAC7E","file":"chunk-E2QGSNDB.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logJSON, logInfo } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\ninterface RunOptions {\n env?: string[]\n dryRun?: boolean\n}\n\nexport default async function scriptsRun(name: string, options?: RunOptions): Promise<void> {\n const envVars: Record<string, string> = {}\n if (options?.env) {\n for (const e of options.env) {\n const [k, ...v] = e.split('=')\n if (k) envVars[k] = v.join('=')\n }\n }\n\n if (options?.dryRun) {\n logInfo(`[DRY-RUN] Would run script \"${name}\" with env: ${JSON.stringify(envVars)}`)\n return\n }\n\n const spinner = createSpinner(`Running script \"${name}\"...`)\n spinner.start()\n const result = await apiPost<{ run_id: string; status: string }>('/api/v1/scripts/run', { name, env: envVars }, { authenticated: true })\n spinner.succeed()\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n logSuccess(`Script \"${name}\" triggered (run: ${result.run_id.slice(0, 8)})`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-YZWZNR6K.js';import {q,y,s,o}from'./chunk-BC3STHFS.js';import {d}from'./chunk-5TMR6Y7L.js';import c$1 from'clipboardy';import l from'chalk';async function u(i,r){let t=c(`Creating share link for ${i}...`);t.start();let e=await d("/api/v1/storage/share",{path:i,expires_in:r?.expires,password:r?.password,max_views:r?.views,burn_after_reading:r?.burn},{authenticated:true});t.stop();try{await c$1.write(e.url);}catch{}if(q()){y(e);return}s("Share link created!"),console.log(` ${l.hex("#4FC3F7")(e.url)} ${o("")}`);}export{u as a};//# sourceMappingURL=chunk-EGVPYRIE.js.map
2
+ //# sourceMappingURL=chunk-EGVPYRIE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/storage/storage-share.ts"],"names":["storageShare","path","options","spinner","createSpinner","result","apiPost","clipboard","isJsonMode","logJSON","logSuccess","chalk","copied"],"mappings":"mKAQA,eAAOA,EAAoCC,CAAAA,CAAcC,CAAAA,CAAkG,CACzJ,IAAMC,EAAUC,CAAAA,CAAc,CAAA,wBAAA,EAA2BH,CAAI,CAAA,GAAA,CAAK,CAAA,CAClEE,EAAQ,KAAA,EAAM,CACd,IAAME,CAAAA,CAAS,MAAMC,CAAAA,CAA2C,uBAAA,CAAyB,CACvF,IAAA,CAAAL,CAAAA,CACA,WAAYC,CAAAA,EAAS,OAAA,CACrB,SAAUA,CAAAA,EAAS,QAAA,CACnB,UAAWA,CAAAA,EAAS,KAAA,CACpB,mBAAoBA,CAAAA,EAAS,IAC/B,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,EAC1BC,CAAAA,CAAQ,IAAA,GAER,GAAI,CACF,MAAMI,GAAAA,CAAU,KAAA,CAAMF,EAAO,GAAG,EAClC,MAAQ,CAER,CAEA,GAAIG,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQJ,CAAM,CAAA,CACd,MACF,CAEAK,CAAAA,CAAW,qBAAqB,EAChC,OAAA,CAAQ,GAAA,CAAI,KAAKC,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAEN,CAAAA,CAAO,GAAG,CAAC,CAAA,CAAA,EAAIO,EAAO,EAAE,CAAC,EAAE,EACnE","file":"chunk-EGVPYRIE.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport clipboard from 'clipboardy'\nimport chalk from 'chalk'\nimport { copied } from '../../lib/output/brand.js'\n\nexport default async function storageShare(path: string, options?: { expires?: string; password?: string; views?: number; burn?: boolean }): Promise<void> {\n const spinner = createSpinner(`Creating share link for ${path}...`)\n spinner.start()\n const result = await apiPost<{ url: string; share_id: string }>('/api/v1/storage/share', {\n path,\n expires_in: options?.expires,\n password: options?.password,\n max_views: options?.views,\n burn_after_reading: options?.burn,\n }, { authenticated: true })\n spinner.stop()\n\n try {\n await clipboard.write(result.url)\n } catch {\n // ignore\n }\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n\n logSuccess(`Share link created!`)\n console.log(` ${chalk.hex('#4FC3F7')(result.url)} ${copied('')}`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-YZWZNR6K.js';import {x}from'./chunk-BC3STHFS.js';import {c as c$1}from'./chunk-5TMR6Y7L.js';async function i(t){let o=c(`Fetching ${t}...`);o.start();let a=await c$1(`/api/v1/storage/cat?path=${encodeURIComponent(t)}`,{authenticated:true});o.stop(),x(a.content);}export{i as a};//# sourceMappingURL=chunk-EUJ26UNW.js.map
2
+ //# sourceMappingURL=chunk-EUJ26UNW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/storage/storage-cat.ts"],"names":["storageCat","path","spinner","createSpinner","data","apiGet","logRaw"],"mappings":"mHAKA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA6B,CACpE,IAAMC,EAAUC,CAAAA,CAAc,CAAA,SAAA,EAAYF,CAAI,CAAA,GAAA,CAAK,CAAA,CACnDC,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,CAAAA,CAAO,MAAMC,GAAAA,CAA4B,CAAA,yBAAA,EAA4B,kBAAA,CAAmBJ,CAAI,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC9HC,EAAQ,IAAA,EAAK,CACbI,CAAAA,CAAOF,CAAAA,CAAK,OAAO,EACrB","file":"chunk-EUJ26UNW.js","sourcesContent":["import chalk from 'chalk'\nimport { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logRaw } from '../../lib/output/logger.js'\n\nexport default async function storageCat(path: string): Promise<void> {\n const spinner = createSpinner(`Fetching ${path}...`)\n spinner.start()\n const data = await apiGet<{ content: string }>(`/api/v1/storage/cat?path=${encodeURIComponent(path)}`, { authenticated: true })\n spinner.stop()\n logRaw(data.content)\n}\n"]}