squidcloudctl 1.1.7 → 1.2.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 (286) hide show
  1. package/dist/{auth-revoke-UCNMKHTF.js → auth-revoke-DWV3OFW6.js} +2 -2
  2. package/dist/{auth-revoke-UCNMKHTF.js.map → auth-revoke-DWV3OFW6.js.map} +1 -1
  3. package/dist/auth-sessions-D4RWXFPE.js +2 -0
  4. package/dist/{auth-sessions-PIBWTIT5.js.map → auth-sessions-D4RWXFPE.js.map} +1 -1
  5. package/dist/auth-status-EPQU6F63.js +2 -0
  6. package/dist/{auth-status-RPJVTJ4S.js.map → auth-status-EPQU6F63.js.map} +1 -1
  7. package/dist/bin/squidcloud.js +2 -2
  8. package/dist/bin/squidcloud.js.map +1 -1
  9. package/dist/{chunk-6DKUVFZF.js → chunk-CHBVIZF5.js} +2 -2
  10. package/dist/{chunk-6DKUVFZF.js.map → chunk-CHBVIZF5.js.map} +1 -1
  11. package/dist/chunk-EMRHLWPD.js +3 -0
  12. package/dist/chunk-EMRHLWPD.js.map +1 -0
  13. package/dist/chunk-EPDVSZII.js +2 -0
  14. package/dist/chunk-EPDVSZII.js.map +1 -0
  15. package/dist/{chunk-THMWE2I6.js → chunk-FNCZD2QB.js} +2 -2
  16. package/dist/{chunk-THMWE2I6.js.map → chunk-FNCZD2QB.js.map} +1 -1
  17. package/dist/chunk-N3AD2QRA.js +2 -0
  18. package/dist/chunk-N3AD2QRA.js.map +1 -0
  19. package/dist/{chunk-2RMLR54M.js → chunk-Q3A4IBGC.js} +2 -2
  20. package/dist/chunk-Q3A4IBGC.js.map +1 -0
  21. package/dist/chunk-SCKQAF44.js +2 -0
  22. package/dist/{chunk-LWB2J3KU.js.map → chunk-SCKQAF44.js.map} +1 -1
  23. package/dist/{chunk-Z74H5ACJ.js → chunk-ULVQ53OO.js} +3 -3
  24. package/dist/{chunk-Z74H5ACJ.js.map → chunk-ULVQ53OO.js.map} +1 -1
  25. package/dist/{chunk-PSJQAIDB.js → chunk-UNA5CAPX.js} +2 -2
  26. package/dist/{chunk-PSJQAIDB.js.map → chunk-UNA5CAPX.js.map} +1 -1
  27. package/dist/client-IR7OHGEQ.js +2 -0
  28. package/dist/{client-MCQSJIGH.js.map → client-IR7OHGEQ.js.map} +1 -1
  29. package/dist/{collab-activity-ESSL2DUE.js → collab-activity-YOEJEJTQ.js} +2 -2
  30. package/dist/{collab-activity-ESSL2DUE.js.map → collab-activity-YOEJEJTQ.js.map} +1 -1
  31. package/dist/collab-invite-VDDBCLSH.js +2 -0
  32. package/dist/{collab-invite-H6KXMBJ5.js.map → collab-invite-VDDBCLSH.js.map} +1 -1
  33. package/dist/collab-leave-2AEIFR47.js +2 -0
  34. package/dist/{collab-leave-23J42V4P.js.map → collab-leave-2AEIFR47.js.map} +1 -1
  35. package/dist/collab-list-MTJYXE53.js +2 -0
  36. package/dist/{collab-list-6VNDTN7W.js.map → collab-list-MTJYXE53.js.map} +1 -1
  37. package/dist/collab-remove-I3FKGFOF.js +2 -0
  38. package/dist/{collab-remove-A76ARTWG.js.map → collab-remove-I3FKGFOF.js.map} +1 -1
  39. package/dist/collab-transfer-VVHH6B2J.js +2 -0
  40. package/dist/{collab-transfer-S5MECG6Y.js.map → collab-transfer-VVHH6B2J.js.map} +1 -1
  41. package/dist/config-PL34OPDL.js +2 -0
  42. package/dist/{config-7G24FXQJ.js.map → config-PL34OPDL.js.map} +1 -1
  43. package/dist/config-delete-4UN7BFBI.js +2 -0
  44. package/dist/{config-delete-VSIFFODZ.js.map → config-delete-4UN7BFBI.js.map} +1 -1
  45. package/dist/config-get-XOS7EWEQ.js +2 -0
  46. package/dist/{config-get-DDNSM5EH.js.map → config-get-XOS7EWEQ.js.map} +1 -1
  47. package/dist/config-reset-NIOGYFA5.js +2 -0
  48. package/dist/{config-reset-ZFMP4J5H.js.map → config-reset-NIOGYFA5.js.map} +1 -1
  49. package/dist/config-set-DRTRWWAA.js +2 -0
  50. package/dist/{config-set-O6JKOGGN.js.map → config-set-DRTRWWAA.js.map} +1 -1
  51. package/dist/deploy-UOPO2HHL.js +3 -0
  52. package/dist/{deploy-O7VVCVUR.js.map → deploy-UOPO2HHL.js.map} +1 -1
  53. package/dist/{doctor-GAUV36VS.js → doctor-B7RAWBD5.js} +2 -2
  54. package/dist/{doctor-GAUV36VS.js.map → doctor-B7RAWBD5.js.map} +1 -1
  55. package/dist/feedback-BEX6DRXB.js +3 -0
  56. package/dist/{feedback-QUGQAWZB.js.map → feedback-BEX6DRXB.js.map} +1 -1
  57. package/dist/forms-clear-VPH7SHJZ.js +2 -0
  58. package/dist/{forms-clear-TSQ4YFPW.js.map → forms-clear-VPH7SHJZ.js.map} +1 -1
  59. package/dist/forms-create-O5W7O2BI.js +2 -0
  60. package/dist/{forms-create-IJPDTTGR.js.map → forms-create-O5W7O2BI.js.map} +1 -1
  61. package/dist/forms-delete-H4RY6C64.js +2 -0
  62. package/dist/{forms-delete-5Q6JVOWZ.js.map → forms-delete-H4RY6C64.js.map} +1 -1
  63. package/dist/{forms-embed-RWJ4BAPQ.js → forms-embed-2WBFYFUO.js} +3 -3
  64. package/dist/{forms-embed-RWJ4BAPQ.js.map → forms-embed-2WBFYFUO.js.map} +1 -1
  65. package/dist/forms-export-MDWMZ7I7.js +2 -0
  66. package/dist/{forms-export-YGKJVRUD.js.map → forms-export-MDWMZ7I7.js.map} +1 -1
  67. package/dist/forms-info-VO4FK3CS.js +2 -0
  68. package/dist/{forms-info-NVNTIK45.js.map → forms-info-VO4FK3CS.js.map} +1 -1
  69. package/dist/forms-list-PDSDIJI7.js +2 -0
  70. package/dist/{forms-list-UDYVBNX5.js.map → forms-list-PDSDIJI7.js.map} +1 -1
  71. package/dist/forms-submissions-VJQWV7SI.js +2 -0
  72. package/dist/{forms-submissions-LFUTUDOW.js.map → forms-submissions-VJQWV7SI.js.map} +1 -1
  73. package/dist/login-PMDO43CL.js +3 -0
  74. package/dist/{login-PDECY435.js.map → login-PMDO43CL.js.map} +1 -1
  75. package/dist/logout-XIUWCA75.js +2 -0
  76. package/dist/{logout-D2GLIU2Y.js.map → logout-XIUWCA75.js.map} +1 -1
  77. package/dist/logs-export-AU4WZDLW.js +2 -0
  78. package/dist/{logs-export-76WAIPNB.js.map → logs-export-AU4WZDLW.js.map} +1 -1
  79. package/dist/logs-search-BHVB3BIH.js +2 -0
  80. package/dist/{logs-search-MA3AWP4B.js.map → logs-search-BHVB3BIH.js.map} +1 -1
  81. package/dist/{logs-tail-2OMASMCD.js → logs-tail-YVFZLSC2.js} +3 -3
  82. package/dist/{logs-tail-2OMASMCD.js.map → logs-tail-YVFZLSC2.js.map} +1 -1
  83. package/dist/monitor-KLJ762WM.js +2 -0
  84. package/dist/{monitor-LZ7R5C3D.js.map → monitor-KLJ762WM.js.map} +1 -1
  85. package/dist/monitor-automations-B2NRWSFH.js +2 -0
  86. package/dist/{monitor-automations-AR7MS2PL.js.map → monitor-automations-B2NRWSFH.js.map} +1 -1
  87. package/dist/monitor-pipelines-2PNBET3B.js +2 -0
  88. package/dist/{monitor-pipelines-EASQLIQA.js.map → monitor-pipelines-2PNBET3B.js.map} +1 -1
  89. package/dist/{monitor-sites-2QIM4XJ3.js → monitor-sites-QNMTCOSH.js} +2 -2
  90. package/dist/{monitor-sites-2QIM4XJ3.js.map → monitor-sites-QNMTCOSH.js.map} +1 -1
  91. package/dist/monitor-storage-Z53C4CI2.js +2 -0
  92. package/dist/{monitor-storage-SMB32J37.js.map → monitor-storage-Z53C4CI2.js.map} +1 -1
  93. package/dist/scripts-cancel-2HWDUPFM.js +2 -0
  94. package/dist/{scripts-cancel-CQVIDKVW.js.map → scripts-cancel-2HWDUPFM.js.map} +1 -1
  95. package/dist/scripts-delete-UI6YRWEN.js +2 -0
  96. package/dist/{scripts-delete-TV4SX5OJ.js.map → scripts-delete-UI6YRWEN.js.map} +1 -1
  97. package/dist/scripts-disable-7IXFGWWG.js +2 -0
  98. package/dist/{scripts-disable-IHPUGSTJ.js.map → scripts-disable-7IXFGWWG.js.map} +1 -1
  99. package/dist/scripts-enable-DNEVMHLS.js +2 -0
  100. package/dist/{scripts-enable-ULCXRU7W.js.map → scripts-enable-DNEVMHLS.js.map} +1 -1
  101. package/dist/{scripts-init-AU6WNMKB.js → scripts-init-BIIEMUXV.js} +3 -3
  102. package/dist/{scripts-init-AU6WNMKB.js.map → scripts-init-BIIEMUXV.js.map} +1 -1
  103. package/dist/scripts-list-LYDOWRTU.js +2 -0
  104. package/dist/{scripts-list-XWNT7242.js.map → scripts-list-LYDOWRTU.js.map} +1 -1
  105. package/dist/scripts-logs-32CWQEBA.js +2 -0
  106. package/dist/{scripts-logs-YBF6MTMQ.js.map → scripts-logs-32CWQEBA.js.map} +1 -1
  107. package/dist/scripts-run-6AJVHB4U.js +2 -0
  108. package/dist/{scripts-run-FQ7EOXOH.js.map → scripts-run-6AJVHB4U.js.map} +1 -1
  109. package/dist/scripts-status-KCILW363.js +2 -0
  110. package/dist/{scripts-status-XYGHYRZB.js.map → scripts-status-KCILW363.js.map} +1 -1
  111. package/dist/scripts-validate-MZP4MJZZ.js +2 -0
  112. package/dist/{scripts-validate-T7CGIPPE.js.map → scripts-validate-MZP4MJZZ.js.map} +1 -1
  113. package/dist/scripts-watch-3SFVPUAA.js +2 -0
  114. package/dist/{scripts-watch-A7HEOAOE.js.map → scripts-watch-3SFVPUAA.js.map} +1 -1
  115. package/dist/sign-cancel-KK745O7W.js +2 -0
  116. package/dist/{sign-cancel-4YYJ2BBY.js.map → sign-cancel-KK745O7W.js.map} +1 -1
  117. package/dist/sign-download-6V3ABZG2.js +2 -0
  118. package/dist/{sign-download-VOMT2C3C.js.map → sign-download-6V3ABZG2.js.map} +1 -1
  119. package/dist/sign-list-VCNJSS6F.js +2 -0
  120. package/dist/{sign-list-SACY7XF3.js.map → sign-list-VCNJSS6F.js.map} +1 -1
  121. package/dist/sign-request-LNRMPU2F.js +2 -0
  122. package/dist/{sign-request-PM7BZ56P.js.map → sign-request-LNRMPU2F.js.map} +1 -1
  123. package/dist/sign-status-PNAGMC7S.js +2 -0
  124. package/dist/{sign-status-LRQGO2UX.js.map → sign-status-PNAGMC7S.js.map} +1 -1
  125. package/dist/sign-verify-ZROVA7LH.js +2 -0
  126. package/dist/{sign-verify-PQ7HBHTY.js.map → sign-verify-ZROVA7LH.js.map} +1 -1
  127. package/dist/sites-analytics-L6KVTZNH.js +2 -0
  128. package/dist/{sites-analytics-J5BMYBO5.js.map → sites-analytics-L6KVTZNH.js.map} +1 -1
  129. package/dist/sites-delete-JCBOLOA7.js +2 -0
  130. package/dist/{sites-delete-BYUJAMSX.js.map → sites-delete-JCBOLOA7.js.map} +1 -1
  131. package/dist/sites-deploys-XJ3NY4RQ.js +2 -0
  132. package/dist/{sites-deploys-XJQHVTET.js.map → sites-deploys-XJ3NY4RQ.js.map} +1 -1
  133. package/dist/sites-info-V3R7YNPU.js +2 -0
  134. package/dist/{sites-info-JBM5C5FT.js.map → sites-info-V3R7YNPU.js.map} +1 -1
  135. package/dist/sites-list-ZQTXLHJ3.js +2 -0
  136. package/dist/{sites-list-4AIOO76P.js.map → sites-list-ZQTXLHJ3.js.map} +1 -1
  137. package/dist/{sites-logs-GZALCIBX.js → sites-logs-AYG43HQV.js} +3 -3
  138. package/dist/{sites-logs-GZALCIBX.js.map → sites-logs-AYG43HQV.js.map} +1 -1
  139. package/dist/sites-open-K2JWMIWD.js +3 -0
  140. package/dist/{sites-open-QJOKIMGM.js.map → sites-open-K2JWMIWD.js.map} +1 -1
  141. package/dist/sites-purge-5Y5AQWBY.js +2 -0
  142. package/dist/{sites-purge-GXD673E2.js.map → sites-purge-5Y5AQWBY.js.map} +1 -1
  143. package/dist/sites-rename-QH6YYXUE.js +2 -0
  144. package/dist/{sites-rename-BTQZRAVA.js.map → sites-rename-QH6YYXUE.js.map} +1 -1
  145. package/dist/sites-rollback-ZQ2IHERR.js +2 -0
  146. package/dist/{sites-rollback-LZUUU4ZU.js.map → sites-rollback-ZQ2IHERR.js.map} +1 -1
  147. package/dist/sites-unpublish-MDK4GP2C.js +2 -0
  148. package/dist/{sites-unpublish-IB7BTNJC.js.map → sites-unpublish-MDK4GP2C.js.map} +1 -1
  149. package/dist/sites-visibility-WKPIU5OK.js +2 -0
  150. package/dist/{sites-visibility-I7PIUX4B.js.map → sites-visibility-WKPIU5OK.js.map} +1 -1
  151. package/dist/storage-cat-OAUEF3EE.js +2 -0
  152. package/dist/{storage-cat-CFOIZEJS.js.map → storage-cat-OAUEF3EE.js.map} +1 -1
  153. package/dist/storage-clean-I7QZ5FR6.js +2 -0
  154. package/dist/{storage-clean-6EN2KMOC.js.map → storage-clean-I7QZ5FR6.js.map} +1 -1
  155. package/dist/storage-cp-H36Q2ER4.js +2 -0
  156. package/dist/{storage-cp-SCF3CFS2.js.map → storage-cp-H36Q2ER4.js.map} +1 -1
  157. package/dist/storage-diff-6KUEJ4DB.js +2 -0
  158. package/dist/{storage-diff-MYW5AM3C.js.map → storage-diff-6KUEJ4DB.js.map} +1 -1
  159. package/dist/storage-download-32EYGI47.js +3 -0
  160. package/dist/storage-download-32EYGI47.js.map +1 -0
  161. package/dist/storage-info-2JSV56KE.js +2 -0
  162. package/dist/{storage-info-BV7VXGTF.js.map → storage-info-2JSV56KE.js.map} +1 -1
  163. package/dist/storage-ls-G33T3LMU.js +3 -0
  164. package/dist/{storage-ls-HIVJWOV6.js.map → storage-ls-G33T3LMU.js.map} +1 -1
  165. package/dist/storage-mkdir-BDT3GX7A.js +2 -0
  166. package/dist/{storage-mkdir-GRKUOWAJ.js.map → storage-mkdir-BDT3GX7A.js.map} +1 -1
  167. package/dist/storage-mv-2QJZR2FL.js +2 -0
  168. package/dist/{storage-mv-RYW5TXAH.js.map → storage-mv-2QJZR2FL.js.map} +1 -1
  169. package/dist/storage-rm-NRRRFG36.js +2 -0
  170. package/dist/{storage-rm-PLBQC4ED.js.map → storage-rm-NRRRFG36.js.map} +1 -1
  171. package/dist/storage-search-E5BIXLSU.js +2 -0
  172. package/dist/{storage-search-EKYRVCY2.js.map → storage-search-E5BIXLSU.js.map} +1 -1
  173. package/dist/storage-share-EXSSZ6XL.js +2 -0
  174. package/dist/{storage-share-OENZM4QY.js.map → storage-share-EXSSZ6XL.js.map} +1 -1
  175. package/dist/storage-tag-YV5GUZDV.js +2 -0
  176. package/dist/{storage-tag-7XTICDCD.js.map → storage-tag-YV5GUZDV.js.map} +1 -1
  177. package/dist/storage-unshare-MF4V2NGC.js +2 -0
  178. package/dist/{storage-unshare-6G6YPRPN.js.map → storage-unshare-MF4V2NGC.js.map} +1 -1
  179. package/dist/storage-upload-DYWSZ6RO.js +9 -0
  180. package/dist/storage-upload-DYWSZ6RO.js.map +1 -0
  181. package/dist/time-list-4T3FJE2I.js +2 -0
  182. package/dist/{time-list-HUWDZZ27.js.map → time-list-4T3FJE2I.js.map} +1 -1
  183. package/dist/time-lock-O55XMYPX.js +2 -0
  184. package/dist/{time-lock-MZ6C6DMR.js.map → time-lock-O55XMYPX.js.map} +1 -1
  185. package/dist/time-proof-SDANSS3D.js +2 -0
  186. package/dist/{time-proof-G6IX5SMS.js.map → time-proof-SDANSS3D.js.map} +1 -1
  187. package/dist/time-status-JFJA3MYK.js +2 -0
  188. package/dist/{time-status-UJ3XY3R5.js.map → time-status-JFJA3MYK.js.map} +1 -1
  189. package/dist/time-unlock-F7NGQ2IE.js +2 -0
  190. package/dist/{time-unlock-3TUR2KVC.js.map → time-unlock-F7NGQ2IE.js.map} +1 -1
  191. package/dist/update-5PTOF5ZA.js +2 -0
  192. package/dist/{update-DOHW47PB.js.map → update-5PTOF5ZA.js.map} +1 -1
  193. package/dist/{version-XQNUJ474.js → version-Y2LWIEFC.js} +2 -2
  194. package/dist/{version-XQNUJ474.js.map → version-Y2LWIEFC.js.map} +1 -1
  195. package/dist/whoami-BGMVNESX.js +2 -0
  196. package/dist/{whoami-C4LPZU6R.js.map → whoami-BGMVNESX.js.map} +1 -1
  197. package/package.json +1 -1
  198. package/dist/auth-sessions-PIBWTIT5.js +0 -2
  199. package/dist/auth-status-RPJVTJ4S.js +0 -2
  200. package/dist/chunk-2RMLR54M.js.map +0 -1
  201. package/dist/chunk-FZKCZRJZ.js +0 -2
  202. package/dist/chunk-FZKCZRJZ.js.map +0 -1
  203. package/dist/chunk-LWB2J3KU.js +0 -2
  204. package/dist/chunk-QT7R3AXE.js +0 -3
  205. package/dist/chunk-QT7R3AXE.js.map +0 -1
  206. package/dist/client-MCQSJIGH.js +0 -2
  207. package/dist/collab-invite-H6KXMBJ5.js +0 -2
  208. package/dist/collab-leave-23J42V4P.js +0 -2
  209. package/dist/collab-list-6VNDTN7W.js +0 -2
  210. package/dist/collab-remove-A76ARTWG.js +0 -2
  211. package/dist/collab-transfer-S5MECG6Y.js +0 -2
  212. package/dist/config-7G24FXQJ.js +0 -2
  213. package/dist/config-delete-VSIFFODZ.js +0 -2
  214. package/dist/config-get-DDNSM5EH.js +0 -2
  215. package/dist/config-reset-ZFMP4J5H.js +0 -2
  216. package/dist/config-set-O6JKOGGN.js +0 -2
  217. package/dist/deploy-O7VVCVUR.js +0 -3
  218. package/dist/feedback-QUGQAWZB.js +0 -3
  219. package/dist/forms-clear-TSQ4YFPW.js +0 -2
  220. package/dist/forms-create-IJPDTTGR.js +0 -2
  221. package/dist/forms-delete-5Q6JVOWZ.js +0 -2
  222. package/dist/forms-export-YGKJVRUD.js +0 -2
  223. package/dist/forms-info-NVNTIK45.js +0 -2
  224. package/dist/forms-list-UDYVBNX5.js +0 -2
  225. package/dist/forms-submissions-LFUTUDOW.js +0 -2
  226. package/dist/login-PDECY435.js +0 -3
  227. package/dist/logout-D2GLIU2Y.js +0 -2
  228. package/dist/logs-export-76WAIPNB.js +0 -2
  229. package/dist/logs-search-MA3AWP4B.js +0 -2
  230. package/dist/monitor-LZ7R5C3D.js +0 -2
  231. package/dist/monitor-automations-AR7MS2PL.js +0 -2
  232. package/dist/monitor-pipelines-EASQLIQA.js +0 -2
  233. package/dist/monitor-storage-SMB32J37.js +0 -2
  234. package/dist/scripts-cancel-CQVIDKVW.js +0 -2
  235. package/dist/scripts-delete-TV4SX5OJ.js +0 -2
  236. package/dist/scripts-disable-IHPUGSTJ.js +0 -2
  237. package/dist/scripts-enable-ULCXRU7W.js +0 -2
  238. package/dist/scripts-list-XWNT7242.js +0 -2
  239. package/dist/scripts-logs-YBF6MTMQ.js +0 -2
  240. package/dist/scripts-run-FQ7EOXOH.js +0 -2
  241. package/dist/scripts-status-XYGHYRZB.js +0 -2
  242. package/dist/scripts-validate-T7CGIPPE.js +0 -2
  243. package/dist/scripts-watch-A7HEOAOE.js +0 -2
  244. package/dist/session-FBC5MGFA.js +0 -2
  245. package/dist/session-FBC5MGFA.js.map +0 -1
  246. package/dist/sign-cancel-4YYJ2BBY.js +0 -2
  247. package/dist/sign-download-VOMT2C3C.js +0 -2
  248. package/dist/sign-list-SACY7XF3.js +0 -2
  249. package/dist/sign-request-PM7BZ56P.js +0 -2
  250. package/dist/sign-status-LRQGO2UX.js +0 -2
  251. package/dist/sign-verify-PQ7HBHTY.js +0 -2
  252. package/dist/sites-analytics-J5BMYBO5.js +0 -2
  253. package/dist/sites-delete-BYUJAMSX.js +0 -2
  254. package/dist/sites-deploys-XJQHVTET.js +0 -2
  255. package/dist/sites-info-JBM5C5FT.js +0 -2
  256. package/dist/sites-list-4AIOO76P.js +0 -2
  257. package/dist/sites-open-QJOKIMGM.js +0 -3
  258. package/dist/sites-purge-GXD673E2.js +0 -2
  259. package/dist/sites-rename-BTQZRAVA.js +0 -2
  260. package/dist/sites-rollback-LZUUU4ZU.js +0 -2
  261. package/dist/sites-unpublish-IB7BTNJC.js +0 -2
  262. package/dist/sites-visibility-I7PIUX4B.js +0 -2
  263. package/dist/storage-cat-CFOIZEJS.js +0 -2
  264. package/dist/storage-clean-6EN2KMOC.js +0 -2
  265. package/dist/storage-cp-SCF3CFS2.js +0 -2
  266. package/dist/storage-diff-MYW5AM3C.js +0 -2
  267. package/dist/storage-download-6EQJJ7SO.js +0 -3
  268. package/dist/storage-download-6EQJJ7SO.js.map +0 -1
  269. package/dist/storage-info-BV7VXGTF.js +0 -2
  270. package/dist/storage-ls-HIVJWOV6.js +0 -3
  271. package/dist/storage-mkdir-GRKUOWAJ.js +0 -2
  272. package/dist/storage-mv-RYW5TXAH.js +0 -2
  273. package/dist/storage-rm-PLBQC4ED.js +0 -2
  274. package/dist/storage-search-EKYRVCY2.js +0 -2
  275. package/dist/storage-share-OENZM4QY.js +0 -2
  276. package/dist/storage-tag-7XTICDCD.js +0 -2
  277. package/dist/storage-unshare-6G6YPRPN.js +0 -2
  278. package/dist/storage-upload-HW4QAENK.js +0 -2
  279. package/dist/storage-upload-HW4QAENK.js.map +0 -1
  280. package/dist/time-list-HUWDZZ27.js +0 -2
  281. package/dist/time-lock-MZ6C6DMR.js +0 -2
  282. package/dist/time-proof-G6IX5SMS.js +0 -2
  283. package/dist/time-status-UJ3XY3R5.js +0 -2
  284. package/dist/time-unlock-3TUR2KVC.js +0 -2
  285. package/dist/update-DOHW47PB.js +0 -2
  286. package/dist/whoami-C4LPZU6R.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/output/brand.ts","../src/lib/utils/ci-detect.ts","../src/lib/output/logger.ts"],"names":["squidGradient","gradient","BRAND_MARKER","SUCCESS_MARK","chalk","ERROR_MARK","WARN_MARK","INFO_MARK","PROGRESS_MARK","brand","text","muted","copied","isCI","jsonMode","setJsonMode","mode","isJsonMode","timestamp","logSuccess","message","logError","logWarn","logInfo","logBrand","logRaw","logJSON","data","writeAudit","command","args","exitCode","auditDir","path","os","auditFile","entry","fs"],"mappings":"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","file":"chunk-EMRHLWPD.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","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","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 {a as a$1,b}from'./chunk-N3AD2QRA.js';import {a}from'./chunk-EMRHLWPD.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$2,b$1)=>{let p=a$2.percentage??0,m=a$2.value??0,d=a$2.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 [`${a} ${n.bold(S)}`,T,n.white(`${p.toFixed(0)}%`),n.dim(`${a$1(m)} / ${a$1(r)}`),n.hex("#4FC3F7")(`${a$1(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-EPDVSZII.js.map
2
+ //# sourceMappingURL=chunk-EPDVSZII.js.map
@@ -0,0 +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,2 +1,2 @@
1
- import {f,m}from'./chunk-QT7R3AXE.js';import g from'cli-table3';import f$1 from'chalk';function a(r,t={}){return new g({head:r.map(e=>f$1.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(f())return m(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(f())return m(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{b as a,c as b};//# sourceMappingURL=chunk-THMWE2I6.js.map
2
- //# sourceMappingURL=chunk-THMWE2I6.js.map
1
+ import {g,n}from'./chunk-EMRHLWPD.js';import g$1 from'cli-table3';import f from'chalk';function a(r,t={}){return new g$1({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(g())return n(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(g())return n(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{b as a,c as b};//# sourceMappingURL=chunk-FNCZD2QB.js.map
2
+ //# sourceMappingURL=chunk-FNCZD2QB.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":"uFAmBO,SAASA,CAAAA,CAAYC,CAAAA,CAAmBC,CAAAA,CAAwB,EAAC,CAAgB,CACtF,OAAO,IAAIC,CAAAA,CAAM,CACf,IAAA,CAAMF,CAAAA,CAAQ,GAAA,CAAIG,CAAAA,EAAKC,GAAAA,CAAM,IAAA,CAAKD,CAAC,CAAC,CAAA,CACpC,SAAA,CAAWF,CAAAA,CAAQ,SAAA,CACnB,MAAO,CACL,IAAA,CAAM,EAAC,CACP,MAAA,CAAQ,EAAC,CACT,cAAA,CAAgB,CAAA,CAChB,eAAA,CAAiB,CAAA,CACjB,GAAGA,CAAAA,CAAQ,KACb,CAAA,CACA,KAAA,CAAO,CACL,GAAA,CAAK,QAAA,CACL,SAAA,CAAW,QAAA,CACX,UAAA,CAAY,QAAA,CACZ,WAAA,CAAa,QAAA,CACb,MAAA,CAAQ,QAAA,CACR,YAAA,CAAc,QAAA,CACd,aAAA,CAAe,QAAA,CACf,cAAA,CAAgB,SAChB,IAAA,CAAM,QAAA,CACN,UAAA,CAAY,QAAA,CACZ,GAAA,CAAK,QAAA,CACL,SAAA,CAAW,QAAA,CACX,KAAA,CAAO,QAAA,CACP,WAAA,CAAa,QAAA,CACb,MAAA,CAAQ,QACV,CAAA,CACA,GAAGA,CAAAA,CAAQ,OAAA,CAAU,CACnB,KAAA,CAAO,CACL,GAAA,CAAK,EAAA,CACL,SAAA,CAAW,EAAA,CACX,UAAA,CAAY,EAAA,CACZ,WAAA,CAAa,EAAA,CACb,MAAA,CAAQ,EAAA,CACR,YAAA,CAAc,GACd,aAAA,CAAe,EAAA,CACf,cAAA,CAAgB,EAAA,CAChB,IAAA,CAAM,EAAA,CACN,UAAA,CAAY,EAAA,CACZ,GAAA,CAAK,EAAA,CACL,SAAA,CAAW,EAAA,CACX,KAAA,CAAO,EAAA,CACP,WAAA,CAAa,EAAA,CACb,MAAA,CAAQ,EACV,CAAA,CACA,KAAA,CAAO,CAAE,cAAA,CAAgB,CAAA,CAAG,eAAA,CAAiB,CAAE,CACjD,CAAA,CAAI,EACN,CAAC,CACH,CAEO,SAASI,CAAAA,CAAYC,CAAAA,CAAiCC,CAAAA,CAA8B,CACzF,GAAIC,CAAAA,EAAW,CACb,OAAAC,CAAAA,CAAQH,CAAI,CAAA,CACL,EAAA,CAET,IAAMI,CAAAA,CAAQX,CAAAA,CACZQ,CAAAA,CAAQ,GAAA,CAAII,CAAAA,EAAKA,CAAAA,CAAE,KAAK,CAAA,CACxB,CAAE,SAAA,CAAWJ,CAAAA,CAAQ,GAAA,CAAII,CAAAA,EAAKA,CAAAA,CAAE,KAAA,EAAS,MAAM,CAAE,CACnD,CAAA,CACA,QAAWC,CAAAA,IAAON,CAAAA,CAChBI,CAAAA,CAAM,IAAA,CACJH,CAAAA,CAAQ,GAAA,CAAII,CAAAA,EAAK,CACf,IAAME,CAAAA,CAAMD,CAAAA,CAAID,CAAAA,CAAE,GAAG,CAAA,CACrB,OAAOA,CAAAA,CAAE,MAAA,CAASA,CAAAA,CAAE,MAAA,CAAOE,CAAG,CAAA,CAAI,MAAA,CAAOA,CAAAA,EAAO,EAAE,CACpD,CAAC,CACH,CAAA,CAEF,OAAOH,CAAAA,CAAM,QAAA,EACf,CAEO,SAASI,CAAAA,CAAmBR,CAAAA,CAAiCC,CAAAA,CAA8B,CAChG,GAAIC,CAAAA,EAAW,CACb,OAAAC,CAAAA,CAAQH,CAAI,CAAA,CACL,EAAA,CAET,IAAMI,CAAAA,CAAQX,CAAAA,CACZQ,CAAAA,CAAQ,GAAA,CAAII,CAAAA,EAAKA,CAAAA,CAAE,KAAK,CAAA,CACxB,CAAE,SAAA,CAAWJ,CAAAA,CAAQ,GAAA,CAAII,CAAAA,EAAKA,CAAAA,CAAE,KAAA,EAAS,MAAM,CAAA,CAAG,OAAA,CAAS,IAAK,CAClE,CAAA,CACA,IAAA,IAAWC,CAAAA,IAAON,CAAAA,CAChBI,CAAAA,CAAM,IAAA,CACJH,CAAAA,CAAQ,GAAA,CAAII,CAAAA,EAAK,CACf,IAAME,CAAAA,CAAMD,CAAAA,CAAID,CAAAA,CAAE,GAAG,EACrB,OAAOA,CAAAA,CAAE,MAAA,CAASA,CAAAA,CAAE,MAAA,CAAOE,CAAG,CAAA,CAAI,MAAA,CAAOA,CAAAA,EAAO,EAAE,CACpD,CAAC,CACH,CAAA,CAEF,OAAOH,CAAAA,CAAM,UACf","file":"chunk-THMWE2I6.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-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"]}
@@ -0,0 +1,2 @@
1
+ import s from'chalk';var a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function i(t){return t<10?"0"+t:String(t)}function c(t){if(t===0)return "0 B";let n=["B","KB","MB","GB","TB"],r=1024,o=Math.floor(Math.log(t)/Math.log(r));return `${(t/Math.pow(r,o)).toFixed(o>0?1:0)} ${n[o]}`}function $(t){if(t<1e3)return `${t}ms`;if(t<6e4)return `${(t/1e3).toFixed(1)}s`;let n=Math.floor(t/6e4),r=Math.round(t%6e4/1e3);return `${n}m ${r}s`}function g(t){let n=typeof t=="string"?new Date(t):t;return `${a[n.getMonth()]} ${n.getDate()}, ${n.getFullYear()} ${i(n.getHours())}:${i(n.getMinutes())}`}function h(t){let n=typeof t=="string"?new Date(t):t,r=Date.now(),o=n.getTime()-r,e=Math.abs(o),u=o<0?"ago":"from now";return e<6e4?`${Math.round(e/1e3)}s ${u}`:e<36e5?`${Math.round(e/6e4)}m ${u}`:e<864e5?`${Math.round(e/36e5)}h ${u}`:e<2592e6?`${Math.round(e/864e5)}d ${u}`:`${Math.round(e/2592e6)}mo ${u}`}function M(t){if(t<=0)return s.red("expired");let n=Math.floor(t/36e5),r=Math.floor(t%36e5/6e4),o=Math.floor(t%6e4/1e3);return n>0?`${n}h ${r}m ${o}s`:r>0?`${r}m ${o}s`:`${o}s`}export{c as a,$ as b,g as c,h as d,M as e};//# sourceMappingURL=chunk-N3AD2QRA.js.map
2
+ //# sourceMappingURL=chunk-N3AD2QRA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils/format.ts"],"names":["MONTHS","pad","n","formatBytes","bytes","units","k","i","formatDuration","ms","minutes","seconds","formatDate","date","d","formatRelative","now","diff","abs","suffix","formatCountdown","chalk","hours"],"mappings":"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","file":"chunk-N3AD2QRA.js","sourcesContent":["import chalk from 'chalk'\n\nconst MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n\nfunction pad(n: number): string {\n return n < 10 ? '0' + n : String(n)\n}\n\nexport function formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B'\n const units = ['B', 'KB', 'MB', 'GB', 'TB']\n const k = 1024\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n const value = bytes / Math.pow(k, i)\n return `${value.toFixed(i > 0 ? 1 : 0)} ${units[i]}`\n}\n\nexport function formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`\n const minutes = Math.floor(ms / 60000)\n const seconds = Math.round((ms % 60000) / 1000)\n return `${minutes}m ${seconds}s`\n}\n\nexport function formatDate(date: string | Date): string {\n const d = typeof date === 'string' ? new Date(date) : date\n return `${MONTHS[d.getMonth()]} ${d.getDate()}, ${d.getFullYear()} ${pad(d.getHours())}:${pad(d.getMinutes())}`\n}\n\nexport function formatRelative(date: string | Date): string {\n const d = typeof date === 'string' ? new Date(date) : date\n const now = Date.now()\n const diff = d.getTime() - now\n const abs = Math.abs(diff)\n const suffix = diff < 0 ? 'ago' : 'from now'\n\n if (abs < 60000) return `${Math.round(abs / 1000)}s ${suffix}`\n if (abs < 3600000) return `${Math.round(abs / 60000)}m ${suffix}`\n if (abs < 86400000) return `${Math.round(abs / 3600000)}h ${suffix}`\n if (abs < 2592000000) return `${Math.round(abs / 86400000)}d ${suffix}`\n return `${Math.round(abs / 2592000000)}mo ${suffix}`\n}\n\nexport function formatCountdown(ms: number): string {\n if (ms <= 0) return chalk.red('expired')\n const hours = Math.floor(ms / 3600000)\n const minutes = Math.floor((ms % 3600000) / 60000)\n const seconds = Math.floor((ms % 60000) / 1000)\n if (hours > 0) return `${hours}h ${minutes}m ${seconds}s`\n if (minutes > 0) return `${minutes}m ${seconds}s`\n return `${seconds}s`\n}\n\nexport function truncate(str: string, max: number): string {\n if (str.length <= max) return str\n return str.slice(0, max - 3) + '...'\n}\n\nexport function pluralize(n: number, singular: string, plural?: string): string {\n return n === 1 ? `${n} ${singular}` : `${n} ${plural ?? singular + 's'}`\n}\n\nexport function maskEmail(email: string): string {\n const [name, domain] = email.split('@')\n if (!name || !domain) return email\n const masked = name[0] + '***' + name[name.length - 1]\n return `${masked}@${domain}`\n}\n"]}
@@ -1,2 +1,2 @@
1
- import e from'os';import y from'path';import n,{existsSync,readFileSync}from'fs';import {concatBytes,randomBytes}from'@noble/hashes/utils';import {sha256}from'@noble/hashes/sha256';import {hkdf}from'@noble/hashes/hkdf';import {gcm}from'@noble/ciphers/aes';import {etc}from'@noble/ed25519';import'@noble/curves/ed25519.js';import {sha512}from'@noble/hashes/sha512';import'@noble/hashes/hmac';import {blake3}from'@noble/hashes/blake3';import {createHash}from'crypto';etc.sha512Sync=(...t)=>sha512(concatBytes(...t));function o(t){return Buffer.from(t).toString("hex")}function p(t){return new Uint8Array(Buffer.from(t,"hex"))}var B=["/etc/machine-id","/var/lib/dbus/machine-id","/etc/hostid"];function q(){for(let r of B)try{if(existsSync(r))return readFileSync(r,"utf-8").trim()}catch{continue}return createHash("sha256").update(e.hostname()+e.arch()+e.platform()).digest("hex")}function f(){let i=[q(),e.hostname(),e.platform(),e.arch(),e.release()].join(":");return o(blake3(i))}var m=y.join(e.homedir(),".squidcloud"),s=y.join(m,".session");function g(){let t=f(),r=new TextEncoder().encode(t);return hkdf(sha256,r,new Uint8Array(32),"squidcloud-fallback-v1",32)}async function l(t){let r=g(),i=randomBytes(12),c=new TextEncoder().encode(t),u=gcm(r,i).encrypt(c);n.existsSync(m)||n.mkdirSync(m,{recursive:true,mode:448});let x={iv:o(i),data:o(u)};n.writeFileSync(s,JSON.stringify(x),{mode:384,encoding:"utf-8"});}async function S(){try{if(!n.existsSync(s))return null;let t=n.readFileSync(s,"utf-8"),{iv:r,data:i}=JSON.parse(t),c=g(),u=gcm(c,p(r)).decrypt(p(i));return new TextDecoder().decode(u)}catch{return null}}async function a(){try{n.existsSync(s)&&n.unlinkSync(s);}catch{}}async function wt(){try{let t=await S();if(!t)return null;let r=JSON.parse(t);return !r.session_id||!r.access_token?(await a(),null):r}catch{return await a(),null}}async function bt(t){await l(JSON.stringify(t));}async function kt(){await a();}function Bt(t){return Date.now()>=t.expires_at}function qt(t){return t.expires_at-Date.now()<=12e4}function Pt(t){return t.expires_at-Date.now()}export{f as a,wt as b,bt as c,kt as d,Bt as e,qt as f,Pt as g};//# sourceMappingURL=chunk-2RMLR54M.js.map
2
- //# sourceMappingURL=chunk-2RMLR54M.js.map
1
+ import {createHash}from'crypto';import e from'os';import n,{existsSync,readFileSync}from'fs';import {blake3}from'@noble/hashes/blake3';import {etc}from'@noble/ed25519';import'@noble/curves/ed25519.js';import {sha256}from'@noble/hashes/sha256';import {sha512}from'@noble/hashes/sha512';import'@noble/hashes/hmac';import {hkdf}from'@noble/hashes/hkdf';import {concatBytes,randomBytes}from'@noble/hashes/utils';import {gcm}from'@noble/ciphers/aes';import y from'path';etc.sha512Sync=(...t)=>sha512(concatBytes(...t));function o(t){return Buffer.from(t).toString("hex")}function p(t){return new Uint8Array(Buffer.from(t,"hex"))}var B=["/etc/machine-id","/var/lib/dbus/machine-id","/etc/hostid"];function q(){for(let r of B)try{if(existsSync(r))return readFileSync(r,"utf-8").trim()}catch{continue}return createHash("sha256").update(e.hostname()+e.arch()+e.platform()).digest("hex")}function f(){let i=[q(),e.hostname(),e.platform(),e.arch(),e.release()].join(":");return o(blake3(i))}var m=y.join(e.homedir(),".squidcloud"),s=y.join(m,".session");function g(){let t=f(),r=new TextEncoder().encode(t);return hkdf(sha256,r,new Uint8Array(32),"squidcloud-fallback-v1",32)}async function l(t){let r=g(),i=randomBytes(12),c=new TextEncoder().encode(t),u=gcm(r,i).encrypt(c);n.existsSync(m)||n.mkdirSync(m,{recursive:true,mode:448});let x={iv:o(i),data:o(u)};n.writeFileSync(s,JSON.stringify(x),{mode:384,encoding:"utf-8"});}async function S(){try{if(!n.existsSync(s))return null;let t=n.readFileSync(s,"utf-8"),{iv:r,data:i}=JSON.parse(t),c=g(),u=gcm(c,p(r)).decrypt(p(i));return new TextDecoder().decode(u)}catch{return null}}async function a(){try{n.existsSync(s)&&n.unlinkSync(s);}catch{}}async function wt(){try{let t=await S();if(!t)return null;let r=JSON.parse(t);return !r.session_id||!r.access_token?(await a(),null):r}catch{return await a(),null}}async function bt(t){await l(JSON.stringify(t));}async function kt(){await a();}function Bt(t){return t.expires_at-Date.now()<=12e4}function qt(t){return t.expires_at-Date.now()}export{f as a,wt as b,bt as c,kt as d,Bt as e,qt as f};//# sourceMappingURL=chunk-Q3A4IBGC.js.map
2
+ //# sourceMappingURL=chunk-Q3A4IBGC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/crypto/ssp.ts","../src/lib/auth/fingerprint.ts","../src/lib/auth/keychain.ts","../src/lib/auth/session.ts"],"names":["etc","msgs","sha512","concatBytes","bytesToHex","buf","hexToBytes","hex","MACHINE_ID_PATHS","getMachineId","p","existsSync","readFileSync","createHash","os","computeDeviceFingerprint","data","blake3","FALLBACK_DIR","path","FALLBACK_FILE","getFallbackKey","fingerprint","ikm","hkdf","sha256","storeSession","sessionJson","key","iv","randomBytes","plaintext","encrypted","gcm","fs","payload","getSession","raw","decrypted","deleteSession","loadSession","session","saveSession","clearSession","shouldRefreshToken","getTimeUntilExpiry"],"mappings":"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","file":"chunk-Q3A4IBGC.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","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
+ import {a as a$1}from'./chunk-FNCZD2QB.js';import {g,n as n$1}from'./chunk-EMRHLWPD.js';import a from'conf';var n=new a({projectName:"squidcloud",defaults:{defaultEnvironment:"production",autoCopyUrl:true,outputFormat:"text",checkUpdates:true}});function d(){return n}async function c(){let o=Object.entries(n.store);if(g()){n$1(Object.fromEntries(o));return}let i=o.map(([s,u])=>({key:s,value:String(u)}));console.log(a$1(i,[{key:"key",label:"Key"},{key:"value",label:"Value"}]));}export{n as a,d as b,c};//# sourceMappingURL=chunk-SCKQAF44.js.map
2
+ //# sourceMappingURL=chunk-SCKQAF44.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/util/config.ts"],"names":["config","Conf","getConfig","configList","entries","isJsonMode","logJSON","rows","key","value","renderTable"],"mappings":"qGAKA,IAAMA,EAAS,IAAIC,CAAAA,CAAK,CACtB,WAAA,CAAa,YAAA,CACb,QAAA,CAAU,CACR,mBAAoB,YAAA,CACpB,WAAA,CAAa,KACb,YAAA,CAAc,MAAA,CACd,aAAc,IAChB,CACF,CAAC,EAEM,SAASC,CAAAA,EAAkB,CAChC,OAAOF,CACT,CAEA,eAAOG,CAAAA,EAAmD,CACxD,IAAMC,CAAAA,CAAU,MAAA,CAAO,QAAQJ,CAAAA,CAAO,KAAK,EAC3C,GAAIK,CAAAA,GAAc,CAChBC,CAAAA,CAAQ,MAAA,CAAO,WAAA,CAAYF,CAAO,CAAC,CAAA,CACnC,MACF,CACA,IAAMG,EAAOH,CAAAA,CAAQ,GAAA,CAAI,CAAC,CAACI,CAAAA,CAAKC,CAAK,CAAA,IAAO,CAC1C,IAAAD,CAAAA,CACA,KAAA,CAAO,OAAOC,CAAK,CACrB,CAAA,CAAE,CAAA,CACF,QAAQ,GAAA,CAAIC,GAAAA,CAAYH,EAAM,CAC5B,CAAE,IAAK,KAAA,CAAO,KAAA,CAAO,KAAM,CAAA,CAC3B,CAAE,IAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CACjC,CAAC,CAAC,EACJ","file":"chunk-LWB2J3KU.js","sourcesContent":["import Conf from 'conf'\nimport { renderTable } from '../../lib/output/table.js'\nimport { logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nconst config = new Conf({\n projectName: 'squidcloud',\n defaults: {\n defaultEnvironment: 'production',\n autoCopyUrl: true,\n outputFormat: 'text',\n checkUpdates: true,\n },\n})\n\nexport function getConfig(): Conf {\n return config\n}\n\nexport default async function configList(): Promise<void> {\n const entries = Object.entries(config.store) as [string, unknown][]\n if (isJsonMode()) {\n logJSON(Object.fromEntries(entries))\n return\n }\n const rows = entries.map(([key, value]) => ({\n key,\n value: String(value),\n }))\n console.log(renderTable(rows, [\n { key: 'key', label: 'Key' },\n { key: 'value', label: 'Value' },\n ]))\n}\n\nexport { config }\n"]}
1
+ {"version":3,"sources":["../src/commands/util/config.ts"],"names":["config","Conf","getConfig","configList","entries","isJsonMode","logJSON","rows","key","value","renderTable"],"mappings":"4GAKA,IAAMA,EAAS,IAAIC,CAAAA,CAAK,CACtB,WAAA,CAAa,YAAA,CACb,QAAA,CAAU,CACR,mBAAoB,YAAA,CACpB,WAAA,CAAa,KACb,YAAA,CAAc,MAAA,CACd,aAAc,IAChB,CACF,CAAC,EAEM,SAASC,CAAAA,EAAkB,CAChC,OAAOF,CACT,CAEA,eAAOG,CAAAA,EAAmD,CACxD,IAAMC,CAAAA,CAAU,MAAA,CAAO,QAAQJ,CAAAA,CAAO,KAAK,EAC3C,GAAIK,CAAAA,GAAc,CAChBC,GAAAA,CAAQ,MAAA,CAAO,WAAA,CAAYF,CAAO,CAAC,CAAA,CACnC,MACF,CACA,IAAMG,EAAOH,CAAAA,CAAQ,GAAA,CAAI,CAAC,CAACI,CAAAA,CAAKC,CAAK,CAAA,IAAO,CAC1C,IAAAD,CAAAA,CACA,KAAA,CAAO,OAAOC,CAAK,CACrB,CAAA,CAAE,CAAA,CACF,QAAQ,GAAA,CAAIC,GAAAA,CAAYH,EAAM,CAC5B,CAAE,IAAK,KAAA,CAAO,KAAA,CAAO,KAAM,CAAA,CAC3B,CAAE,IAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CACjC,CAAC,CAAC,EACJ","file":"chunk-SCKQAF44.js","sourcesContent":["import Conf from 'conf'\nimport { renderTable } from '../../lib/output/table.js'\nimport { logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nconst config = new Conf({\n projectName: 'squidcloud',\n defaults: {\n defaultEnvironment: 'production',\n autoCopyUrl: true,\n outputFormat: 'text',\n checkUpdates: true,\n },\n})\n\nexport function getConfig(): Conf {\n return config\n}\n\nexport default async function configList(): Promise<void> {\n const entries = Object.entries(config.store) as [string, unknown][]\n if (isJsonMode()) {\n logJSON(Object.fromEntries(entries))\n return\n }\n const rows = entries.map(([key, value]) => ({\n key,\n value: String(value),\n }))\n console.log(renderTable(rows, [\n { key: 'key', label: 'Key' },\n { key: 'value', label: 'Value' },\n ]))\n}\n\nexport { config }\n"]}
@@ -1,3 +1,3 @@
1
- import {b as b$1,a,d as d$1,c}from'./chunk-2RMLR54M.js';import s from'fs';import f from'path';import d from'os';var l="https://aouqcwbdoyrccjcrhzzi.supabase.co",y="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImFvdXFjd2Jkb3lyY2NqY3JoenppIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDI5NjAyMTEsImV4cCI6MjA1ODUzNjIxMX0.b_VHC6uP3Efw3o_yibCoZKmsCIVZgOJ4FUF1NK-nd7U",r=f.join(d.homedir(),".squidcloud",".refresh.lock");function S(){let n=f.dirname(r);s.existsSync(n)||s.mkdirSync(n,{recursive:true,mode:448});}async function h(){S();let n=false,t=0;for(;!n&&t<50;)try{let i=s.openSync(r,"wx");s.writeSync(i,String(process.pid)),s.closeSync(i),n=!0;}catch{let i=s.statSync(r);if(Date.now()-i.mtimeMs>1e4)try{s.unlinkSync(r);}catch{}await new Promise(e=>setTimeout(e,100)),t++;}return ()=>{try{s.unlinkSync(r);}catch{}}}async function b(){let n=await h();try{let t=await b$1();if(!t)return null;let i=a();if(t.device_fingerprint!==i)return await d$1(),null;let a$1=await fetch(`${l}/auth/v1/token?grant_type=refresh_token`,{method:"POST",headers:{"Content-Type":"application/json",apikey:y},body:JSON.stringify({refresh_token:t.refresh_token})});if(!a$1.ok)return await d$1(),null;let e=await a$1.json(),c$1={...t,access_token:e.access_token,refresh_token:e.refresh_token,expires_at:e.expires_at*1e3,issued_at:Date.now(),device_fingerprint:i,user:{id:e.user.id,email:e.user.email,username:e.user.user_metadata?.username||e.user.email.split("@")[0]||"user",plan:"free"}};return await c(c$1),c$1}catch{return await d$1(),null}finally{n();}}
2
- export{b as a};//# sourceMappingURL=chunk-Z74H5ACJ.js.map
3
- //# sourceMappingURL=chunk-Z74H5ACJ.js.map
1
+ import {b as b$1,a,d as d$1,c}from'./chunk-Q3A4IBGC.js';import s from'fs';import f from'path';import d from'os';var l="https://aouqcwbdoyrccjcrhzzi.supabase.co",y="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImFvdXFjd2Jkb3lyY2NqY3JoenppIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDI5NjAyMTEsImV4cCI6MjA1ODUzNjIxMX0.b_VHC6uP3Efw3o_yibCoZKmsCIVZgOJ4FUF1NK-nd7U",r=f.join(d.homedir(),".squidcloud",".refresh.lock");function S(){let n=f.dirname(r);s.existsSync(n)||s.mkdirSync(n,{recursive:true,mode:448});}async function h(){S();let n=false,t=0;for(;!n&&t<50;)try{let i=s.openSync(r,"wx");s.writeSync(i,String(process.pid)),s.closeSync(i),n=!0;}catch{let i=s.statSync(r);if(Date.now()-i.mtimeMs>1e4)try{s.unlinkSync(r);}catch{}await new Promise(e=>setTimeout(e,100)),t++;}return ()=>{try{s.unlinkSync(r);}catch{}}}async function b(){let n=await h();try{let t=await b$1();if(!t)return null;let i=a();if(t.device_fingerprint!==i)return await d$1(),null;let a$1=await fetch(`${l}/auth/v1/token?grant_type=refresh_token`,{method:"POST",headers:{"Content-Type":"application/json",apikey:y},body:JSON.stringify({refresh_token:t.refresh_token})});if(!a$1.ok)return await d$1(),null;let e=await a$1.json(),c$1={...t,access_token:e.access_token,refresh_token:e.refresh_token,expires_at:e.expires_at*1e3,issued_at:Date.now(),device_fingerprint:i,user:{id:e.user.id,email:e.user.email,username:e.user.user_metadata?.username||e.user.email.split("@")[0]||"user",plan:"free"}};return await c(c$1),c$1}catch{return await d$1(),null}finally{n();}}
2
+ export{b as a};//# sourceMappingURL=chunk-ULVQ53OO.js.map
3
+ //# sourceMappingURL=chunk-ULVQ53OO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/auth/refresh.ts"],"names":["SUPABASE_URL","ANON_KEY","LOCK_FILE","path","os","ensureLockDir","dir","fs","acquireLock","acquired","attempts","fd","stat","r","refreshAccessToken","release","session","loadSession","fingerprint","computeDeviceFingerprint","clearSession","response","data","newSession","saveSession"],"mappings":"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","file":"chunk-Z74H5ACJ.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport os from 'node:os'\nimport { SquidSession } from '../crypto/ssp.js'\nimport { computeDeviceFingerprint } from './fingerprint.js'\nimport { loadSession, saveSession, clearSession } from './session.js'\n\nconst SUPABASE_URL = 'https://aouqcwbdoyrccjcrhzzi.supabase.co'\nconst ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImFvdXFjd2Jkb3lyY2NqY3JoenppIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDI5NjAyMTEsImV4cCI6MjA1ODUzNjIxMX0.b_VHC6uP3Efw3o_yibCoZKmsCIVZgOJ4FUF1NK-nd7U'\n\nconst LOCK_FILE = path.join(os.homedir(), '.squidcloud', '.refresh.lock')\n\nfunction ensureLockDir(): void {\n const dir = path.dirname(LOCK_FILE)\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true, mode: 0o700 })\n }\n}\n\nasync function acquireLock(): Promise<() => void> {\n ensureLockDir()\n let acquired = false\n let attempts = 0\n while (!acquired && attempts < 50) {\n try {\n const fd = fs.openSync(LOCK_FILE, 'wx')\n fs.writeSync(fd, String(process.pid))\n fs.closeSync(fd)\n acquired = true\n } catch {\n const stat = fs.statSync(LOCK_FILE)\n const age = Date.now() - stat.mtimeMs\n if (age > 10000) {\n try { fs.unlinkSync(LOCK_FILE) } catch {}\n }\n await new Promise(r => setTimeout(r, 100))\n attempts++\n }\n }\n return () => {\n try { fs.unlinkSync(LOCK_FILE) } catch {}\n }\n}\n\ninterface SupabaseRefreshResponse {\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 }\n}\n\nexport async function refreshAccessToken(): Promise<SquidSession | null> {\n const release = await acquireLock()\n try {\n const session = await loadSession()\n if (!session) return null\n\n const fingerprint = computeDeviceFingerprint()\n if (session.device_fingerprint !== fingerprint) {\n await clearSession()\n return null\n }\n\n const response = await fetch(`${SUPABASE_URL}/auth/v1/token?grant_type=refresh_token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'apikey': ANON_KEY,\n },\n body: JSON.stringify({ refresh_token: session.refresh_token }),\n })\n\n if (!response.ok) {\n await clearSession()\n return null\n }\n\n const data: SupabaseRefreshResponse = await response.json()\n\n const newSession: SquidSession = {\n ...session,\n access_token: data.access_token,\n refresh_token: data.refresh_token,\n expires_at: data.expires_at * 1000,\n issued_at: Date.now(),\n device_fingerprint: fingerprint,\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 }\n await saveSession(newSession)\n return newSession\n } catch {\n await clearSession()\n return null\n } finally {\n release()\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/auth/refresh.ts"],"names":["SUPABASE_URL","ANON_KEY","LOCK_FILE","path","os","ensureLockDir","dir","fs","acquireLock","acquired","attempts","fd","stat","r","refreshAccessToken","release","session","loadSession","fingerprint","computeDeviceFingerprint","clearSession","response","data","newSession","saveSession"],"mappings":"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","file":"chunk-ULVQ53OO.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport os from 'node:os'\nimport { SquidSession } from '../crypto/ssp.js'\nimport { computeDeviceFingerprint } from './fingerprint.js'\nimport { loadSession, saveSession, clearSession } from './session.js'\n\nconst SUPABASE_URL = 'https://aouqcwbdoyrccjcrhzzi.supabase.co'\nconst ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImFvdXFjd2Jkb3lyY2NqY3JoenppIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDI5NjAyMTEsImV4cCI6MjA1ODUzNjIxMX0.b_VHC6uP3Efw3o_yibCoZKmsCIVZgOJ4FUF1NK-nd7U'\n\nconst LOCK_FILE = path.join(os.homedir(), '.squidcloud', '.refresh.lock')\n\nfunction ensureLockDir(): void {\n const dir = path.dirname(LOCK_FILE)\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true, mode: 0o700 })\n }\n}\n\nasync function acquireLock(): Promise<() => void> {\n ensureLockDir()\n let acquired = false\n let attempts = 0\n while (!acquired && attempts < 50) {\n try {\n const fd = fs.openSync(LOCK_FILE, 'wx')\n fs.writeSync(fd, String(process.pid))\n fs.closeSync(fd)\n acquired = true\n } catch {\n const stat = fs.statSync(LOCK_FILE)\n const age = Date.now() - stat.mtimeMs\n if (age > 10000) {\n try { fs.unlinkSync(LOCK_FILE) } catch {}\n }\n await new Promise(r => setTimeout(r, 100))\n attempts++\n }\n }\n return () => {\n try { fs.unlinkSync(LOCK_FILE) } catch {}\n }\n}\n\ninterface SupabaseRefreshResponse {\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 }\n}\n\nexport async function refreshAccessToken(): Promise<SquidSession | null> {\n const release = await acquireLock()\n try {\n const session = await loadSession()\n if (!session) return null\n\n const fingerprint = computeDeviceFingerprint()\n if (session.device_fingerprint !== fingerprint) {\n await clearSession()\n return null\n }\n\n const response = await fetch(`${SUPABASE_URL}/auth/v1/token?grant_type=refresh_token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'apikey': ANON_KEY,\n },\n body: JSON.stringify({ refresh_token: session.refresh_token }),\n })\n\n if (!response.ok) {\n await clearSession()\n return null\n }\n\n const data: SupabaseRefreshResponse = await response.json()\n\n const newSession: SquidSession = {\n ...session,\n access_token: data.access_token,\n refresh_token: data.refresh_token,\n expires_at: data.expires_at * 1000,\n issued_at: Date.now(),\n device_fingerprint: fingerprint,\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 }\n await saveSession(newSession)\n return newSession\n } catch {\n await clearSession()\n return null\n } finally {\n release()\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {f}from'./chunk-QT7R3AXE.js';import t from'ora';import o from'chalk';function n(){return !!(process.env.CI||process.env.GITHUB_ACTIONS||process.env.GITLAB_CI||process.env.CIRCLECI)}var a={dots:{spinner:"dots"},moon:{spinner:"moon"},arc:{spinner:"arc"},bounce:{spinner:"bounce"},shark:{spinner:{interval:120,frames:["\u25B8 ","\u25B8\u25B8 ","\u25B8\u25B8\u25B8 ","\u25B8\u25B8\u25B8\u25B8"," \u25B8\u25B8\u25B8\u25B8"," \u25B8\u25B8\u25B8"," \u25B8\u25B8"," \u25B8"]}}};function c(e,i="shark"){if(n()||f()){let r={...t({text:e,spinner:"dots"}),start:()=>(n()||console.log(e),r),stop:()=>(n()||console.log(),r),succeed:()=>(n()||console.log(`${o.green("\u2713")} ${e}`),r),fail:()=>(n()||console.log(`${o.red("\u2717")} ${e}`),r),warn:()=>(n()||console.log(`${o.hex("#FF9800")("\u26A0")} ${e}`),r),info:()=>(n()||console.log(`${o.hex("#4FC3F7")("\u2139")} ${e}`),r),stopAndPersist:()=>(n()||console.log(`${e}`),r),clear:()=>r,render:()=>r,frame:()=>" ",text:e,isSpinning:false,indent:0,color:"cyan",prefixText:"",spinner:{interval:100,frames:[""]}};return r}return t({text:e,...a[i]}).start()}export{c as a};//# sourceMappingURL=chunk-PSJQAIDB.js.map
2
- //# sourceMappingURL=chunk-PSJQAIDB.js.map
1
+ import {g}from'./chunk-EMRHLWPD.js';import t from'ora';import o from'chalk';function n(){return !!(process.env.CI||process.env.GITHUB_ACTIONS||process.env.GITLAB_CI||process.env.CIRCLECI)}var a={dots:{spinner:"dots"},moon:{spinner:"moon"},arc:{spinner:"arc"},bounce:{spinner:"bounce"},shark:{spinner:{interval:120,frames:["\u25B8 ","\u25B8\u25B8 ","\u25B8\u25B8\u25B8 ","\u25B8\u25B8\u25B8\u25B8"," \u25B8\u25B8\u25B8\u25B8"," \u25B8\u25B8\u25B8"," \u25B8\u25B8"," \u25B8"]}}};function c(e,i="shark"){if(n()||g()){let r={...t({text:e,spinner:"dots"}),start:()=>(n()||console.log(e),r),stop:()=>(n()||console.log(),r),succeed:()=>(n()||console.log(`${o.green("\u2713")} ${e}`),r),fail:()=>(n()||console.log(`${o.red("\u2717")} ${e}`),r),warn:()=>(n()||console.log(`${o.hex("#FF9800")("\u26A0")} ${e}`),r),info:()=>(n()||console.log(`${o.hex("#4FC3F7")("\u2139")} ${e}`),r),stopAndPersist:()=>(n()||console.log(`${e}`),r),clear:()=>r,render:()=>r,frame:()=>" ",text:e,isSpinning:false,indent:0,color:"cyan",prefixText:"",spinner:{interval:100,frames:[""]}};return r}return t({text:e,...a[i]}).start()}export{c as a};//# sourceMappingURL=chunk-UNA5CAPX.js.map
2
+ //# sourceMappingURL=chunk-UNA5CAPX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/output/index.ts","../src/lib/output/spinner.ts"],"names":["isCI","SPINNER_FRAMES","createSpinner","text","style","isJsonMode","silent","ora","chalk"],"mappings":"4EAMO,SAASA,CAAAA,EAAgB,CAC9B,OAAO,CAAC,EACN,OAAA,CAAQ,GAAA,CAAI,EAAA,EACZ,OAAA,CAAQ,GAAA,CAAI,cAAA,EACZ,OAAA,CAAQ,GAAA,CAAI,SAAA,EACZ,OAAA,CAAQ,GAAA,CAAI,QAAA,CAEhB,CCTA,IAAMC,CAAAA,CAA8C,CAClD,IAAA,CAAM,CAAE,OAAA,CAAS,MAAO,CAAA,CACxB,IAAA,CAAM,CAAE,OAAA,CAAS,MAAO,CAAA,CACxB,GAAA,CAAK,CAAE,QAAS,KAAM,CAAA,CACtB,MAAA,CAAQ,CAAE,OAAA,CAAS,QAAS,CAAA,CAC5B,KAAA,CAAO,CAAE,OAAA,CAAS,CAAE,QAAA,CAAU,GAAA,CAAK,MAAA,CAAQ,CAAC,WAAA,CAAQ,gBAAA,CAAQ,qBAAA,CAAQ,0BAAA,CAAQ,2BAAA,CAAS,sBAAA,CAAS,iBAAA,CAAS,YAAO,CAAE,CAAE,CACpH,CAAA,CAEO,SAASC,CAAAA,CAAcC,EAAcC,CAAAA,CAAqC,OAAA,CAAc,CAC7F,GAAIJ,CAAAA,EAAK,EAAKK,CAAAA,EAAW,CAAG,CAC1B,IAAMC,CAAAA,CAAc,CAClB,GAAGC,CAAAA,CAAI,CAAE,IAAA,CAAAJ,CAAAA,CAAM,OAAA,CAAS,MAAO,CAAC,CAAA,CAChC,KAAA,CAAO,KAAaH,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,CAAIG,CAAI,CAAA,CAAUG,GACtD,IAAA,CAAM,KAAaN,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,EAAI,CAAUM,CAAAA,CAAAA,CACjD,OAAA,CAAS,KAAaN,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,CAAI,GAAGQ,CAAAA,CAAM,KAAA,CAAM,QAAG,CAAC,CAAA,CAAA,EAAIL,CAAI,EAAE,CAAA,CAAUG,CAAAA,CAAAA,CACjF,IAAA,CAAM,KAAaN,CAAAA,EAAK,EAAG,QAAQ,GAAA,CAAI,CAAA,EAAGQ,CAAAA,CAAM,GAAA,CAAI,QAAG,CAAC,CAAA,CAAA,EAAIL,CAAI,CAAA,CAAE,CAAA,CAAUG,CAAAA,CAAAA,CAC5E,IAAA,CAAM,KAAaN,CAAAA,IAAQ,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAGQ,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAE,QAAG,CAAC,CAAA,CAAA,EAAIL,CAAI,CAAA,CAAE,CAAA,CAAUG,CAAAA,CAAAA,CACvF,KAAM,KAAaN,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAGQ,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAE,QAAG,CAAC,CAAA,CAAA,EAAIL,CAAI,EAAE,CAAA,CAAUG,CAAAA,CAAAA,CACvF,cAAA,CAAgB,KAAaN,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAGG,CAAI,CAAA,CAAE,CAAA,CAAUG,CAAAA,CAAAA,CACpE,KAAA,CAAO,IAAeA,CAAAA,CACtB,MAAA,CAAQ,IAAeA,CAAAA,CACvB,KAAA,CAAO,IAAM,GAAA,CACb,IAAA,CAAAH,CAAAA,CACA,UAAA,CAAY,KAAA,CACZ,MAAA,CAAQ,CAAA,CACR,KAAA,CAAO,OACP,UAAA,CAAY,EAAA,CACZ,OAAA,CAAS,CAAE,QAAA,CAAU,GAAA,CAAK,MAAA,CAAQ,CAAC,EAAE,CAAE,CACzC,CAAA,CACA,OAAOG,CACT,CACA,OAAOC,CAAAA,CAAI,CAAE,IAAA,CAAAJ,CAAAA,CAAM,GAAGF,CAAAA,CAAeG,CAAK,CAAE,CAAC,CAAA,CAAE,KAAA,EACjD","file":"chunk-PSJQAIDB.js","sourcesContent":["export { renderMascot, renderBrandedMascot } from './mascot.js'\nexport { brand, brandDim, brandLine, success, error, warn, info, muted, copied, BRAND_MARKER, SUCCESS_MARK, ERROR_MARK, WARN_MARK, INFO_MARK, PROGRESS_MARK } from './brand.js'\nexport { setJsonMode, isJsonMode, log, logSuccess, logError, logWarn, logInfo, logBrand, logRaw, logJSON, logErrorJSON, writeAudit } from './logger.js'\nexport { createSpinner } from './spinner.js'\nexport { createTable, renderTable, renderCompactTable } from './table.js'\n\nexport function isCI(): boolean {\n return !!(\n process.env.CI ||\n process.env.GITHUB_ACTIONS ||\n process.env.GITLAB_CI ||\n process.env.CIRCLECI\n )\n}\n","import ora, { Ora } from 'ora'\nimport chalk from 'chalk'\nimport { isCI, isJsonMode } from './index.js'\n\nconst SPINNER_FRAMES: Record<string, ora.Options> = {\n dots: { spinner: 'dots' },\n moon: { spinner: 'moon' },\n arc: { spinner: 'arc' },\n bounce: { spinner: 'bounce' },\n shark: { spinner: { interval: 120, frames: ['▸ ', '▸▸ ', '▸▸▸ ', '▸▸▸▸', ' ▸▸▸▸', ' ▸▸▸', ' ▸▸', ' ▸'] } },\n}\n\nexport function createSpinner(text: string, style: keyof typeof SPINNER_FRAMES = 'shark'): Ora {\n if (isCI() || isJsonMode()) {\n const silent: Ora = {\n ...ora({ text, spinner: 'dots' }),\n start: () => { if (!isCI()) console.log(text); return silent },\n stop: () => { if (!isCI()) console.log(); return silent },\n succeed: () => { if (!isCI()) console.log(`${chalk.green('✓')} ${text}`); return silent },\n fail: () => { if (!isCI()) console.log(`${chalk.red('✗')} ${text}`); return silent },\n warn: () => { if (!isCI()) console.log(`${chalk.hex('#FF9800')('⚠')} ${text}`); return silent },\n info: () => { if (!isCI()) console.log(`${chalk.hex('#4FC3F7')('ℹ')} ${text}`); return silent },\n stopAndPersist: () => { if (!isCI()) console.log(`${text}`); return silent },\n clear: () => { return silent },\n render: () => { return silent },\n frame: () => ' ',\n text,\n isSpinning: false,\n indent: 0,\n color: 'cyan',\n prefixText: '',\n spinner: { interval: 100, frames: [''] },\n } as unknown as Ora\n return silent\n }\n return ora({ text, ...SPINNER_FRAMES[style] }).start()\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/output/index.ts","../src/lib/output/spinner.ts"],"names":["isCI","SPINNER_FRAMES","createSpinner","text","style","isJsonMode","silent","ora","chalk"],"mappings":"4EAMO,SAASA,CAAAA,EAAgB,CAC9B,OAAO,CAAC,EACN,OAAA,CAAQ,GAAA,CAAI,EAAA,EACZ,OAAA,CAAQ,GAAA,CAAI,cAAA,EACZ,OAAA,CAAQ,GAAA,CAAI,SAAA,EACZ,OAAA,CAAQ,GAAA,CAAI,QAAA,CAEhB,CCTA,IAAMC,CAAAA,CAA8C,CAClD,IAAA,CAAM,CAAE,OAAA,CAAS,MAAO,CAAA,CACxB,IAAA,CAAM,CAAE,OAAA,CAAS,MAAO,CAAA,CACxB,GAAA,CAAK,CAAE,QAAS,KAAM,CAAA,CACtB,MAAA,CAAQ,CAAE,OAAA,CAAS,QAAS,CAAA,CAC5B,KAAA,CAAO,CAAE,OAAA,CAAS,CAAE,QAAA,CAAU,GAAA,CAAK,MAAA,CAAQ,CAAC,WAAA,CAAQ,gBAAA,CAAQ,qBAAA,CAAQ,0BAAA,CAAQ,2BAAA,CAAS,sBAAA,CAAS,iBAAA,CAAS,YAAO,CAAE,CAAE,CACpH,CAAA,CAEO,SAASC,CAAAA,CAAcC,EAAcC,CAAAA,CAAqC,OAAA,CAAc,CAC7F,GAAIJ,CAAAA,EAAK,EAAKK,CAAAA,EAAW,CAAG,CAC1B,IAAMC,CAAAA,CAAc,CAClB,GAAGC,CAAAA,CAAI,CAAE,IAAA,CAAAJ,CAAAA,CAAM,OAAA,CAAS,MAAO,CAAC,CAAA,CAChC,KAAA,CAAO,KAAaH,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,CAAIG,CAAI,CAAA,CAAUG,GACtD,IAAA,CAAM,KAAaN,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,EAAI,CAAUM,CAAAA,CAAAA,CACjD,OAAA,CAAS,KAAaN,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,CAAI,GAAGQ,CAAAA,CAAM,KAAA,CAAM,QAAG,CAAC,CAAA,CAAA,EAAIL,CAAI,EAAE,CAAA,CAAUG,CAAAA,CAAAA,CACjF,IAAA,CAAM,KAAaN,CAAAA,EAAK,EAAG,QAAQ,GAAA,CAAI,CAAA,EAAGQ,CAAAA,CAAM,GAAA,CAAI,QAAG,CAAC,CAAA,CAAA,EAAIL,CAAI,CAAA,CAAE,CAAA,CAAUG,CAAAA,CAAAA,CAC5E,IAAA,CAAM,KAAaN,CAAAA,IAAQ,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAGQ,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAE,QAAG,CAAC,CAAA,CAAA,EAAIL,CAAI,CAAA,CAAE,CAAA,CAAUG,CAAAA,CAAAA,CACvF,KAAM,KAAaN,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAGQ,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAE,QAAG,CAAC,CAAA,CAAA,EAAIL,CAAI,EAAE,CAAA,CAAUG,CAAAA,CAAAA,CACvF,cAAA,CAAgB,KAAaN,CAAAA,EAAK,EAAG,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAGG,CAAI,CAAA,CAAE,CAAA,CAAUG,CAAAA,CAAAA,CACpE,KAAA,CAAO,IAAeA,CAAAA,CACtB,MAAA,CAAQ,IAAeA,CAAAA,CACvB,KAAA,CAAO,IAAM,GAAA,CACb,IAAA,CAAAH,CAAAA,CACA,UAAA,CAAY,KAAA,CACZ,MAAA,CAAQ,CAAA,CACR,KAAA,CAAO,OACP,UAAA,CAAY,EAAA,CACZ,OAAA,CAAS,CAAE,QAAA,CAAU,GAAA,CAAK,MAAA,CAAQ,CAAC,EAAE,CAAE,CACzC,CAAA,CACA,OAAOG,CACT,CACA,OAAOC,CAAAA,CAAI,CAAE,IAAA,CAAAJ,CAAAA,CAAM,GAAGF,CAAAA,CAAeG,CAAK,CAAE,CAAC,CAAA,CAAE,KAAA,EACjD","file":"chunk-UNA5CAPX.js","sourcesContent":["export { renderMascot, renderBrandedMascot } from './mascot.js'\nexport { brand, brandDim, brandLine, success, error, warn, info, muted, copied, BRAND_MARKER, SUCCESS_MARK, ERROR_MARK, WARN_MARK, INFO_MARK, PROGRESS_MARK } from './brand.js'\nexport { setJsonMode, isJsonMode, log, logSuccess, logError, logWarn, logInfo, logBrand, logRaw, logJSON, logErrorJSON, writeAudit } from './logger.js'\nexport { createSpinner } from './spinner.js'\nexport { createTable, renderTable, renderCompactTable } from './table.js'\n\nexport function isCI(): boolean {\n return !!(\n process.env.CI ||\n process.env.GITHUB_ACTIONS ||\n process.env.GITLAB_CI ||\n process.env.CIRCLECI\n )\n}\n","import ora, { Ora } from 'ora'\nimport chalk from 'chalk'\nimport { isCI, isJsonMode } from './index.js'\n\nconst SPINNER_FRAMES: Record<string, ora.Options> = {\n dots: { spinner: 'dots' },\n moon: { spinner: 'moon' },\n arc: { spinner: 'arc' },\n bounce: { spinner: 'bounce' },\n shark: { spinner: { interval: 120, frames: ['▸ ', '▸▸ ', '▸▸▸ ', '▸▸▸▸', ' ▸▸▸▸', ' ▸▸▸', ' ▸▸', ' ▸'] } },\n}\n\nexport function createSpinner(text: string, style: keyof typeof SPINNER_FRAMES = 'shark'): Ora {\n if (isCI() || isJsonMode()) {\n const silent: Ora = {\n ...ora({ text, spinner: 'dots' }),\n start: () => { if (!isCI()) console.log(text); return silent },\n stop: () => { if (!isCI()) console.log(); return silent },\n succeed: () => { if (!isCI()) console.log(`${chalk.green('✓')} ${text}`); return silent },\n fail: () => { if (!isCI()) console.log(`${chalk.red('✗')} ${text}`); return silent },\n warn: () => { if (!isCI()) console.log(`${chalk.hex('#FF9800')('⚠')} ${text}`); return silent },\n info: () => { if (!isCI()) console.log(`${chalk.hex('#4FC3F7')('ℹ')} ${text}`); return silent },\n stopAndPersist: () => { if (!isCI()) console.log(`${text}`); return silent },\n clear: () => { return silent },\n render: () => { return silent },\n frame: () => ' ',\n text,\n isSpinning: false,\n indent: 0,\n color: 'cyan',\n prefixText: '',\n spinner: { interval: 100, frames: [''] },\n } as unknown as Ora\n return silent\n }\n return ora({ text, ...SPINNER_FRAMES[style] }).start()\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export{b as ApiError,f as apiDelete,c as apiGet,d as apiPost,e as apiPut,a as apiRequest,g as apiUpload}from'./chunk-CHBVIZF5.js';import'./chunk-NDB6KXYI.js';import'./chunk-ULVQ53OO.js';import'./chunk-Q3A4IBGC.js';//# sourceMappingURL=client-IR7OHGEQ.js.map
2
+ //# sourceMappingURL=client-IR7OHGEQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"client-MCQSJIGH.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"client-IR7OHGEQ.js"}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-NDB6KXYI.js';import {b}from'./chunk-2RMLR54M.js';import {WebSocket}from'ws';import e from'chalk';async function f(r){let i=await b();i||(console.error("Not authenticated"),process.exit(1));let a$1=a().replace(/^http/,"ws"),s=new WebSocket(`${a$1}/api/v1/collab/${encodeURIComponent(r)}/activity`,{headers:{Authorization:`Bearer ${i.access_token}`}});console.log(e.dim(`Streaming activity for "${r}"... (Ctrl+C to stop)`)),s.on("message",t=>{try{let o=JSON.parse(t.toString()),l=e.dim(new Date(o.timestamp).toLocaleTimeString()),p=e.hex("#4FC3F7")(o.user||"unknown"),m=o.action==="upload"?e.green("uploaded"):o.action==="delete"?e.red("deleted"):o.action==="edit"?e.yellow("edited"):o.action,d=o.file||o.path||"";console.log(`${l} ${p} ${m} ${d}`);}catch{console.log(t.toString());}}),s.on("error",t=>{console.error(e.red(`Error: ${t.message}`)),process.exit(1);}),process.on("SIGINT",()=>{s.close(),process.exit(0);});}export{f as default};//# sourceMappingURL=collab-activity-ESSL2DUE.js.map
2
- //# sourceMappingURL=collab-activity-ESSL2DUE.js.map
1
+ import {a}from'./chunk-NDB6KXYI.js';import {b}from'./chunk-Q3A4IBGC.js';import {WebSocket}from'ws';import e from'chalk';async function f(r){let i=await b();i||(console.error("Not authenticated"),process.exit(1));let a$1=a().replace(/^http/,"ws"),s=new WebSocket(`${a$1}/api/v1/collab/${encodeURIComponent(r)}/activity`,{headers:{Authorization:`Bearer ${i.access_token}`}});console.log(e.dim(`Streaming activity for "${r}"... (Ctrl+C to stop)`)),s.on("message",t=>{try{let o=JSON.parse(t.toString()),l=e.dim(new Date(o.timestamp).toLocaleTimeString()),p=e.hex("#4FC3F7")(o.user||"unknown"),m=o.action==="upload"?e.green("uploaded"):o.action==="delete"?e.red("deleted"):o.action==="edit"?e.yellow("edited"):o.action,d=o.file||o.path||"";console.log(`${l} ${p} ${m} ${d}`);}catch{console.log(t.toString());}}),s.on("error",t=>{console.error(e.red(`Error: ${t.message}`)),process.exit(1);}),process.on("SIGINT",()=>{s.close(),process.exit(0);});}export{f as default};//# sourceMappingURL=collab-activity-YOEJEJTQ.js.map
2
+ //# sourceMappingURL=collab-activity-YOEJEJTQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-activity.ts"],"names":["collabActivity","folder","session","loadSession","apiBase","getApiBase","ws","WebSocket","chalk","data","e","ts","user","action","file","err"],"mappings":"wHAKA,eAAOA,CAAAA,CAAsCC,CAAAA,CAA+B,CAC1E,IAAMC,CAAAA,CAAU,MAAMC,CAAAA,EAAY,CAC7BD,IAAW,OAAA,CAAQ,KAAA,CAAM,mBAAmB,CAAA,CAAG,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA,CAElE,IAAME,GAAAA,CAAUC,CAAAA,GAAa,OAAA,CAAQ,OAAA,CAAS,IAAI,CAAA,CAC5CC,CAAAA,CAAK,IAAIC,SAAAA,CAAU,CAAA,EAAGH,GAAO,CAAA,eAAA,EAAkB,kBAAA,CAAmBH,CAAM,CAAC,CAAA,SAAA,CAAA,CAAa,CAC1F,OAAA,CAAS,CAAE,aAAA,CAAe,CAAA,OAAA,EAAUC,EAAQ,YAAY,CAAA,CAAG,CAC7D,CAAC,CAAA,CAED,QAAQ,GAAA,CAAIM,CAAAA,CAAM,IAAI,CAAA,wBAAA,EAA2BP,CAAM,uBAAuB,CAAC,CAAA,CAC/EK,EAAG,EAAA,CAAG,SAAA,CAAYG,GAAiB,CACjC,GAAI,CACF,IAAMC,CAAAA,CAAI,KAAK,KAAA,CAAMD,CAAAA,CAAK,UAAU,CAAA,CAC9BE,EAAKH,CAAAA,CAAM,GAAA,CAAI,IAAI,IAAA,CAAKE,CAAAA,CAAE,SAAS,CAAA,CAAE,kBAAA,EAAoB,CAAA,CACzDE,CAAAA,CAAOJ,EAAM,GAAA,CAAI,SAAS,CAAA,CAAEE,CAAAA,CAAE,MAAQ,SAAS,CAAA,CAC/CG,EAASH,CAAAA,CAAE,MAAA,GAAW,SAAWF,CAAAA,CAAM,KAAA,CAAM,UAAU,CAAA,CAC3DE,CAAAA,CAAE,SAAW,QAAA,CAAWF,CAAAA,CAAM,IAAI,SAAS,CAAA,CAC3CE,EAAE,MAAA,GAAW,MAAA,CAASF,EAAM,MAAA,CAAO,QAAQ,EAAIE,CAAAA,CAAE,MAAA,CAC7CI,EAAOJ,CAAAA,CAAE,IAAA,EAAQA,EAAE,IAAA,EAAQ,EAAA,CACjC,QAAQ,GAAA,CAAI,CAAA,EAAGC,CAAE,CAAA,CAAA,EAAIC,CAAI,IAAIC,CAAM,CAAA,CAAA,EAAIC,CAAI,CAAA,CAAE,EAC/C,CAAA,KAAQ,CACN,QAAQ,GAAA,CAAIL,CAAAA,CAAK,UAAU,EAC7B,CACF,CAAC,CAAA,CACDH,EAAG,EAAA,CAAG,OAAA,CAAUS,GAAQ,CAAE,OAAA,CAAQ,MAAMP,CAAAA,CAAM,GAAA,CAAI,UAAUO,CAAAA,CAAI,OAAO,EAAE,CAAC,CAAA,CAAG,QAAQ,IAAA,CAAK,CAAC,EAAE,CAAC,CAAA,CAC9F,QAAQ,EAAA,CAAG,QAAA,CAAU,IAAM,CAAET,CAAAA,CAAG,OAAM,CAAG,OAAA,CAAQ,KAAK,CAAC,EAAE,CAAC,EAC5D","file":"collab-activity-ESSL2DUE.js","sourcesContent":["import { WebSocket } from 'ws'\nimport chalk from 'chalk'\nimport { loadSession } from '../../lib/auth/session.js'\nimport { getApiBase } from '../../lib/api/cert-pin.js'\n\nexport default async function collabActivity(folder: string): Promise<void> {\n const session = await loadSession()\n if (!session) { console.error('Not authenticated'); process.exit(1) }\n\n const apiBase = getApiBase().replace(/^http/, 'ws')\n const ws = new WebSocket(`${apiBase}/api/v1/collab/${encodeURIComponent(folder)}/activity`, {\n headers: { Authorization: `Bearer ${session.access_token}` },\n })\n\n console.log(chalk.dim(`Streaming activity for \"${folder}\"... (Ctrl+C to stop)`))\n ws.on('message', (data: Buffer) => {\n try {\n const e = JSON.parse(data.toString())\n const ts = chalk.dim(new Date(e.timestamp).toLocaleTimeString())\n const user = chalk.hex('#4FC3F7')(e.user || 'unknown')\n const action = e.action === 'upload' ? chalk.green('uploaded') :\n e.action === 'delete' ? chalk.red('deleted') :\n e.action === 'edit' ? chalk.yellow('edited') : e.action\n const file = e.file || e.path || ''\n console.log(`${ts} ${user} ${action} ${file}`)\n } catch {\n console.log(data.toString())\n }\n })\n ws.on('error', (err) => { console.error(chalk.red(`Error: ${err.message}`)); process.exit(1) })\n process.on('SIGINT', () => { ws.close(); process.exit(0) })\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-activity.ts"],"names":["collabActivity","folder","session","loadSession","apiBase","getApiBase","ws","WebSocket","chalk","data","e","ts","user","action","file","err"],"mappings":"wHAKA,eAAOA,CAAAA,CAAsCC,CAAAA,CAA+B,CAC1E,IAAMC,CAAAA,CAAU,MAAMC,CAAAA,EAAY,CAC7BD,IAAW,OAAA,CAAQ,KAAA,CAAM,mBAAmB,CAAA,CAAG,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA,CAElE,IAAME,GAAAA,CAAUC,CAAAA,GAAa,OAAA,CAAQ,OAAA,CAAS,IAAI,CAAA,CAC5CC,CAAAA,CAAK,IAAIC,SAAAA,CAAU,CAAA,EAAGH,GAAO,CAAA,eAAA,EAAkB,kBAAA,CAAmBH,CAAM,CAAC,CAAA,SAAA,CAAA,CAAa,CAC1F,OAAA,CAAS,CAAE,aAAA,CAAe,CAAA,OAAA,EAAUC,EAAQ,YAAY,CAAA,CAAG,CAC7D,CAAC,CAAA,CAED,QAAQ,GAAA,CAAIM,CAAAA,CAAM,IAAI,CAAA,wBAAA,EAA2BP,CAAM,uBAAuB,CAAC,CAAA,CAC/EK,EAAG,EAAA,CAAG,SAAA,CAAYG,GAAiB,CACjC,GAAI,CACF,IAAMC,CAAAA,CAAI,KAAK,KAAA,CAAMD,CAAAA,CAAK,UAAU,CAAA,CAC9BE,EAAKH,CAAAA,CAAM,GAAA,CAAI,IAAI,IAAA,CAAKE,CAAAA,CAAE,SAAS,CAAA,CAAE,kBAAA,EAAoB,CAAA,CACzDE,CAAAA,CAAOJ,EAAM,GAAA,CAAI,SAAS,CAAA,CAAEE,CAAAA,CAAE,MAAQ,SAAS,CAAA,CAC/CG,EAASH,CAAAA,CAAE,MAAA,GAAW,SAAWF,CAAAA,CAAM,KAAA,CAAM,UAAU,CAAA,CAC3DE,CAAAA,CAAE,SAAW,QAAA,CAAWF,CAAAA,CAAM,IAAI,SAAS,CAAA,CAC3CE,EAAE,MAAA,GAAW,MAAA,CAASF,EAAM,MAAA,CAAO,QAAQ,EAAIE,CAAAA,CAAE,MAAA,CAC7CI,EAAOJ,CAAAA,CAAE,IAAA,EAAQA,EAAE,IAAA,EAAQ,EAAA,CACjC,QAAQ,GAAA,CAAI,CAAA,EAAGC,CAAE,CAAA,CAAA,EAAIC,CAAI,IAAIC,CAAM,CAAA,CAAA,EAAIC,CAAI,CAAA,CAAE,EAC/C,CAAA,KAAQ,CACN,QAAQ,GAAA,CAAIL,CAAAA,CAAK,UAAU,EAC7B,CACF,CAAC,CAAA,CACDH,EAAG,EAAA,CAAG,OAAA,CAAUS,GAAQ,CAAE,OAAA,CAAQ,MAAMP,CAAAA,CAAM,GAAA,CAAI,UAAUO,CAAAA,CAAI,OAAO,EAAE,CAAC,CAAA,CAAG,QAAQ,IAAA,CAAK,CAAC,EAAE,CAAC,CAAA,CAC9F,QAAQ,EAAA,CAAG,QAAA,CAAU,IAAM,CAAET,CAAAA,CAAG,OAAM,CAAG,OAAA,CAAQ,KAAK,CAAC,EAAE,CAAC,EAC5D","file":"collab-activity-YOEJEJTQ.js","sourcesContent":["import { WebSocket } from 'ws'\nimport chalk from 'chalk'\nimport { loadSession } from '../../lib/auth/session.js'\nimport { getApiBase } from '../../lib/api/cert-pin.js'\n\nexport default async function collabActivity(folder: string): Promise<void> {\n const session = await loadSession()\n if (!session) { console.error('Not authenticated'); process.exit(1) }\n\n const apiBase = getApiBase().replace(/^http/, 'ws')\n const ws = new WebSocket(`${apiBase}/api/v1/collab/${encodeURIComponent(folder)}/activity`, {\n headers: { Authorization: `Bearer ${session.access_token}` },\n })\n\n console.log(chalk.dim(`Streaming activity for \"${folder}\"... (Ctrl+C to stop)`))\n ws.on('message', (data: Buffer) => {\n try {\n const e = JSON.parse(data.toString())\n const ts = chalk.dim(new Date(e.timestamp).toLocaleTimeString())\n const user = chalk.hex('#4FC3F7')(e.user || 'unknown')\n const action = e.action === 'upload' ? chalk.green('uploaded') :\n e.action === 'delete' ? chalk.red('deleted') :\n e.action === 'edit' ? chalk.yellow('edited') : e.action\n const file = e.file || e.path || ''\n console.log(`${ts} ${user} ${action} ${file}`)\n } catch {\n console.log(data.toString())\n }\n })\n ws.on('error', (err) => { console.error(chalk.red(`Error: ${err.message}`)); process.exit(1) })\n process.on('SIGINT', () => { ws.close(); process.exit(0) })\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-UNA5CAPX.js';import {d}from'./chunk-CHBVIZF5.js';import'./chunk-NDB6KXYI.js';import'./chunk-ULVQ53OO.js';import'./chunk-FNCZD2QB.js';import {h}from'./chunk-EMRHLWPD.js';import'./chunk-Q3A4IBGC.js';async function m(i,e){let t=a(`Inviting ${e.email} to "${i}" as ${e.role}...`);t.start(),await d("/api/v1/collab/invite",{folder:i,email:e.email,role:e.role},{authenticated:true}),t.succeed(),h(`Invited ${e.email} to "${i}" as ${e.role}`);}export{m as default};//# sourceMappingURL=collab-invite-VDDBCLSH.js.map
2
+ //# sourceMappingURL=collab-invite-VDDBCLSH.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-invite.ts"],"names":["collabInvite","folder","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"4NAIA,eAAOA,CAAAA,CAAoCC,EAAgBC,CAAAA,CAAyD,CAClH,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,SAAA,EAAYF,CAAAA,CAAQ,KAAK,CAAA,KAAA,EAAQD,CAAM,CAAA,KAAA,EAAQC,CAAAA,CAAQ,IAAI,CAAA,GAAA,CAAK,CAAA,CAC9FC,CAAAA,CAAQ,OAAM,CACd,MAAME,CAAAA,CAAQ,uBAAA,CAAyB,CACrC,MAAA,CAAAJ,EACA,KAAA,CAAOC,CAAAA,CAAQ,KAAA,CACf,IAAA,CAAMA,CAAAA,CAAQ,IAChB,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC1BC,CAAAA,CAAQ,SAAQ,CAChBG,CAAAA,CAAW,CAAA,QAAA,EAAWJ,CAAAA,CAAQ,KAAK,CAAA,KAAA,EAAQD,CAAM,CAAA,KAAA,EAAQC,CAAAA,CAAQ,IAAI,CAAA,CAAE,EACzE","file":"collab-invite-H6KXMBJ5.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabInvite(folder: string, options: { email: string; role: string }): Promise<void> {\n const spinner = createSpinner(`Inviting ${options.email} to \"${folder}\" as ${options.role}...`)\n spinner.start()\n await apiPost('/api/v1/collab/invite', {\n folder,\n email: options.email,\n role: options.role,\n }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Invited ${options.email} to \"${folder}\" as ${options.role}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-invite.ts"],"names":["collabInvite","folder","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"4NAIA,eAAOA,CAAAA,CAAoCC,EAAgBC,CAAAA,CAAyD,CAClH,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,SAAA,EAAYF,CAAAA,CAAQ,KAAK,CAAA,KAAA,EAAQD,CAAM,CAAA,KAAA,EAAQC,CAAAA,CAAQ,IAAI,CAAA,GAAA,CAAK,CAAA,CAC9FC,CAAAA,CAAQ,OAAM,CACd,MAAME,CAAAA,CAAQ,uBAAA,CAAyB,CACrC,MAAA,CAAAJ,EACA,KAAA,CAAOC,CAAAA,CAAQ,KAAA,CACf,IAAA,CAAMA,CAAAA,CAAQ,IAChB,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC1BC,CAAAA,CAAQ,SAAQ,CAChBG,CAAAA,CAAW,CAAA,QAAA,EAAWJ,CAAAA,CAAQ,KAAK,CAAA,KAAA,EAAQD,CAAM,CAAA,KAAA,EAAQC,CAAAA,CAAQ,IAAI,CAAA,CAAE,EACzE","file":"collab-invite-VDDBCLSH.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabInvite(folder: string, options: { email: string; role: string }): Promise<void> {\n const spinner = createSpinner(`Inviting ${options.email} to \"${folder}\" as ${options.role}...`)\n spinner.start()\n await apiPost('/api/v1/collab/invite', {\n folder,\n email: options.email,\n role: options.role,\n }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Invited ${options.email} to \"${folder}\" as ${options.role}`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-UNA5CAPX.js';import {d}from'./chunk-CHBVIZF5.js';import'./chunk-NDB6KXYI.js';import'./chunk-ULVQ53OO.js';import'./chunk-FNCZD2QB.js';import {h}from'./chunk-EMRHLWPD.js';import'./chunk-Q3A4IBGC.js';import n from'inquirer';async function m(e){let{confirm:a$1}=await n.prompt([{type:"confirm",name:"confirm",message:`Remove yourself from "${e}"?`,default:false}]);if(!a$1)return;let t=a(`Leaving "${e}"...`);t.start(),await d("/api/v1/collab/leave",{folder:e},{authenticated:true}),t.succeed(),h(`You left "${e}"`);}export{m as default};//# sourceMappingURL=collab-leave-2AEIFR47.js.map
2
+ //# sourceMappingURL=collab-leave-2AEIFR47.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-leave.ts"],"names":["collabLeave","folder","confirm","inquirer","spinner","createSpinner","apiPost","logSuccess"],"mappings":"oPAKA,eAAOA,CAAAA,CAAmCC,CAAAA,CAA+B,CACvE,GAAM,CAAE,OAAA,CAAAC,GAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,CAAA,sBAAA,EAAyBF,CAAM,CAAA,EAAA,CAAA,CACxC,OAAA,CAAS,KACX,CAAC,CAAC,EACF,GAAI,CAACC,GAAAA,CAAS,OACd,IAAME,CAAAA,CAAUC,CAAAA,CAAc,CAAA,SAAA,EAAYJ,CAAM,CAAA,IAAA,CAAM,CAAA,CACtDG,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,MAAA,CAAAL,CAAO,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACzEG,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,UAAA,EAAaN,CAAM,GAAG,EACnC","file":"collab-leave-23J42V4P.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabLeave(folder: string): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: `Remove yourself from \"${folder}\"?`,\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner(`Leaving \"${folder}\"...`)\n spinner.start()\n await apiPost('/api/v1/collab/leave', { folder }, { authenticated: true })\n spinner.succeed()\n logSuccess(`You left \"${folder}\"`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-leave.ts"],"names":["collabLeave","folder","confirm","inquirer","spinner","createSpinner","apiPost","logSuccess"],"mappings":"oPAKA,eAAOA,CAAAA,CAAmCC,CAAAA,CAA+B,CACvE,GAAM,CAAE,OAAA,CAAAC,GAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,CAAA,sBAAA,EAAyBF,CAAM,CAAA,EAAA,CAAA,CACxC,OAAA,CAAS,KACX,CAAC,CAAC,EACF,GAAI,CAACC,GAAAA,CAAS,OACd,IAAME,CAAAA,CAAUC,CAAAA,CAAc,CAAA,SAAA,EAAYJ,CAAM,CAAA,IAAA,CAAM,CAAA,CACtDG,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,MAAA,CAAAL,CAAO,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACzEG,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,UAAA,EAAaN,CAAM,GAAG,EACnC","file":"collab-leave-2AEIFR47.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabLeave(folder: string): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: `Remove yourself from \"${folder}\"?`,\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner(`Leaving \"${folder}\"...`)\n spinner.start()\n await apiPost('/api/v1/collab/leave', { folder }, { authenticated: true })\n spinner.succeed()\n logSuccess(`You left \"${folder}\"`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {d}from'./chunk-N3AD2QRA.js';import {c}from'./chunk-CHBVIZF5.js';import'./chunk-NDB6KXYI.js';import'./chunk-ULVQ53OO.js';import {a}from'./chunk-FNCZD2QB.js';import'./chunk-EMRHLWPD.js';import'./chunk-Q3A4IBGC.js';import t from'chalk';async function n(r){let i=((await c(`/api/v1/collab/list?folder=${encodeURIComponent(r)}`,{authenticated:true})).collaborators||[]).map(e=>({email:e.email,user:e.username,role:t.hex("#7C4DFF")(e.role),joined:d(e.joined_at),active:e.last_active?d(e.last_active):t.dim("never")}));console.log(a(i,[{key:"email",label:"Email"},{key:"user",label:"User"},{key:"role",label:"Role"},{key:"joined",label:"Joined"},{key:"active",label:"Last Active"}]));}export{n as default};//# sourceMappingURL=collab-list-MTJYXE53.js.map
2
+ //# sourceMappingURL=collab-list-MTJYXE53.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-list.ts"],"names":["collabList","folder","rows","apiGet","c","chalk","formatRelative","renderTable"],"mappings":"wPAaA,eAAOA,CAAAA,CAAkCC,EAA+B,CAEtE,IAAMC,IADO,MAAMC,CAAAA,CAA0C,8BAA8B,kBAAA,CAAmBF,CAAM,CAAC,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,GAC7H,aAAA,EAAiB,IAAI,GAAA,CAAIG,CAAAA,GAAM,CAChD,KAAA,CAAOA,CAAAA,CAAE,MACT,IAAA,CAAMA,CAAAA,CAAE,SACR,IAAA,CAAMC,CAAAA,CAAM,IAAI,SAAS,CAAA,CAAED,EAAE,IAAI,CAAA,CACjC,OAAQE,GAAAA,CAAeF,CAAAA,CAAE,SAAS,CAAA,CAClC,MAAA,CAAQA,CAAAA,CAAE,YAAcE,GAAAA,CAAeF,CAAAA,CAAE,WAAW,CAAA,CAAIC,CAAAA,CAAM,IAAI,OAAO,CAC3E,EAAE,CAAA,CACF,OAAA,CAAQ,IAAIE,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,QAAS,KAAA,CAAO,OAAQ,CAAA,CAC/B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,QAAS,CAAA,CACjC,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,aAAc,CACxC,CAAC,CAAC,EACJ","file":"collab-list-6VNDTN7W.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 Collaborator {\n email: string\n username: string\n role: string\n joined_at: string\n last_active: string | null\n}\n\nexport default async function collabList(folder: string): Promise<void> {\n const data = await apiGet<{ collaborators: Collaborator[] }>(`/api/v1/collab/list?folder=${encodeURIComponent(folder)}`, { authenticated: true })\n const rows = (data.collaborators || []).map(c => ({\n email: c.email,\n user: c.username,\n role: chalk.hex('#7C4DFF')(c.role),\n joined: formatRelative(c.joined_at),\n active: c.last_active ? formatRelative(c.last_active) : chalk.dim('never'),\n }))\n console.log(renderTable(rows, [\n { key: 'email', label: 'Email' },\n { key: 'user', label: 'User' },\n { key: 'role', label: 'Role' },\n { key: 'joined', label: 'Joined' },\n { key: 'active', label: 'Last Active' },\n ]))\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-list.ts"],"names":["collabList","folder","rows","apiGet","c","chalk","formatRelative","renderTable"],"mappings":"iPAaA,eAAOA,CAAAA,CAAkCC,EAA+B,CAEtE,IAAMC,IADO,MAAMC,CAAAA,CAA0C,8BAA8B,kBAAA,CAAmBF,CAAM,CAAC,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,GAC7H,aAAA,EAAiB,IAAI,GAAA,CAAIG,CAAAA,GAAM,CAChD,KAAA,CAAOA,CAAAA,CAAE,MACT,IAAA,CAAMA,CAAAA,CAAE,SACR,IAAA,CAAMC,CAAAA,CAAM,IAAI,SAAS,CAAA,CAAED,EAAE,IAAI,CAAA,CACjC,OAAQE,CAAAA,CAAeF,CAAAA,CAAE,SAAS,CAAA,CAClC,MAAA,CAAQA,CAAAA,CAAE,YAAcE,CAAAA,CAAeF,CAAAA,CAAE,WAAW,CAAA,CAAIC,CAAAA,CAAM,IAAI,OAAO,CAC3E,EAAE,CAAA,CACF,OAAA,CAAQ,IAAIE,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,QAAS,KAAA,CAAO,OAAQ,CAAA,CAC/B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,QAAS,CAAA,CACjC,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,aAAc,CACxC,CAAC,CAAC,EACJ","file":"collab-list-MTJYXE53.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 Collaborator {\n email: string\n username: string\n role: string\n joined_at: string\n last_active: string | null\n}\n\nexport default async function collabList(folder: string): Promise<void> {\n const data = await apiGet<{ collaborators: Collaborator[] }>(`/api/v1/collab/list?folder=${encodeURIComponent(folder)}`, { authenticated: true })\n const rows = (data.collaborators || []).map(c => ({\n email: c.email,\n user: c.username,\n role: chalk.hex('#7C4DFF')(c.role),\n joined: formatRelative(c.joined_at),\n active: c.last_active ? formatRelative(c.last_active) : chalk.dim('never'),\n }))\n console.log(renderTable(rows, [\n { key: 'email', label: 'Email' },\n { key: 'user', label: 'User' },\n { key: 'role', label: 'Role' },\n { key: 'joined', label: 'Joined' },\n { key: 'active', label: 'Last Active' },\n ]))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-UNA5CAPX.js';import {d}from'./chunk-CHBVIZF5.js';import'./chunk-NDB6KXYI.js';import'./chunk-ULVQ53OO.js';import'./chunk-FNCZD2QB.js';import {h}from'./chunk-EMRHLWPD.js';import'./chunk-Q3A4IBGC.js';async function o(e,i){let m=a(`Removing ${i.email} from "${e}"...`);m.start(),await d("/api/v1/collab/remove",{folder:e,email:i.email},{authenticated:true}),m.succeed(),h(`Removed ${i.email} from "${e}"`);}export{o as default};//# sourceMappingURL=collab-remove-I3FKGFOF.js.map
2
+ //# sourceMappingURL=collab-remove-I3FKGFOF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-remove.ts"],"names":["collabRemove","folder","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"4NAIA,eAAOA,EAAoCC,CAAAA,CAAgBC,CAAAA,CAA2C,CACpG,IAAMC,CAAAA,CAAUC,EAAc,CAAA,SAAA,EAAYF,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,CAAM,MAAM,CAAA,CAC7EE,CAAAA,CAAQ,OAAM,CACd,MAAME,EAAQ,uBAAA,CAAyB,CAAE,MAAA,CAAAJ,CAAAA,CAAQ,MAAOC,CAAAA,CAAQ,KAAM,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAChGC,EAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,QAAA,EAAWJ,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,CAAM,GAAG,EACxD","file":"collab-remove-A76ARTWG.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabRemove(folder: string, options: { email: string }): Promise<void> {\n const spinner = createSpinner(`Removing ${options.email} from \"${folder}\"...`)\n spinner.start()\n await apiPost('/api/v1/collab/remove', { folder, email: options.email }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Removed ${options.email} from \"${folder}\"`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-remove.ts"],"names":["collabRemove","folder","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"4NAIA,eAAOA,EAAoCC,CAAAA,CAAgBC,CAAAA,CAA2C,CACpG,IAAMC,CAAAA,CAAUC,EAAc,CAAA,SAAA,EAAYF,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,CAAM,MAAM,CAAA,CAC7EE,CAAAA,CAAQ,OAAM,CACd,MAAME,EAAQ,uBAAA,CAAyB,CAAE,MAAA,CAAAJ,CAAAA,CAAQ,MAAOC,CAAAA,CAAQ,KAAM,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAChGC,EAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,QAAA,EAAWJ,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,CAAM,GAAG,EACxD","file":"collab-remove-I3FKGFOF.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabRemove(folder: string, options: { email: string }): Promise<void> {\n const spinner = createSpinner(`Removing ${options.email} from \"${folder}\"...`)\n spinner.start()\n await apiPost('/api/v1/collab/remove', { folder, email: options.email }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Removed ${options.email} from \"${folder}\"`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-UNA5CAPX.js';import {d}from'./chunk-CHBVIZF5.js';import'./chunk-NDB6KXYI.js';import'./chunk-ULVQ53OO.js';import'./chunk-FNCZD2QB.js';import {h}from'./chunk-EMRHLWPD.js';import'./chunk-Q3A4IBGC.js';import c from'inquirer';async function m(r,t){let{confirm:a$1}=await c.prompt([{type:"input",name:"confirm",message:`Type "${r}" to confirm ownership transfer to ${t.to}:`,validate:s=>s===r?true:"Type the exact folder name to confirm"}]);if(a$1!==r)return;let e=a(`Transferring ownership of "${r}" to ${t.to}...`);e.start(),await d("/api/v1/collab/transfer",{folder:r,new_owner:t.to},{authenticated:true}),e.succeed(),h(`Ownership of "${r}" transferred to ${t.to}`);}export{m as default};//# sourceMappingURL=collab-transfer-VVHH6B2J.js.map
2
+ //# sourceMappingURL=collab-transfer-VVHH6B2J.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-transfer.ts"],"names":["collabTransfer","folder","options","confirm","inquirer","v","spinner","createSpinner","apiPost","logSuccess"],"mappings":"oPAKA,eAAOA,CAAAA,CAAsCC,CAAAA,CAAgBC,EAAwC,CACnG,GAAM,CAAE,OAAA,CAAAC,GAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,OAAA,CACN,IAAA,CAAM,UACN,OAAA,CAAS,CAAA,MAAA,EAASH,CAAM,CAAA,mCAAA,EAAsCC,EAAQ,EAAE,CAAA,CAAA,CAAA,CACxE,QAAA,CAAWG,CAAAA,EAAcA,IAAMJ,CAAAA,CAAS,IAAA,CAAO,uCACjD,CAAC,CAAC,EACF,GAAIE,GAAAA,GAAYF,CAAAA,CAAQ,OAExB,IAAMK,CAAAA,CAAUC,CAAAA,CAAc,CAAA,2BAAA,EAA8BN,CAAM,QAAQC,CAAAA,CAAQ,EAAE,CAAA,GAAA,CAAK,CAAA,CACzFI,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,yBAAA,CAA2B,CAAE,MAAA,CAAAP,CAAAA,CAAQ,SAAA,CAAWC,CAAAA,CAAQ,EAAG,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACnGI,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,cAAA,EAAiBR,CAAM,oBAAoBC,CAAAA,CAAQ,EAAE,EAAE,EACpE","file":"collab-transfer-S5MECG6Y.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabTransfer(folder: string, options: { to: string }): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'input',\n name: 'confirm',\n message: `Type \"${folder}\" to confirm ownership transfer to ${options.to}:`,\n validate: (v: string) => v === folder ? true : 'Type the exact folder name to confirm',\n }])\n if (confirm !== folder) return\n\n const spinner = createSpinner(`Transferring ownership of \"${folder}\" to ${options.to}...`)\n spinner.start()\n await apiPost('/api/v1/collab/transfer', { folder, new_owner: options.to }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Ownership of \"${folder}\" transferred to ${options.to}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-transfer.ts"],"names":["collabTransfer","folder","options","confirm","inquirer","v","spinner","createSpinner","apiPost","logSuccess"],"mappings":"oPAKA,eAAOA,CAAAA,CAAsCC,CAAAA,CAAgBC,EAAwC,CACnG,GAAM,CAAE,OAAA,CAAAC,GAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,OAAA,CACN,IAAA,CAAM,UACN,OAAA,CAAS,CAAA,MAAA,EAASH,CAAM,CAAA,mCAAA,EAAsCC,EAAQ,EAAE,CAAA,CAAA,CAAA,CACxE,QAAA,CAAWG,CAAAA,EAAcA,IAAMJ,CAAAA,CAAS,IAAA,CAAO,uCACjD,CAAC,CAAC,EACF,GAAIE,GAAAA,GAAYF,CAAAA,CAAQ,OAExB,IAAMK,CAAAA,CAAUC,CAAAA,CAAc,CAAA,2BAAA,EAA8BN,CAAM,QAAQC,CAAAA,CAAQ,EAAE,CAAA,GAAA,CAAK,CAAA,CACzFI,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,yBAAA,CAA2B,CAAE,MAAA,CAAAP,CAAAA,CAAQ,SAAA,CAAWC,CAAAA,CAAQ,EAAG,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACnGI,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,cAAA,EAAiBR,CAAM,oBAAoBC,CAAAA,CAAQ,EAAE,EAAE,EACpE","file":"collab-transfer-VVHH6B2J.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabTransfer(folder: string, options: { to: string }): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'input',\n name: 'confirm',\n message: `Type \"${folder}\" to confirm ownership transfer to ${options.to}:`,\n validate: (v: string) => v === folder ? true : 'Type the exact folder name to confirm',\n }])\n if (confirm !== folder) return\n\n const spinner = createSpinner(`Transferring ownership of \"${folder}\" to ${options.to}...`)\n spinner.start()\n await apiPost('/api/v1/collab/transfer', { folder, new_owner: options.to }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Ownership of \"${folder}\" transferred to ${options.to}`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export{a as config,c as default,b as getConfig}from'./chunk-SCKQAF44.js';import'./chunk-FNCZD2QB.js';import'./chunk-EMRHLWPD.js';//# sourceMappingURL=config-PL34OPDL.js.map
2
+ //# sourceMappingURL=config-PL34OPDL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"config-7G24FXQJ.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"config-PL34OPDL.js"}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-SCKQAF44.js';import'./chunk-FNCZD2QB.js';import {h}from'./chunk-EMRHLWPD.js';async function t(o){b().delete(o),h(`Config ${o} deleted`);}export{t as default};//# sourceMappingURL=config-delete-4UN7BFBI.js.map
2
+ //# sourceMappingURL=config-delete-4UN7BFBI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/util/config-delete.ts"],"names":["configDelete","key","getConfig","logSuccess"],"mappings":"oGAGA,eAAOA,CAAAA,CAAoCC,CAAAA,CAA4B,CACtDC,CAAAA,EAAU,CAClB,MAAA,CAAOD,CAAG,CAAA,CACjBE,CAAAA,CAAW,CAAA,OAAA,EAAUF,CAAG,CAAA,QAAA,CAAU,EACpC","file":"config-delete-VSIFFODZ.js","sourcesContent":["import { getConfig } from './config.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function configDelete(key: string): Promise<void> {\n const config = getConfig()\n config.delete(key)\n logSuccess(`Config ${key} deleted`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/util/config-delete.ts"],"names":["configDelete","key","getConfig","logSuccess"],"mappings":"oGAGA,eAAOA,CAAAA,CAAoCC,CAAAA,CAA4B,CACtDC,CAAAA,EAAU,CAClB,MAAA,CAAOD,CAAG,CAAA,CACjBE,CAAAA,CAAW,CAAA,OAAA,EAAUF,CAAG,CAAA,QAAA,CAAU,EACpC","file":"config-delete-4UN7BFBI.js","sourcesContent":["import { getConfig } from './config.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function configDelete(key: string): Promise<void> {\n const config = getConfig()\n config.delete(key)\n logSuccess(`Config ${key} deleted`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-SCKQAF44.js';import'./chunk-FNCZD2QB.js';import {g,n}from'./chunk-EMRHLWPD.js';async function f(o){let i=b().get(o);if(g()){n({[o]:i});return}console.log(String(i??""));}export{f as default};//# sourceMappingURL=config-get-XOS7EWEQ.js.map
2
+ //# sourceMappingURL=config-get-XOS7EWEQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/util/config-get.ts"],"names":["configGet","key","value","getConfig","isJsonMode","logJSON"],"mappings":"6GAIA,eAAOA,CAAAA,CAAiCC,CAAAA,CAA4B,CAElE,IAAMC,CAAAA,CADSC,CAAAA,EAAU,CACJ,GAAA,CAAIF,CAAG,CAAA,CAC5B,GAAIG,GAAAA,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":"config-get-DDNSM5EH.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"]}
1
+ {"version":3,"sources":["../src/commands/util/config-get.ts"],"names":["configGet","key","value","getConfig","isJsonMode","logJSON"],"mappings":"sGAIA,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":"config-get-XOS7EWEQ.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 {b}from'./chunk-SCKQAF44.js';import'./chunk-FNCZD2QB.js';import {h}from'./chunk-EMRHLWPD.js';import r from'inquirer';async function i(){let{confirm:t}=await r.prompt([{type:"confirm",name:"confirm",message:"Reset all configuration to defaults?",default:false}]);t&&(b().clear(),h("Configuration reset to defaults"));}export{i as default};//# sourceMappingURL=config-reset-NIOGYFA5.js.map
2
+ //# sourceMappingURL=config-reset-NIOGYFA5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/util/config-reset.ts"],"names":["configReset","confirm","inquirer","getConfig","logSuccess"],"mappings":"4HAIA,eAAOA,CAAAA,EAAoD,CACzD,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,sCAAA,CACT,OAAA,CAAS,KACX,CAAC,CAAC,CAAA,CACGD,CAAAA,GACLE,GAAU,CAAE,KAAA,EAAM,CAClBC,CAAAA,CAAW,iCAAiC,CAAA,EAC9C","file":"config-reset-ZFMP4J5H.js","sourcesContent":["import inquirer from 'inquirer'\nimport { getConfig } from './config.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function configReset(): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: 'Reset all configuration to defaults?',\n default: false,\n }])\n if (!confirm) return\n getConfig().clear()\n logSuccess('Configuration reset to defaults')\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/util/config-reset.ts"],"names":["configReset","confirm","inquirer","getConfig","logSuccess"],"mappings":"4HAIA,eAAOA,CAAAA,EAAoD,CACzD,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,sCAAA,CACT,OAAA,CAAS,KACX,CAAC,CAAC,CAAA,CACGD,CAAAA,GACLE,GAAU,CAAE,KAAA,EAAM,CAClBC,CAAAA,CAAW,iCAAiC,CAAA,EAC9C","file":"config-reset-NIOGYFA5.js","sourcesContent":["import inquirer from 'inquirer'\nimport { getConfig } from './config.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function configReset(): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: 'Reset all configuration to defaults?',\n default: false,\n }])\n if (!confirm) return\n getConfig().clear()\n logSuccess('Configuration reset to defaults')\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-SCKQAF44.js';import'./chunk-FNCZD2QB.js';import {h}from'./chunk-EMRHLWPD.js';async function f(t,o){let r=b(),i=o==="true"?true:o==="false"?false:isNaN(Number(o))?o:Number(o);r.set(t,i),h(`Config ${t} set to ${o}`);}export{f as default};//# sourceMappingURL=config-set-DRTRWWAA.js.map
2
+ //# sourceMappingURL=config-set-DRTRWWAA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/util/config-set.ts"],"names":["configSet","key","value","config","getConfig","parsed","logSuccess"],"mappings":"oGAGA,eAAOA,CAAAA,CAAiCC,CAAAA,CAAaC,CAAAA,CAA8B,CACjF,IAAMC,CAAAA,CAASC,CAAAA,EAAU,CACnBC,CAAAA,CAAkBH,IAAU,MAAA,CAAS,IAAA,CAAOA,CAAAA,GAAU,OAAA,CAAU,MAAS,KAAA,CAAM,MAAA,CAAOA,CAAK,CAAC,EAAoBA,CAAAA,CAAhB,MAAA,CAAOA,CAAK,CAAA,CAClHC,EAAO,GAAA,CAAIF,CAAAA,CAAKI,CAAM,CAAA,CACtBC,EAAW,CAAA,OAAA,EAAUL,CAAG,CAAA,QAAA,EAAWC,CAAK,EAAE,EAC5C","file":"config-set-O6JKOGGN.js","sourcesContent":["import { getConfig } from './config.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function configSet(key: string, value: string): Promise<void> {\n const config = getConfig()\n const parsed: unknown = value === 'true' ? true : value === 'false' ? false : !isNaN(Number(value)) ? Number(value) : value\n config.set(key, parsed)\n logSuccess(`Config ${key} set to ${value}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/util/config-set.ts"],"names":["configSet","key","value","config","getConfig","parsed","logSuccess"],"mappings":"oGAGA,eAAOA,CAAAA,CAAiCC,CAAAA,CAAaC,CAAAA,CAA8B,CACjF,IAAMC,CAAAA,CAASC,CAAAA,EAAU,CACnBC,CAAAA,CAAkBH,IAAU,MAAA,CAAS,IAAA,CAAOA,CAAAA,GAAU,OAAA,CAAU,MAAS,KAAA,CAAM,MAAA,CAAOA,CAAK,CAAC,EAAoBA,CAAAA,CAAhB,MAAA,CAAOA,CAAK,CAAA,CAClHC,EAAO,GAAA,CAAIF,CAAAA,CAAKI,CAAM,CAAA,CACtBC,EAAW,CAAA,OAAA,EAAUL,CAAG,CAAA,QAAA,EAAWC,CAAK,EAAE,EAC5C","file":"config-set-DRTRWWAA.js","sourcesContent":["import { getConfig } from './config.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function configSet(key: string, value: string): Promise<void> {\n const config = getConfig()\n const parsed: unknown = value === 'true' ? true : value === 'false' ? false : !isNaN(Number(value)) ? Number(value) : value\n config.set(key, parsed)\n logSuccess(`Config ${key} set to ${value}`)\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import {a as a$1}from'./chunk-MKRWNV2T.js';import {a}from'./chunk-UNA5CAPX.js';import {d}from'./chunk-CHBVIZF5.js';import'./chunk-NDB6KXYI.js';import'./chunk-ULVQ53OO.js';import'./chunk-FNCZD2QB.js';import {i,j,g,n,h as h$1,d as d$1,c}from'./chunk-EMRHLWPD.js';import'./chunk-Q3A4IBGC.js';import h from'path';import P from'fs';import A from'clipboardy';import v from'chalk';import B from'cli-progress';async function F(d){let e=h.resolve(d),a=P.statSync(e);if(a.isFile())return h.extname(e).toLowerCase()===".html"?{type:"single-file",rootPath:e,hasIndexHtml:true,htmlFiles:[e],totalFiles:1}:{type:"invalid",rootPath:e,hasIndexHtml:false,htmlFiles:[],totalFiles:0};if(a.isDirectory()){let m=function(i){let u=P.readdirSync(i,{withFileTypes:true});for(let n of u){let c=h.join(i,n.name);n.isDirectory()?!n.name.startsWith(".")&&n.name!=="node_modules"&&m(c):n.isFile()&&(l++,n.name.endsWith(".html")&&t.push(c));}};let t=[],l=0;if(m(e),t.length===0)return {type:"invalid",rootPath:e,hasIndexHtml:false,htmlFiles:[],totalFiles:l};let o=t.some(i=>h.basename(i).toLowerCase()==="index.html");return {type:"codebase",rootPath:e,hasIndexHtml:o,htmlFiles:t,totalFiles:l}}return {type:"invalid",rootPath:e,hasIndexHtml:false,htmlFiles:[],totalFiles:0}}async function L(d$2,e){let a$2=d$2?h.resolve(d$2):process.cwd(),r=a("Analyzing project...");r.start();let t=await F(a$2);t.type==="invalid"&&(r.fail(),i(`No deployable content found at ${a$2}. Provide an HTML file or folder containing HTML files.`),process.exit(1)),t.type==="codebase"&&!t.hasIndexHtml&&(r.warn(),j("No index.html found at root. Scanning one level deep for entry point...")),r.text="Uploading files...";let l={source:a$2,type:t.type,slug:e?.name,environment:e?.env||(e?.preview?"preview":"production"),force:e?.force||false};if(t.type==="codebase"){let n=function(p){let y=P.readdirSync(p,{withFileTypes:true});for(let s of y){let f=h.join(p,s.name);s.isDirectory()?!s.name.startsWith(".")&&s.name!=="node_modules"&&n(f):s.isFile()&&(a$1(s.name)?i.push(f):u.push(f));}};let i=[],u=[];n(t.rootPath),!e?.force&&t.type==="codebase"&&(r.text="Computing diff...");let c=new B.SingleBar({format:`${v.hex("#7C4DFF")("\u25B8")} Uploading |${v.hex("#7C4DFF")("{bar}")}| {percentage}% | {value}/{total} files | {speed}`,barCompleteChar:"\u2588",barIncompleteChar:"\u2591",hideCursor:true});c.start(i.length,0);let w=new FormData,b=0;for(let p of i){let y=h.relative(t.rootPath,p),s=P.readFileSync(p),f=new Blob([s]);w.append("files",f,y),b++,c.update(b);}c.stop(),r.stop(),l.files=w;}if(t.type==="single-file"){let o=P.readFileSync(t.rootPath,"utf-8");l.htmlContent=o;}r.text="Deploying to SquidCloud...",r.start();try{let o=await d("/api/v1/deploy",l,{authenticated:!0});r.succeed();let i=o.url||`https://squidcloud.vercel.app/sites/${e?.name||o.deploy_id}`;try{await A.write(i);}catch{}if(g()){n(o);return}h$1("Deployed successfully!"),console.log(` ${v.hex("#4FC3F7")(i)} ${d$1("")}`),o.file_count&&console.log(` ${c(`${o.file_count} files \xB7 ${o.deploy_time_ms}ms`)}`);}catch(o){throw r.fail(),o}}
2
+ export{L as default};//# sourceMappingURL=deploy-UOPO2HHL.js.map
3
+ //# sourceMappingURL=deploy-UOPO2HHL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/deploy/detector.ts","../src/commands/deploy/index.ts"],"names":["detectProject","targetPath","resolved","path","stat","fs","walk","dir","entries","entry","fullPath","totalFiles","htmlFiles","hasIndexHtml","f","deploy","target","options","deployPath","spinner","createSpinner","project","logError","logWarn","deployOptions","isAllowedFile","allowedFiles","ignoredFiles","progressBar","cliProgress","chalk","formData","uploadedCount","filePath","relativePath","content","blob","result","apiPost","siteUrl","clipboard","isJsonMode","logJSON","logSuccess","copied","muted","err"],"mappings":"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","file":"deploy-O7VVCVUR.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nexport type DeployType = 'single-file' | 'codebase' | 'invalid'\n\nexport interface DetectedProject {\n type: DeployType\n rootPath: string\n hasIndexHtml: boolean\n htmlFiles: string[]\n totalFiles: number\n}\n\nexport async function detectProject(targetPath: string): Promise<DetectedProject> {\n const resolved = path.resolve(targetPath)\n const stat = fs.statSync(resolved)\n\n if (stat.isFile()) {\n const ext = path.extname(resolved).toLowerCase()\n if (ext === '.html') {\n return {\n type: 'single-file',\n rootPath: resolved,\n hasIndexHtml: true,\n htmlFiles: [resolved],\n totalFiles: 1,\n }\n }\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n }\n\n if (stat.isDirectory()) {\n const htmlFiles: string[] = []\n let totalFiles = 0\n\n function walk(dir: 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 if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n totalFiles++\n if (entry.name.endsWith('.html')) {\n htmlFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(resolved)\n\n if (htmlFiles.length === 0) {\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles }\n }\n\n const hasIndexHtml = htmlFiles.some(f => path.basename(f).toLowerCase() === 'index.html')\n\n return {\n type: 'codebase',\n rootPath: resolved,\n hasIndexHtml,\n htmlFiles,\n totalFiles,\n }\n }\n\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n}\n","import path from 'node:path'\nimport fs from 'node:fs'\nimport { detectProject, isAllowedFile } from '../../lib/deploy/index.js'\nimport { apiPost, apiUpload } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logError, logInfo, logJSON, logWarn } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes } from '../../lib/utils/format.js'\nimport clipboard from 'clipboardy'\nimport chalk from 'chalk'\nimport { copied, muted } from '../../lib/output/brand.js'\nimport cliProgress from 'cli-progress'\n\nexport default async function deploy(target?: string, options?: {\n name?: string\n env?: string\n preview?: boolean\n noWait?: boolean\n force?: boolean\n output?: string\n}): Promise<void> {\n const deployPath = target ? path.resolve(target) : process.cwd()\n\n const spinner = createSpinner('Analyzing project...')\n spinner.start()\n\n const project = await detectProject(deployPath)\n\n if (project.type === 'invalid') {\n spinner.fail()\n logError(`No deployable content found at ${deployPath}. Provide an HTML file or folder containing HTML files.`)\n process.exit(1)\n }\n\n if (project.type === 'codebase' && !project.hasIndexHtml) {\n spinner.warn()\n logWarn('No index.html found at root. Scanning one level deep for entry point...')\n }\n\n spinner.text = 'Uploading files...'\n\n const deployOptions: Record<string, unknown> = {\n source: deployPath,\n type: project.type,\n slug: options?.name,\n environment: options?.env || (options?.preview ? 'preview' : 'production'),\n force: options?.force || false,\n }\n\n if (project.type === 'codebase') {\n const files: { path: string; content: string }[] = []\n const allowedFiles: string[] = []\n const ignoredFiles: string[] = []\n\n function walk(dir: 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 if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n if (isAllowedFile(entry.name)) {\n allowedFiles.push(fullPath)\n } else {\n ignoredFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(project.rootPath)\n\n if (!options?.force && project.type === 'codebase') {\n spinner.text = 'Computing diff...'\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${chalk.hex('#7C4DFF')('▸')} Uploading |${chalk.hex('#7C4DFF')('{bar}')}| {percentage}% | {value}/{total} files | {speed}`,\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n })\n\n progressBar.start(allowedFiles.length, 0)\n\n const formData = new FormData()\n let uploadedCount = 0\n\n for (const filePath of allowedFiles) {\n const relativePath = path.relative(project.rootPath, filePath)\n const content = fs.readFileSync(filePath)\n const blob = new Blob([content])\n formData.append('files', blob, relativePath)\n uploadedCount++\n progressBar.update(uploadedCount)\n }\n\n progressBar.stop()\n spinner.stop()\n\n deployOptions.files = formData\n }\n\n if (project.type === 'single-file') {\n const content = fs.readFileSync(project.rootPath, 'utf-8')\n deployOptions.htmlContent = content\n }\n\n spinner.text = 'Deploying to SquidCloud...'\n spinner.start()\n\n try {\n const result = await apiPost<{\n url: string\n deploy_id: string\n file_count: number\n deploy_time_ms: number\n }>('/api/v1/deploy', deployOptions, { authenticated: true })\n\n spinner.succeed()\n\n const siteUrl = result.url || `https://squidcloud.vercel.app/sites/${options?.name || result.deploy_id}`\n\n try {\n await clipboard.write(siteUrl)\n } catch {\n // clipboard not available\n }\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n\n logSuccess(`Deployed successfully!`)\n console.log(` ${chalk.hex('#4FC3F7')(siteUrl)} ${copied('')}`)\n if (result.file_count) {\n console.log(` ${muted(`${result.file_count} files · ${result.deploy_time_ms}ms`)}`)\n }\n } catch (err) {\n spinner.fail()\n throw err\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/deploy/detector.ts","../src/commands/deploy/index.ts"],"names":["detectProject","targetPath","resolved","path","stat","fs","walk","dir","entries","entry","fullPath","totalFiles","htmlFiles","hasIndexHtml","f","deploy","target","options","deployPath","spinner","createSpinner","project","logError","logWarn","deployOptions","isAllowedFile","allowedFiles","ignoredFiles","progressBar","cliProgress","chalk","formData","uploadedCount","filePath","relativePath","content","blob","result","apiPost","siteUrl","clipboard","isJsonMode","logJSON","logSuccess","copied","muted","err"],"mappings":"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","file":"deploy-UOPO2HHL.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nexport type DeployType = 'single-file' | 'codebase' | 'invalid'\n\nexport interface DetectedProject {\n type: DeployType\n rootPath: string\n hasIndexHtml: boolean\n htmlFiles: string[]\n totalFiles: number\n}\n\nexport async function detectProject(targetPath: string): Promise<DetectedProject> {\n const resolved = path.resolve(targetPath)\n const stat = fs.statSync(resolved)\n\n if (stat.isFile()) {\n const ext = path.extname(resolved).toLowerCase()\n if (ext === '.html') {\n return {\n type: 'single-file',\n rootPath: resolved,\n hasIndexHtml: true,\n htmlFiles: [resolved],\n totalFiles: 1,\n }\n }\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n }\n\n if (stat.isDirectory()) {\n const htmlFiles: string[] = []\n let totalFiles = 0\n\n function walk(dir: 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 if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n totalFiles++\n if (entry.name.endsWith('.html')) {\n htmlFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(resolved)\n\n if (htmlFiles.length === 0) {\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles }\n }\n\n const hasIndexHtml = htmlFiles.some(f => path.basename(f).toLowerCase() === 'index.html')\n\n return {\n type: 'codebase',\n rootPath: resolved,\n hasIndexHtml,\n htmlFiles,\n totalFiles,\n }\n }\n\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n}\n","import path from 'node:path'\nimport fs from 'node:fs'\nimport { detectProject, isAllowedFile } from '../../lib/deploy/index.js'\nimport { apiPost, apiUpload } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logError, logInfo, logJSON, logWarn } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes } from '../../lib/utils/format.js'\nimport clipboard from 'clipboardy'\nimport chalk from 'chalk'\nimport { copied, muted } from '../../lib/output/brand.js'\nimport cliProgress from 'cli-progress'\n\nexport default async function deploy(target?: string, options?: {\n name?: string\n env?: string\n preview?: boolean\n noWait?: boolean\n force?: boolean\n output?: string\n}): Promise<void> {\n const deployPath = target ? path.resolve(target) : process.cwd()\n\n const spinner = createSpinner('Analyzing project...')\n spinner.start()\n\n const project = await detectProject(deployPath)\n\n if (project.type === 'invalid') {\n spinner.fail()\n logError(`No deployable content found at ${deployPath}. Provide an HTML file or folder containing HTML files.`)\n process.exit(1)\n }\n\n if (project.type === 'codebase' && !project.hasIndexHtml) {\n spinner.warn()\n logWarn('No index.html found at root. Scanning one level deep for entry point...')\n }\n\n spinner.text = 'Uploading files...'\n\n const deployOptions: Record<string, unknown> = {\n source: deployPath,\n type: project.type,\n slug: options?.name,\n environment: options?.env || (options?.preview ? 'preview' : 'production'),\n force: options?.force || false,\n }\n\n if (project.type === 'codebase') {\n const files: { path: string; content: string }[] = []\n const allowedFiles: string[] = []\n const ignoredFiles: string[] = []\n\n function walk(dir: 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 if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n if (isAllowedFile(entry.name)) {\n allowedFiles.push(fullPath)\n } else {\n ignoredFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(project.rootPath)\n\n if (!options?.force && project.type === 'codebase') {\n spinner.text = 'Computing diff...'\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${chalk.hex('#7C4DFF')('▸')} Uploading |${chalk.hex('#7C4DFF')('{bar}')}| {percentage}% | {value}/{total} files | {speed}`,\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n })\n\n progressBar.start(allowedFiles.length, 0)\n\n const formData = new FormData()\n let uploadedCount = 0\n\n for (const filePath of allowedFiles) {\n const relativePath = path.relative(project.rootPath, filePath)\n const content = fs.readFileSync(filePath)\n const blob = new Blob([content])\n formData.append('files', blob, relativePath)\n uploadedCount++\n progressBar.update(uploadedCount)\n }\n\n progressBar.stop()\n spinner.stop()\n\n deployOptions.files = formData\n }\n\n if (project.type === 'single-file') {\n const content = fs.readFileSync(project.rootPath, 'utf-8')\n deployOptions.htmlContent = content\n }\n\n spinner.text = 'Deploying to SquidCloud...'\n spinner.start()\n\n try {\n const result = await apiPost<{\n url: string\n deploy_id: string\n file_count: number\n deploy_time_ms: number\n }>('/api/v1/deploy', deployOptions, { authenticated: true })\n\n spinner.succeed()\n\n const siteUrl = result.url || `https://squidcloud.vercel.app/sites/${options?.name || result.deploy_id}`\n\n try {\n await clipboard.write(siteUrl)\n } catch {\n // clipboard not available\n }\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n\n logSuccess(`Deployed successfully!`)\n console.log(` ${chalk.hex('#4FC3F7')(siteUrl)} ${copied('')}`)\n if (result.file_count) {\n console.log(` ${muted(`${result.file_count} files · ${result.deploy_time_ms}ms`)}`)\n }\n } catch (err) {\n spinner.fail()\n throw err\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {c}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import {f,m,l}from'./chunk-QT7R3AXE.js';import {b,a}from'./chunk-2RMLR54M.js';import e from'chalk';async function d(m$1){let t=[];parseInt(process.version.slice(1),10)>=20?t.push({name:"Node.js Version",status:"pass",message:`${process.version} (20+ required)`}):t.push({name:"Node.js Version",status:"fail",message:`${process.version} \u2014 upgrade to 20+`});let o=await b();if(o){let a$1=o.device_fingerprint===a();t.push({name:"Auth Session",status:a$1?"pass":"warn",message:a$1?`Authenticated as ${o.user.email}`:"Device fingerprint mismatch \u2014 may need re-login"});}else t.push({name:"Auth Session",status:"warn",message:"Not authenticated \u2014 run `squidcloud login`"});try{await c("/api/health"),t.push({name:"Network",status:"pass",message:"Connected to SquidCloud API"});}catch{t.push({name:"Network",status:"fail",message:"Cannot reach SquidCloud API"});}if(m$1?.security){t.push({name:"Device Fingerprint",status:"pass",message:a().slice(0,16)+"..."});try{let a=await c("/api/auth/ssp/security-check",{authenticated:!0});t.push({name:"Server Security",status:"pass",message:"All checks passed"});}catch{t.push({name:"Server Security",status:"warn",message:"Could not verify all security checks"});}}if(f()){m({checks:t});return}l(""),l(e.bold(" SquidCloud Diagnostics")),l(e.dim(" \u2500\u2500\u2500".repeat(10))),l("");for(let a of t){let p=a.status==="pass"?e.green("\u2713"):a.status==="warn"?e.yellow("\u26A0"):e.red("\u2717");l(` ${p} ${e.bold(a.name)}`),l(` ${e.dim(a.message)}`),l("");}l(e.bold(" Environment")),l(e.dim(" \u2500\u2500\u2500".repeat(10))),l(""),l(` ${e.dim("Platform:")} ${process.platform} ${process.arch}`),l(` ${e.dim("Node:")} ${process.version}`),l(` ${e.dim("CWD:")} ${process.cwd()}`),l("");}export{d as default};//# sourceMappingURL=doctor-GAUV36VS.js.map
2
- //# sourceMappingURL=doctor-GAUV36VS.js.map
1
+ import {c}from'./chunk-CHBVIZF5.js';import'./chunk-NDB6KXYI.js';import'./chunk-ULVQ53OO.js';import {g,n,m}from'./chunk-EMRHLWPD.js';import {b,a}from'./chunk-Q3A4IBGC.js';import e from'chalk';async function d(m$1){let t=[];parseInt(process.version.slice(1),10)>=20?t.push({name:"Node.js Version",status:"pass",message:`${process.version} (20+ required)`}):t.push({name:"Node.js Version",status:"fail",message:`${process.version} \u2014 upgrade to 20+`});let o=await b();if(o){let a$1=o.device_fingerprint===a();t.push({name:"Auth Session",status:a$1?"pass":"warn",message:a$1?`Authenticated as ${o.user.email}`:"Device fingerprint mismatch \u2014 may need re-login"});}else t.push({name:"Auth Session",status:"warn",message:"Not authenticated \u2014 run `squidcloud login`"});try{await c("/api/health"),t.push({name:"Network",status:"pass",message:"Connected to SquidCloud API"});}catch{t.push({name:"Network",status:"fail",message:"Cannot reach SquidCloud API"});}if(m$1?.security){t.push({name:"Device Fingerprint",status:"pass",message:a().slice(0,16)+"..."});try{let a=await c("/api/auth/ssp/security-check",{authenticated:!0});t.push({name:"Server Security",status:"pass",message:"All checks passed"});}catch{t.push({name:"Server Security",status:"warn",message:"Could not verify all security checks"});}}if(g()){n({checks:t});return}m(""),m(e.bold(" SquidCloud Diagnostics")),m(e.dim(" \u2500\u2500\u2500".repeat(10))),m("");for(let a of t){let p=a.status==="pass"?e.green("\u2713"):a.status==="warn"?e.yellow("\u26A0"):e.red("\u2717");m(` ${p} ${e.bold(a.name)}`),m(` ${e.dim(a.message)}`),m("");}m(e.bold(" Environment")),m(e.dim(" \u2500\u2500\u2500".repeat(10))),m(""),m(` ${e.dim("Platform:")} ${process.platform} ${process.arch}`),m(` ${e.dim("Node:")} ${process.version}`),m(` ${e.dim("CWD:")} ${process.cwd()}`),m("");}export{d as default};//# sourceMappingURL=doctor-B7RAWBD5.js.map
2
+ //# sourceMappingURL=doctor-B7RAWBD5.js.map