squidcloudctl 1.1.4 → 1.1.6

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 (205) hide show
  1. package/dist/auth-revoke-UCNMKHTF.js +2 -0
  2. package/dist/{auth-revoke-IRZJIB2A.js.map → auth-revoke-UCNMKHTF.js.map} +1 -1
  3. package/dist/{auth-sessions-JZF7HUBL.js → auth-sessions-PIBWTIT5.js} +2 -2
  4. package/dist/{auth-sessions-JZF7HUBL.js.map → auth-sessions-PIBWTIT5.js.map} +1 -1
  5. package/dist/auth-status-RPJVTJ4S.js +2 -0
  6. package/dist/{auth-status-WHT7RXX6.js.map → auth-status-RPJVTJ4S.js.map} +1 -1
  7. package/dist/bin/squidcloud.js +1 -1
  8. package/dist/bin/squidcloud.js.map +1 -1
  9. package/dist/chunk-2RMLR54M.js +2 -0
  10. package/dist/chunk-2RMLR54M.js.map +1 -0
  11. package/dist/chunk-6DKUVFZF.js +2 -0
  12. package/dist/chunk-6DKUVFZF.js.map +1 -0
  13. package/dist/chunk-FZKCZRJZ.js +2 -0
  14. package/dist/chunk-FZKCZRJZ.js.map +1 -0
  15. package/dist/chunk-Z74H5ACJ.js +3 -0
  16. package/dist/{chunk-SVR7W7MP.js.map → chunk-Z74H5ACJ.js.map} +1 -1
  17. package/dist/client-MCQSJIGH.js +2 -0
  18. package/dist/{client-HD3YWJJJ.js.map → client-MCQSJIGH.js.map} +1 -1
  19. package/dist/{collab-activity-UNX2PJZE.js → collab-activity-ESSL2DUE.js} +2 -2
  20. package/dist/{collab-activity-UNX2PJZE.js.map → collab-activity-ESSL2DUE.js.map} +1 -1
  21. package/dist/{collab-invite-Y54NCHSB.js → collab-invite-H6KXMBJ5.js} +2 -2
  22. package/dist/{collab-invite-Y54NCHSB.js.map → collab-invite-H6KXMBJ5.js.map} +1 -1
  23. package/dist/{collab-leave-CR4VOXZV.js → collab-leave-23J42V4P.js} +2 -2
  24. package/dist/{collab-leave-CR4VOXZV.js.map → collab-leave-23J42V4P.js.map} +1 -1
  25. package/dist/{collab-list-BHO5IEAR.js → collab-list-6VNDTN7W.js} +2 -2
  26. package/dist/{collab-list-BHO5IEAR.js.map → collab-list-6VNDTN7W.js.map} +1 -1
  27. package/dist/collab-remove-A76ARTWG.js +2 -0
  28. package/dist/{collab-remove-XI3NX2M7.js.map → collab-remove-A76ARTWG.js.map} +1 -1
  29. package/dist/{collab-transfer-U4XXODAN.js → collab-transfer-S5MECG6Y.js} +2 -2
  30. package/dist/{collab-transfer-U4XXODAN.js.map → collab-transfer-S5MECG6Y.js.map} +1 -1
  31. package/dist/{deploy-5AQMGJ2Q.js → deploy-O7VVCVUR.js} +3 -3
  32. package/dist/{deploy-5AQMGJ2Q.js.map → deploy-O7VVCVUR.js.map} +1 -1
  33. package/dist/doctor-GAUV36VS.js +2 -0
  34. package/dist/doctor-GAUV36VS.js.map +1 -0
  35. package/dist/{forms-clear-4BQMLGGN.js → forms-clear-TSQ4YFPW.js} +2 -2
  36. package/dist/{forms-clear-4BQMLGGN.js.map → forms-clear-TSQ4YFPW.js.map} +1 -1
  37. package/dist/{forms-create-ORURKN5O.js → forms-create-IJPDTTGR.js} +2 -2
  38. package/dist/{forms-create-ORURKN5O.js.map → forms-create-IJPDTTGR.js.map} +1 -1
  39. package/dist/{forms-delete-NT4SAO6G.js → forms-delete-5Q6JVOWZ.js} +2 -2
  40. package/dist/{forms-delete-NT4SAO6G.js.map → forms-delete-5Q6JVOWZ.js.map} +1 -1
  41. package/dist/{forms-embed-5L4DHGXC.js → forms-embed-RWJ4BAPQ.js} +3 -3
  42. package/dist/{forms-embed-5L4DHGXC.js.map → forms-embed-RWJ4BAPQ.js.map} +1 -1
  43. package/dist/{forms-export-5SDRUFV3.js → forms-export-YGKJVRUD.js} +2 -2
  44. package/dist/{forms-export-5SDRUFV3.js.map → forms-export-YGKJVRUD.js.map} +1 -1
  45. package/dist/{forms-info-JOYOMPC3.js → forms-info-NVNTIK45.js} +2 -2
  46. package/dist/{forms-info-JOYOMPC3.js.map → forms-info-NVNTIK45.js.map} +1 -1
  47. package/dist/{forms-list-CS7J3ULK.js → forms-list-UDYVBNX5.js} +2 -2
  48. package/dist/{forms-list-CS7J3ULK.js.map → forms-list-UDYVBNX5.js.map} +1 -1
  49. package/dist/{forms-submissions-KWGRYLAY.js → forms-submissions-LFUTUDOW.js} +2 -2
  50. package/dist/{forms-submissions-KWGRYLAY.js.map → forms-submissions-LFUTUDOW.js.map} +1 -1
  51. package/dist/login-PDECY435.js +3 -0
  52. package/dist/login-PDECY435.js.map +1 -0
  53. package/dist/logout-D2GLIU2Y.js +2 -0
  54. package/dist/{logout-UF55Z67V.js.map → logout-D2GLIU2Y.js.map} +1 -1
  55. package/dist/{logs-export-O74GEMCD.js → logs-export-76WAIPNB.js} +2 -2
  56. package/dist/{logs-export-O74GEMCD.js.map → logs-export-76WAIPNB.js.map} +1 -1
  57. package/dist/{logs-search-JAGCLPVE.js → logs-search-MA3AWP4B.js} +2 -2
  58. package/dist/{logs-search-JAGCLPVE.js.map → logs-search-MA3AWP4B.js.map} +1 -1
  59. package/dist/{logs-tail-NFHOK3RM.js → logs-tail-2OMASMCD.js} +3 -3
  60. package/dist/{logs-tail-NFHOK3RM.js.map → logs-tail-2OMASMCD.js.map} +1 -1
  61. package/dist/{monitor-ZLSLSVEZ.js → monitor-LZ7R5C3D.js} +2 -2
  62. package/dist/{monitor-ZLSLSVEZ.js.map → monitor-LZ7R5C3D.js.map} +1 -1
  63. package/dist/{monitor-automations-VK6CZSNG.js → monitor-automations-AR7MS2PL.js} +2 -2
  64. package/dist/{monitor-automations-VK6CZSNG.js.map → monitor-automations-AR7MS2PL.js.map} +1 -1
  65. package/dist/{monitor-pipelines-WQOY5O4K.js → monitor-pipelines-EASQLIQA.js} +2 -2
  66. package/dist/{monitor-pipelines-WQOY5O4K.js.map → monitor-pipelines-EASQLIQA.js.map} +1 -1
  67. package/dist/{monitor-sites-XRIEHVIV.js → monitor-sites-2QIM4XJ3.js} +2 -2
  68. package/dist/{monitor-sites-XRIEHVIV.js.map → monitor-sites-2QIM4XJ3.js.map} +1 -1
  69. package/dist/{monitor-storage-2ULH4E4F.js → monitor-storage-SMB32J37.js} +2 -2
  70. package/dist/{monitor-storage-2ULH4E4F.js.map → monitor-storage-SMB32J37.js.map} +1 -1
  71. package/dist/scripts-cancel-CQVIDKVW.js +2 -0
  72. package/dist/{scripts-cancel-XYWJD3QW.js.map → scripts-cancel-CQVIDKVW.js.map} +1 -1
  73. package/dist/{scripts-delete-2EUZDGOW.js → scripts-delete-TV4SX5OJ.js} +2 -2
  74. package/dist/{scripts-delete-2EUZDGOW.js.map → scripts-delete-TV4SX5OJ.js.map} +1 -1
  75. package/dist/scripts-disable-IHPUGSTJ.js +2 -0
  76. package/dist/{scripts-disable-7UQUGTO4.js.map → scripts-disable-IHPUGSTJ.js.map} +1 -1
  77. package/dist/scripts-enable-ULCXRU7W.js +2 -0
  78. package/dist/{scripts-enable-N7RK2ZRG.js.map → scripts-enable-ULCXRU7W.js.map} +1 -1
  79. package/dist/{scripts-list-F2RJ7TJ6.js → scripts-list-XWNT7242.js} +2 -2
  80. package/dist/{scripts-list-F2RJ7TJ6.js.map → scripts-list-XWNT7242.js.map} +1 -1
  81. package/dist/{scripts-logs-PIIKLZXW.js → scripts-logs-YBF6MTMQ.js} +2 -2
  82. package/dist/{scripts-logs-PIIKLZXW.js.map → scripts-logs-YBF6MTMQ.js.map} +1 -1
  83. package/dist/{scripts-run-4EUWVBS6.js → scripts-run-FQ7EOXOH.js} +2 -2
  84. package/dist/{scripts-run-4EUWVBS6.js.map → scripts-run-FQ7EOXOH.js.map} +1 -1
  85. package/dist/{scripts-status-BVCSUDUA.js → scripts-status-XYGHYRZB.js} +2 -2
  86. package/dist/{scripts-status-BVCSUDUA.js.map → scripts-status-XYGHYRZB.js.map} +1 -1
  87. package/dist/{scripts-validate-TU47YDOT.js → scripts-validate-T7CGIPPE.js} +2 -2
  88. package/dist/{scripts-validate-TU47YDOT.js.map → scripts-validate-T7CGIPPE.js.map} +1 -1
  89. package/dist/{scripts-watch-TQURXMIL.js → scripts-watch-A7HEOAOE.js} +2 -2
  90. package/dist/{scripts-watch-TQURXMIL.js.map → scripts-watch-A7HEOAOE.js.map} +1 -1
  91. package/dist/session-FBC5MGFA.js +2 -0
  92. package/dist/{session-R7SGJZAG.js.map → session-FBC5MGFA.js.map} +1 -1
  93. package/dist/sign-cancel-4YYJ2BBY.js +2 -0
  94. package/dist/{sign-cancel-SOBRK2XX.js.map → sign-cancel-4YYJ2BBY.js.map} +1 -1
  95. package/dist/{sign-download-GLJS64WT.js → sign-download-VOMT2C3C.js} +2 -2
  96. package/dist/{sign-download-GLJS64WT.js.map → sign-download-VOMT2C3C.js.map} +1 -1
  97. package/dist/{sign-list-ZMM7F4K2.js → sign-list-SACY7XF3.js} +2 -2
  98. package/dist/{sign-list-ZMM7F4K2.js.map → sign-list-SACY7XF3.js.map} +1 -1
  99. package/dist/{sign-request-PO24EDJG.js → sign-request-PM7BZ56P.js} +2 -2
  100. package/dist/{sign-request-PO24EDJG.js.map → sign-request-PM7BZ56P.js.map} +1 -1
  101. package/dist/{sign-status-KD7I3PZH.js → sign-status-LRQGO2UX.js} +2 -2
  102. package/dist/{sign-status-KD7I3PZH.js.map → sign-status-LRQGO2UX.js.map} +1 -1
  103. package/dist/{sign-verify-LRZPLJYX.js → sign-verify-PQ7HBHTY.js} +2 -2
  104. package/dist/{sign-verify-LRZPLJYX.js.map → sign-verify-PQ7HBHTY.js.map} +1 -1
  105. package/dist/{sites-analytics-RU63VLE4.js → sites-analytics-J5BMYBO5.js} +2 -2
  106. package/dist/{sites-analytics-RU63VLE4.js.map → sites-analytics-J5BMYBO5.js.map} +1 -1
  107. package/dist/{sites-delete-MGAIPA4A.js → sites-delete-BYUJAMSX.js} +2 -2
  108. package/dist/{sites-delete-MGAIPA4A.js.map → sites-delete-BYUJAMSX.js.map} +1 -1
  109. package/dist/{sites-deploys-UNRERGLN.js → sites-deploys-XJQHVTET.js} +2 -2
  110. package/dist/{sites-deploys-UNRERGLN.js.map → sites-deploys-XJQHVTET.js.map} +1 -1
  111. package/dist/{sites-info-NVMVESXX.js → sites-info-JBM5C5FT.js} +2 -2
  112. package/dist/{sites-info-NVMVESXX.js.map → sites-info-JBM5C5FT.js.map} +1 -1
  113. package/dist/{sites-list-KQZVB3Y2.js → sites-list-4AIOO76P.js} +2 -2
  114. package/dist/{sites-list-KQZVB3Y2.js.map → sites-list-4AIOO76P.js.map} +1 -1
  115. package/dist/{sites-logs-MINP5YLW.js → sites-logs-GZALCIBX.js} +3 -3
  116. package/dist/{sites-logs-MINP5YLW.js.map → sites-logs-GZALCIBX.js.map} +1 -1
  117. package/dist/sites-open-QJOKIMGM.js +3 -0
  118. package/dist/{sites-open-OZ5RORV4.js.map → sites-open-QJOKIMGM.js.map} +1 -1
  119. package/dist/sites-purge-GXD673E2.js +2 -0
  120. package/dist/{sites-purge-K6CUCSQA.js.map → sites-purge-GXD673E2.js.map} +1 -1
  121. package/dist/{sites-rename-HXM4MMDS.js → sites-rename-BTQZRAVA.js} +2 -2
  122. package/dist/{sites-rename-HXM4MMDS.js.map → sites-rename-BTQZRAVA.js.map} +1 -1
  123. package/dist/{sites-rollback-FVELQVJK.js → sites-rollback-LZUUU4ZU.js} +2 -2
  124. package/dist/{sites-rollback-FVELQVJK.js.map → sites-rollback-LZUUU4ZU.js.map} +1 -1
  125. package/dist/{sites-unpublish-FQSQA763.js → sites-unpublish-IB7BTNJC.js} +2 -2
  126. package/dist/{sites-unpublish-FQSQA763.js.map → sites-unpublish-IB7BTNJC.js.map} +1 -1
  127. package/dist/{sites-visibility-QDDJWBOT.js → sites-visibility-I7PIUX4B.js} +2 -2
  128. package/dist/{sites-visibility-QDDJWBOT.js.map → sites-visibility-I7PIUX4B.js.map} +1 -1
  129. package/dist/storage-cat-CFOIZEJS.js +2 -0
  130. package/dist/{storage-cat-TASP3DK7.js.map → storage-cat-CFOIZEJS.js.map} +1 -1
  131. package/dist/storage-clean-6EN2KMOC.js +2 -0
  132. package/dist/{storage-clean-WCV7ENP2.js.map → storage-clean-6EN2KMOC.js.map} +1 -1
  133. package/dist/storage-cp-SCF3CFS2.js +2 -0
  134. package/dist/{storage-cp-PV6LPCYV.js.map → storage-cp-SCF3CFS2.js.map} +1 -1
  135. package/dist/{storage-diff-BDKHYLIC.js → storage-diff-MYW5AM3C.js} +2 -2
  136. package/dist/{storage-diff-BDKHYLIC.js.map → storage-diff-MYW5AM3C.js.map} +1 -1
  137. package/dist/{storage-download-UEQYEO73.js → storage-download-6EQJJ7SO.js} +3 -3
  138. package/dist/{storage-download-UEQYEO73.js.map → storage-download-6EQJJ7SO.js.map} +1 -1
  139. package/dist/{storage-info-4IVQWOSM.js → storage-info-BV7VXGTF.js} +2 -2
  140. package/dist/{storage-info-4IVQWOSM.js.map → storage-info-BV7VXGTF.js.map} +1 -1
  141. package/dist/storage-ls-HIVJWOV6.js +3 -0
  142. package/dist/storage-ls-HIVJWOV6.js.map +1 -0
  143. package/dist/storage-mkdir-GRKUOWAJ.js +2 -0
  144. package/dist/{storage-mkdir-5IXAS4YP.js.map → storage-mkdir-GRKUOWAJ.js.map} +1 -1
  145. package/dist/storage-mv-RYW5TXAH.js +2 -0
  146. package/dist/{storage-mv-4DCYMNNI.js.map → storage-mv-RYW5TXAH.js.map} +1 -1
  147. package/dist/{storage-rm-5K7F7ZP7.js → storage-rm-PLBQC4ED.js} +2 -2
  148. package/dist/{storage-rm-5K7F7ZP7.js.map → storage-rm-PLBQC4ED.js.map} +1 -1
  149. package/dist/{storage-search-FCNFG2BS.js → storage-search-EKYRVCY2.js} +2 -2
  150. package/dist/{storage-search-FCNFG2BS.js.map → storage-search-EKYRVCY2.js.map} +1 -1
  151. package/dist/{storage-share-4PVM4QIC.js → storage-share-OENZM4QY.js} +2 -2
  152. package/dist/{storage-share-4PVM4QIC.js.map → storage-share-OENZM4QY.js.map} +1 -1
  153. package/dist/{storage-tag-SXSOQVY6.js → storage-tag-7XTICDCD.js} +2 -2
  154. package/dist/{storage-tag-SXSOQVY6.js.map → storage-tag-7XTICDCD.js.map} +1 -1
  155. package/dist/storage-unshare-6G6YPRPN.js +2 -0
  156. package/dist/{storage-unshare-EMXDT7DS.js.map → storage-unshare-6G6YPRPN.js.map} +1 -1
  157. package/dist/{storage-upload-EHOTOYS5.js → storage-upload-HW4QAENK.js} +2 -2
  158. package/dist/{storage-upload-EHOTOYS5.js.map → storage-upload-HW4QAENK.js.map} +1 -1
  159. package/dist/time-list-HUWDZZ27.js +2 -0
  160. package/dist/{time-list-2XMDLMRC.js.map → time-list-HUWDZZ27.js.map} +1 -1
  161. package/dist/time-lock-MZ6C6DMR.js +2 -0
  162. package/dist/{time-lock-WQKPTILH.js.map → time-lock-MZ6C6DMR.js.map} +1 -1
  163. package/dist/{time-proof-4YZLG6NG.js → time-proof-G6IX5SMS.js} +2 -2
  164. package/dist/{time-proof-4YZLG6NG.js.map → time-proof-G6IX5SMS.js.map} +1 -1
  165. package/dist/{time-status-YRQVIKNH.js → time-status-UJ3XY3R5.js} +2 -2
  166. package/dist/{time-status-YRQVIKNH.js.map → time-status-UJ3XY3R5.js.map} +1 -1
  167. package/dist/{time-unlock-OUIAP7RY.js → time-unlock-3TUR2KVC.js} +2 -2
  168. package/dist/{time-unlock-OUIAP7RY.js.map → time-unlock-3TUR2KVC.js.map} +1 -1
  169. package/dist/whoami-C4LPZU6R.js +2 -0
  170. package/dist/{whoami-ZFYNNZSF.js.map → whoami-C4LPZU6R.js.map} +1 -1
  171. package/package.json +1 -3
  172. package/dist/auth-revoke-IRZJIB2A.js +0 -2
  173. package/dist/auth-status-WHT7RXX6.js +0 -2
  174. package/dist/chunk-G4JU7IUC.js +0 -2
  175. package/dist/chunk-G4JU7IUC.js.map +0 -1
  176. package/dist/chunk-MU5KHPCI.js +0 -2
  177. package/dist/chunk-MU5KHPCI.js.map +0 -1
  178. package/dist/chunk-SVR7W7MP.js +0 -3
  179. package/dist/chunk-W6CRHANC.js +0 -2
  180. package/dist/chunk-W6CRHANC.js.map +0 -1
  181. package/dist/client-HD3YWJJJ.js +0 -2
  182. package/dist/collab-remove-XI3NX2M7.js +0 -2
  183. package/dist/doctor-5TK2COIN.js +0 -2
  184. package/dist/doctor-5TK2COIN.js.map +0 -1
  185. package/dist/login-DRNKN2XZ.js +0 -3
  186. package/dist/login-DRNKN2XZ.js.map +0 -1
  187. package/dist/logout-UF55Z67V.js +0 -2
  188. package/dist/scripts-cancel-XYWJD3QW.js +0 -2
  189. package/dist/scripts-disable-7UQUGTO4.js +0 -2
  190. package/dist/scripts-enable-N7RK2ZRG.js +0 -2
  191. package/dist/session-R7SGJZAG.js +0 -2
  192. package/dist/sign-cancel-SOBRK2XX.js +0 -2
  193. package/dist/sites-open-OZ5RORV4.js +0 -3
  194. package/dist/sites-purge-K6CUCSQA.js +0 -2
  195. package/dist/storage-cat-TASP3DK7.js +0 -2
  196. package/dist/storage-clean-WCV7ENP2.js +0 -2
  197. package/dist/storage-cp-PV6LPCYV.js +0 -2
  198. package/dist/storage-ls-AMBO3S2J.js +0 -2
  199. package/dist/storage-ls-AMBO3S2J.js.map +0 -1
  200. package/dist/storage-mkdir-5IXAS4YP.js +0 -2
  201. package/dist/storage-mv-4DCYMNNI.js +0 -2
  202. package/dist/storage-unshare-EMXDT7DS.js +0 -2
  203. package/dist/time-list-2XMDLMRC.js +0 -2
  204. package/dist/time-lock-WQKPTILH.js +0 -2
  205. package/dist/whoami-ZFYNNZSF.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/storage/storage-info.ts"],"names":["storageInfo","path","f","apiGet","isJsonMode","logJSON","logRaw","chalk","formatBytes","formatDate"],"mappings":"kOAmBA,eAAOA,CAAAA,CAAmCC,EAA6B,CAErE,IAAMC,GADO,MAAMC,CAAAA,CAA2B,6BAA6B,kBAAA,CAAmBF,CAAI,CAAC,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,CAAA,EAC/G,IAAA,CAEf,GAAIG,CAAAA,GAAc,CAChBC,GAAAA,CAAQH,CAAC,CAAA,CACT,MACF,CAEAI,CAAAA,CAAO,EAAE,EACTA,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAKL,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,EAChCI,CAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,CACpCD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,OAAO,CAAC,YAAYC,CAAAA,CAAYN,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,EAChEI,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,OAAO,CAAC,CAAA,SAAA,EAAYL,CAAAA,CAAE,SAAS,EAAE,CAAA,CACxDI,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA,SAAA,EAAYA,EAAM,GAAA,CAAIL,CAAAA,CAAE,cAAc,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,EAAK,GAAG,CAAC,CAAA,CAAE,CAAA,CAC3FI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,MAAA,EAASE,EAAWP,CAAAA,CAAE,UAAU,CAAC,CAAA,CAAE,CAAA,CACrEI,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,WAAW,CAAC,QAAQE,CAAAA,CAAWP,CAAAA,CAAE,UAAU,CAAC,CAAA,CAAE,CAAA,CACrEI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,OAAO,CAAC,YAAYL,CAAAA,CAAE,IAAA,EAAM,OAASA,CAAAA,CAAE,IAAA,CAAK,KAAK,IAAI,CAAA,CAAIK,EAAM,GAAA,CAAI,MAAM,CAAC,CAAA,CAAE,CAAA,CACnGD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,OAAA,EAAUL,EAAE,MAAA,CAASK,CAAAA,CAAM,MAAM,KAAK,CAAA,CAAIA,EAAM,GAAA,CAAI,IAAI,CAAC,CAAA,CAAE,CAAA,CAC5FD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,YAAY,CAAC,OAAOL,CAAAA,CAAE,SAAA,CAAYK,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,EAAM,GAAA,CAAI,IAAI,CAAC,CAAA,CAAE,CAAA,CAC/FD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,OAAO,CAAC,YAAYL,CAAAA,CAAE,WAAA,EAAeK,EAAM,GAAA,CAAI,SAAS,CAAC,CAAA,CAAE,CAAA,CAClFD,CAAAA,CAAO,EAAE,EACX","file":"storage-info-4IVQWOSM.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes, formatDate } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface FileInfo {\n name: string\n size: number\n mime_type: string\n content_hash: string\n created_at: string\n updated_at: string\n tags: string[]\n shared: boolean\n published: boolean\n scan_status: string\n}\n\nexport default async function storageInfo(path: string): Promise<void> {\n const data = await apiGet<{ file: FileInfo }>(`/api/v1/storage/info?path=${encodeURIComponent(path)}`, { authenticated: true })\n const f = data.file\n\n if (isJsonMode()) {\n logJSON(f)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(f.name)}`)\n logRaw(chalk.dim(' ───'.repeat(10)))\n logRaw(` ${chalk.bold('Size:')} ${formatBytes(f.size)}`)\n logRaw(` ${chalk.bold('Type:')} ${f.mime_type}`)\n logRaw(` ${chalk.bold('Hash:')} ${chalk.dim(f.content_hash?.slice(0, 16) || '-')}`)\n logRaw(` ${chalk.bold('Created:')} ${formatDate(f.created_at)}`)\n logRaw(` ${chalk.bold('Modified:')} ${formatDate(f.updated_at)}`)\n logRaw(` ${chalk.bold('Tags:')} ${f.tags?.length ? f.tags.join(', ') : chalk.dim('none')}`)\n logRaw(` ${chalk.bold('Shared:')} ${f.shared ? chalk.green('yes') : chalk.dim('no')}`)\n logRaw(` ${chalk.bold('Published:')} ${f.published ? chalk.green('yes') : chalk.dim('no')}`)\n logRaw(` ${chalk.bold('Scan:')} ${f.scan_status || chalk.dim('pending')}`)\n logRaw('')\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/storage/storage-info.ts"],"names":["storageInfo","path","f","apiGet","isJsonMode","logJSON","logRaw","chalk","formatBytes","formatDate"],"mappings":"kOAmBA,eAAOA,CAAAA,CAAmCC,EAA6B,CAErE,IAAMC,GADO,MAAMC,CAAAA,CAA2B,6BAA6B,kBAAA,CAAmBF,CAAI,CAAC,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,CAAA,EAC/G,IAAA,CAEf,GAAIG,CAAAA,GAAc,CAChBC,GAAAA,CAAQH,CAAC,CAAA,CACT,MACF,CAEAI,CAAAA,CAAO,EAAE,EACTA,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAKL,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,EAChCI,CAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,CACpCD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,OAAO,CAAC,YAAYC,CAAAA,CAAYN,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,EAChEI,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,OAAO,CAAC,CAAA,SAAA,EAAYL,CAAAA,CAAE,SAAS,EAAE,CAAA,CACxDI,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA,SAAA,EAAYA,EAAM,GAAA,CAAIL,CAAAA,CAAE,cAAc,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,EAAK,GAAG,CAAC,CAAA,CAAE,CAAA,CAC3FI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,MAAA,EAASE,EAAWP,CAAAA,CAAE,UAAU,CAAC,CAAA,CAAE,CAAA,CACrEI,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,WAAW,CAAC,QAAQE,CAAAA,CAAWP,CAAAA,CAAE,UAAU,CAAC,CAAA,CAAE,CAAA,CACrEI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,OAAO,CAAC,YAAYL,CAAAA,CAAE,IAAA,EAAM,OAASA,CAAAA,CAAE,IAAA,CAAK,KAAK,IAAI,CAAA,CAAIK,EAAM,GAAA,CAAI,MAAM,CAAC,CAAA,CAAE,CAAA,CACnGD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,OAAA,EAAUL,EAAE,MAAA,CAASK,CAAAA,CAAM,MAAM,KAAK,CAAA,CAAIA,EAAM,GAAA,CAAI,IAAI,CAAC,CAAA,CAAE,CAAA,CAC5FD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,YAAY,CAAC,OAAOL,CAAAA,CAAE,SAAA,CAAYK,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,EAAM,GAAA,CAAI,IAAI,CAAC,CAAA,CAAE,CAAA,CAC/FD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,OAAO,CAAC,YAAYL,CAAAA,CAAE,WAAA,EAAeK,EAAM,GAAA,CAAI,SAAS,CAAC,CAAA,CAAE,CAAA,CAClFD,CAAAA,CAAO,EAAE,EACX","file":"storage-info-BV7VXGTF.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes, formatDate } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface FileInfo {\n name: string\n size: number\n mime_type: string\n content_hash: string\n created_at: string\n updated_at: string\n tags: string[]\n shared: boolean\n published: boolean\n scan_status: string\n}\n\nexport default async function storageInfo(path: string): Promise<void> {\n const data = await apiGet<{ file: FileInfo }>(`/api/v1/storage/info?path=${encodeURIComponent(path)}`, { authenticated: true })\n const f = data.file\n\n if (isJsonMode()) {\n logJSON(f)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(f.name)}`)\n logRaw(chalk.dim(' ───'.repeat(10)))\n logRaw(` ${chalk.bold('Size:')} ${formatBytes(f.size)}`)\n logRaw(` ${chalk.bold('Type:')} ${f.mime_type}`)\n logRaw(` ${chalk.bold('Hash:')} ${chalk.dim(f.content_hash?.slice(0, 16) || '-')}`)\n logRaw(` ${chalk.bold('Created:')} ${formatDate(f.created_at)}`)\n logRaw(` ${chalk.bold('Modified:')} ${formatDate(f.updated_at)}`)\n logRaw(` ${chalk.bold('Tags:')} ${f.tags?.length ? f.tags.join(', ') : chalk.dim('none')}`)\n logRaw(` ${chalk.bold('Shared:')} ${f.shared ? chalk.green('yes') : chalk.dim('no')}`)\n logRaw(` ${chalk.bold('Published:')} ${f.published ? chalk.green('yes') : chalk.dim('no')}`)\n logRaw(` ${chalk.bold('Scan:')} ${f.scan_status || chalk.dim('pending')}`)\n logRaw('')\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import {a as a$2}from'./chunk-THMWE2I6.js';import {c as c$1,a as a$1}from'./chunk-FZKCZRJZ.js';import'./chunk-QT7R3AXE.js';import {b as b$1}from'./chunk-2RMLR54M.js';import a from'chalk';var _="https://aouqcwbdoyrccjcrhzzi.supabase.co",b="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImFvdXFjd2Jkb3lyY2NqY3JoenppIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDI5NjAyMTEsImV4cCI6MjA1ODUzNjIxMX0.b_VHC6uP3Efw3o_yibCoZKmsCIVZgOJ4FUF1NK-nd7U";async function c(r,o,t){let i=`${_}/rest/v1/${r}?${o}`,s=await fetch(i,{headers:{apikey:b,Authorization:`Bearer ${t}`}});if(!s.ok)throw new Error(`Supabase query failed: ${s.status} ${await s.text()}`);return s.json()}async function I(r,o){let t=await b$1();if(!t)throw new Error("Not logged in. Run `squidcloud auth login` first.");let i=r||"",s=i==="",u=`select=*&user_id=eq.${t.user.id}&${s?"parent_folder=is.null":`parent_folder=eq.${i}`}&is_deleted=eq.false&order=name.asc`,f=`select=*&user_id=eq.${t.user.id}&${s?"parent_folder=is.null":`parent_folder=eq.${i}`}&order=name.asc`,[g,y]=await Promise.all([c("files",u,t.access_token),c("folders",f,t.access_token)]),n=[...y.map(e=>({name:e.name,type:"folder",size:0,mime_type:"",updated_at:e.updated_at})),...g.map(e=>({name:e.name,type:"file",size:e.size,mime_type:e.type,updated_at:e.updated_at,tags:e.tags||void 0,shared:e.shared||void 0}))].map(e=>({name:e.type==="folder"?a.hex("#4FC3F7")(e.name+"/"):e.name,type:e.type==="folder"?a.dim("dir"):e.type,size:e.type==="file"?a$1(e.size):a.dim("-"),mime:e.type==="file"?a.dim(e.mime_type):"",modified:e.updated_at?c$1(e.updated_at):"",tags:e.tags?.length?a.dim(e.tags.join(",")):""}));if(o?.long)console.log(a$2(n,[{key:"name",label:"Name"},{key:"type",label:"Type"},{key:"size",label:"Size"},{key:"mime",label:"MIME"},{key:"modified",label:"Modified"},{key:"tags",label:"Tags"}]));else for(let e of n)console.log(e.name);}
2
+ export{I as default};//# sourceMappingURL=storage-ls-HIVJWOV6.js.map
3
+ //# sourceMappingURL=storage-ls-HIVJWOV6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/storage/storage-ls.ts"],"names":["SUPABASE_URL","ANON_KEY","fetchFromSupabase","table","query","accessToken","url","response","storageLs","path","options","session","loadSession","parentFolder","isRoot","filesQuery","foldersQuery","files","folders","rows","f","chalk","formatBytes","formatRelative","renderTable","row"],"mappings":"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","file":"storage-ls-HIVJWOV6.js","sourcesContent":["import { loadSession } from '../../lib/auth/session.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatBytes, formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\nconst SUPABASE_URL = 'https://aouqcwbdoyrccjcrhzzi.supabase.co'\nconst ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImFvdXFjd2Jkb3lyY2NqY3JoenppIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDI5NjAyMTEsImV4cCI6MjA1ODUzNjIxMX0.b_VHC6uP3Efw3o_yibCoZKmsCIVZgOJ4FUF1NK-nd7U'\n\ninterface FileRow {\n id: string\n name: string\n type: string\n size: number\n updated_at: string\n parent_folder: string | null\n tags: string[] | null\n shared: boolean | null\n is_deleted: boolean\n}\n\ninterface FolderRow {\n id: string\n name: string\n parent_folder: string | null\n updated_at: string\n}\n\ninterface StorageEntry {\n name: string\n type: 'file' | 'folder'\n size: number\n mime_type: string\n updated_at: string\n tags?: string[]\n shared?: boolean\n}\n\nasync function fetchFromSupabase<T>(table: string, query: string, accessToken: string): Promise<T[]> {\n const url = `${SUPABASE_URL}/rest/v1/${table}?${query}`\n const response = await fetch(url, {\n headers: {\n 'apikey': ANON_KEY,\n 'Authorization': `Bearer ${accessToken}`,\n },\n })\n if (!response.ok) {\n throw new Error(`Supabase query failed: ${response.status} ${await response.text()}`)\n }\n return response.json()\n}\n\nexport default async function storageLs(path?: string, options?: { long?: boolean; recursive?: boolean }): Promise<void> {\n const session = await loadSession()\n if (!session) {\n throw new Error('Not logged in. Run `squidcloud auth login` first.')\n }\n\n const parentFolder = path || ''\n const isRoot = parentFolder === ''\n\n const filesQuery = `select=*&user_id=eq.${session.user.id}&${isRoot ? 'parent_folder=is.null' : `parent_folder=eq.${parentFolder}`}&is_deleted=eq.false&order=name.asc`\n\n const foldersQuery = `select=*&user_id=eq.${session.user.id}&${isRoot ? 'parent_folder=is.null' : `parent_folder=eq.${parentFolder}`}&order=name.asc`\n\n const [files, folders] = await Promise.all([\n fetchFromSupabase<FileRow>('files', filesQuery, session.access_token),\n fetchFromSupabase<FolderRow>('folders', foldersQuery, session.access_token),\n ])\n\n const entries: StorageEntry[] = [\n ...folders.map(f => ({\n name: f.name,\n type: 'folder' as const,\n size: 0,\n mime_type: '',\n updated_at: f.updated_at,\n })),\n ...files.map(f => ({\n name: f.name,\n type: 'file' as const,\n size: f.size,\n mime_type: f.type,\n updated_at: f.updated_at,\n tags: f.tags || undefined,\n shared: f.shared || undefined,\n })),\n ]\n\n const rows = entries.map(e => ({\n name: e.type === 'folder' ? chalk.hex('#4FC3F7')(e.name + '/') : e.name,\n type: e.type === 'folder' ? chalk.dim('dir') : e.type,\n size: e.type === 'file' ? formatBytes(e.size) : chalk.dim('-'),\n mime: e.type === 'file' ? chalk.dim(e.mime_type) : '',\n modified: e.updated_at ? formatRelative(e.updated_at) : '',\n tags: e.tags?.length ? chalk.dim(e.tags.join(',')) : '',\n }))\n\n if (options?.long) {\n console.log(renderTable(rows, [\n { key: 'name', label: 'Name' },\n { key: 'type', label: 'Type' },\n { key: 'size', label: 'Size' },\n { key: 'mime', label: 'MIME' },\n { key: 'modified', label: 'Modified' },\n { key: 'tags', label: 'Tags' },\n ]))\n } else {\n for (const row of rows) {\n console.log(row.name)\n }\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$1}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';async function a(r){let e=a$1(`Creating folder ${r}...`);e.start(),await d("/api/v1/storage/mkdir",{path:r},{authenticated:true}),e.succeed(),g(`Created folder ${r}`);}export{a as default};//# sourceMappingURL=storage-mkdir-GRKUOWAJ.js.map
2
+ //# sourceMappingURL=storage-mkdir-GRKUOWAJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/storage/storage-mkdir.ts"],"names":["storageMkdir","path","spinner","createSpinner","apiPost","logSuccess"],"mappings":"mOAIA,eAAOA,CAAAA,CAAoCC,CAAAA,CAA6B,CACtE,IAAMC,EAAUC,GAAAA,CAAc,CAAA,gBAAA,EAAmBF,CAAI,CAAA,GAAA,CAAK,CAAA,CAC1DC,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,uBAAA,CAAyB,CAAE,IAAA,CAAAH,CAAK,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACxEC,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,eAAA,EAAkBJ,CAAI,EAAE,EACrC","file":"storage-mkdir-5IXAS4YP.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 storageMkdir(path: string): Promise<void> {\n const spinner = createSpinner(`Creating folder ${path}...`)\n spinner.start()\n await apiPost('/api/v1/storage/mkdir', { path }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Created folder ${path}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/storage/storage-mkdir.ts"],"names":["storageMkdir","path","spinner","createSpinner","apiPost","logSuccess"],"mappings":"mOAIA,eAAOA,CAAAA,CAAoCC,CAAAA,CAA6B,CACtE,IAAMC,EAAUC,GAAAA,CAAc,CAAA,gBAAA,EAAmBF,CAAI,CAAA,GAAA,CAAK,CAAA,CAC1DC,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,uBAAA,CAAyB,CAAE,IAAA,CAAAH,CAAK,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACxEC,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,eAAA,EAAkBJ,CAAI,EAAE,EACrC","file":"storage-mkdir-GRKUOWAJ.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 storageMkdir(path: string): Promise<void> {\n const spinner = createSpinner(`Creating folder ${path}...`)\n spinner.start()\n await apiPost('/api/v1/storage/mkdir', { path }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Created folder ${path}`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$1}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';async function a(t,i){let o=a$1(`Moving ${t} \u2192 ${i}...`);o.start(),await d("/api/v1/storage/move",{source:t,destination:i},{authenticated:true}),o.succeed(),g(`Moved ${t} \u2192 ${i}`);}export{a as default};//# sourceMappingURL=storage-mv-RYW5TXAH.js.map
2
+ //# sourceMappingURL=storage-mv-RYW5TXAH.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/storage/storage-mv.ts"],"names":["storageMv","source","dest","spinner","createSpinner","apiPost","logSuccess"],"mappings":"mOAIA,eAAOA,EAAiCC,CAAAA,CAAgBC,CAAAA,CAA6B,CACnF,IAAMC,EAAUC,GAAAA,CAAc,CAAA,OAAA,EAAUH,CAAM,CAAA,QAAA,EAAMC,CAAI,CAAA,GAAA,CAAK,CAAA,CAC7DC,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,MAAA,CAAAJ,EAAQ,WAAA,CAAaC,CAAK,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC5FC,CAAAA,CAAQ,OAAA,GACRG,CAAAA,CAAW,CAAA,MAAA,EAASL,CAAM,CAAA,QAAA,EAAMC,CAAI,EAAE,EACxC","file":"storage-mv-4DCYMNNI.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 storageMv(source: string, dest: string): Promise<void> {\n const spinner = createSpinner(`Moving ${source} → ${dest}...`)\n spinner.start()\n await apiPost('/api/v1/storage/move', { source, destination: dest }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Moved ${source} → ${dest}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/storage/storage-mv.ts"],"names":["storageMv","source","dest","spinner","createSpinner","apiPost","logSuccess"],"mappings":"mOAIA,eAAOA,EAAiCC,CAAAA,CAAgBC,CAAAA,CAA6B,CACnF,IAAMC,EAAUC,GAAAA,CAAc,CAAA,OAAA,EAAUH,CAAM,CAAA,QAAA,EAAMC,CAAI,CAAA,GAAA,CAAK,CAAA,CAC7DC,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,MAAA,CAAAJ,EAAQ,WAAA,CAAaC,CAAK,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC5FC,CAAAA,CAAQ,OAAA,GACRG,CAAAA,CAAW,CAAA,MAAA,EAASL,CAAM,CAAA,QAAA,EAAMC,CAAI,EAAE,EACxC","file":"storage-mv-RYW5TXAH.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 storageMv(source: string, dest: string): Promise<void> {\n const spinner = createSpinner(`Moving ${source} → ${dest}...`)\n spinner.start()\n await apiPost('/api/v1/storage/move', { source, destination: dest }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Moved ${source} → ${dest}`)\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-PSJQAIDB.js';import {f}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-W6CRHANC.js';import s from'inquirer';async function c(e,r){if(r?.recursive){let{confirm:a}=await s.prompt([{type:"confirm",name:"confirm",message:`Delete entire folder "${e}" and all contents?`,default:false}]);if(!a)return}let t=a(`Deleting ${e}...`);t.start(),await f(`/api/v1/storage/rm?path=${encodeURIComponent(e)}&recursive=${r?.recursive||false}`,{authenticated:true}),t.succeed(),g(`Deleted ${e}`);}export{c as default};//# sourceMappingURL=storage-rm-5K7F7ZP7.js.map
2
- //# sourceMappingURL=storage-rm-5K7F7ZP7.js.map
1
+ import {a}from'./chunk-PSJQAIDB.js';import {f}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import s from'inquirer';async function c(e,r){if(r?.recursive){let{confirm:a}=await s.prompt([{type:"confirm",name:"confirm",message:`Delete entire folder "${e}" and all contents?`,default:false}]);if(!a)return}let t=a(`Deleting ${e}...`);t.start(),await f(`/api/v1/storage/rm?path=${encodeURIComponent(e)}&recursive=${r?.recursive||false}`,{authenticated:true}),t.succeed(),g(`Deleted ${e}`);}export{c as default};//# sourceMappingURL=storage-rm-PLBQC4ED.js.map
2
+ //# sourceMappingURL=storage-rm-PLBQC4ED.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/storage/storage-rm.ts"],"names":["storageRm","path","options","confirm","inquirer","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"oPAKA,eAAOA,CAAAA,CAAiCC,EAAcC,CAAAA,CAAkD,CACtG,GAAIA,CAAAA,EAAS,UAAW,CACtB,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,KAAM,SAAA,CACN,OAAA,CAAS,CAAA,sBAAA,EAAyBH,CAAI,sBACtC,OAAA,CAAS,KACX,CAAC,CAAC,EACF,GAAI,CAACE,CAAAA,CAAS,MAChB,CACA,IAAME,CAAAA,CAAUC,CAAAA,CAAc,YAAYL,CAAI,CAAA,GAAA,CAAK,CAAA,CACnDI,CAAAA,CAAQ,OAAM,CACd,MAAME,CAAAA,CAAU,CAAA,wBAAA,EAA2B,mBAAmBN,CAAI,CAAC,CAAA,WAAA,EAAcC,CAAAA,EAAS,SAAA,EAAa,KAAK,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,CAAA,CACvIG,CAAAA,CAAQ,SAAQ,CAChBG,CAAAA,CAAW,CAAA,QAAA,EAAWP,CAAI,EAAE,EAC9B","file":"storage-rm-5K7F7ZP7.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiDelete } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function storageRm(path: string, options?: { recursive?: boolean }): Promise<void> {\n if (options?.recursive) {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: `Delete entire folder \"${path}\" and all contents?`,\n default: false,\n }])\n if (!confirm) return\n }\n const spinner = createSpinner(`Deleting ${path}...`)\n spinner.start()\n await apiDelete(`/api/v1/storage/rm?path=${encodeURIComponent(path)}&recursive=${options?.recursive || false}`, { authenticated: true })\n spinner.succeed()\n logSuccess(`Deleted ${path}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/storage/storage-rm.ts"],"names":["storageRm","path","options","confirm","inquirer","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"oPAKA,eAAOA,CAAAA,CAAiCC,EAAcC,CAAAA,CAAkD,CACtG,GAAIA,CAAAA,EAAS,UAAW,CACtB,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,KAAM,SAAA,CACN,OAAA,CAAS,CAAA,sBAAA,EAAyBH,CAAI,sBACtC,OAAA,CAAS,KACX,CAAC,CAAC,EACF,GAAI,CAACE,CAAAA,CAAS,MAChB,CACA,IAAME,CAAAA,CAAUC,CAAAA,CAAc,YAAYL,CAAI,CAAA,GAAA,CAAK,CAAA,CACnDI,CAAAA,CAAQ,OAAM,CACd,MAAME,CAAAA,CAAU,CAAA,wBAAA,EAA2B,mBAAmBN,CAAI,CAAC,CAAA,WAAA,EAAcC,CAAAA,EAAS,SAAA,EAAa,KAAK,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,CAAA,CACvIG,CAAAA,CAAQ,SAAQ,CAChBG,CAAAA,CAAW,CAAA,QAAA,EAAWP,CAAI,EAAE,EAC9B","file":"storage-rm-PLBQC4ED.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiDelete } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function storageRm(path: string, options?: { recursive?: boolean }): Promise<void> {\n if (options?.recursive) {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: `Delete entire folder \"${path}\" and all contents?`,\n default: false,\n }])\n if (!confirm) return\n }\n const spinner = createSpinner(`Deleting ${path}...`)\n spinner.start()\n await apiDelete(`/api/v1/storage/rm?path=${encodeURIComponent(path)}&recursive=${options?.recursive || false}`, { authenticated: true })\n spinner.succeed()\n logSuccess(`Deleted ${path}`)\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {c}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import {a as a$1}from'./chunk-THMWE2I6.js';import {c as c$1,a}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-W6CRHANC.js';import m from'chalk';async function n(r){let s=((await c(`/api/v1/storage/search?q=${encodeURIComponent(r)}`,{authenticated:true})).results||[]).map(e=>({name:e.name,path:m.dim(e.path),type:e.type,size:a(e.size),modified:e.updated_at?c$1(e.updated_at):""}));console.log(a$1(s,[{key:"name",label:"Name"},{key:"path",label:"Path"},{key:"type",label:"Type"},{key:"size",label:"Size"},{key:"modified",label:"Modified"}]));}export{n as default};//# sourceMappingURL=storage-search-FCNFG2BS.js.map
2
- //# sourceMappingURL=storage-search-FCNFG2BS.js.map
1
+ import {c}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import {a as a$1}from'./chunk-THMWE2I6.js';import {c as c$1,a}from'./chunk-FZKCZRJZ.js';import'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import m from'chalk';async function n(r){let s=((await c(`/api/v1/storage/search?q=${encodeURIComponent(r)}`,{authenticated:true})).results||[]).map(e=>({name:e.name,path:m.dim(e.path),type:e.type,size:a(e.size),modified:e.updated_at?c$1(e.updated_at):""}));console.log(a$1(s,[{key:"name",label:"Name"},{key:"path",label:"Path"},{key:"type",label:"Type"},{key:"size",label:"Size"},{key:"modified",label:"Modified"}]));}export{n as default};//# sourceMappingURL=storage-search-EKYRVCY2.js.map
2
+ //# sourceMappingURL=storage-search-EKYRVCY2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/storage/storage-search.ts"],"names":["storageSearch","query","rows","apiGet","r","chalk","formatBytes","formatRelative","renderTable"],"mappings":"iQAaA,eAAOA,EAAqCC,CAAAA,CAA8B,CAExE,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,EAAoC,CAAA,yBAAA,EAA4B,kBAAA,CAAmBF,CAAK,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACpH,OAAA,EAAW,EAAC,EAAG,GAAA,CAAIG,IAAM,CAC1C,IAAA,CAAMA,EAAE,IAAA,CACR,IAAA,CAAMC,EAAM,GAAA,CAAID,CAAAA,CAAE,IAAI,CAAA,CACtB,IAAA,CAAMA,EAAE,IAAA,CACR,IAAA,CAAME,EAAYF,CAAAA,CAAE,IAAI,EACxB,QAAA,CAAUA,CAAAA,CAAE,UAAA,CAAaG,GAAAA,CAAeH,EAAE,UAAU,CAAA,CAAI,EAC1D,CAAA,CAAE,CAAA,CACF,QAAQ,GAAA,CAAII,GAAAA,CAAYN,EAAM,CAC5B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,UAAA,CAAY,KAAA,CAAO,UAAW,CACvC,CAAC,CAAC,EACJ","file":"storage-search-FCNFG2BS.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatBytes, formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface SearchResult {\n name: string\n path: string\n type: string\n size: number\n updated_at: string\n}\n\nexport default async function storageSearch(query: string): Promise<void> {\n const data = await apiGet<{ results: SearchResult[] }>(`/api/v1/storage/search?q=${encodeURIComponent(query)}`, { authenticated: true })\n const rows = (data.results || []).map(r => ({\n name: r.name,\n path: chalk.dim(r.path),\n type: r.type,\n size: formatBytes(r.size),\n modified: r.updated_at ? formatRelative(r.updated_at) : '',\n }))\n console.log(renderTable(rows, [\n { key: 'name', label: 'Name' },\n { key: 'path', label: 'Path' },\n { key: 'type', label: 'Type' },\n { key: 'size', label: 'Size' },\n { key: 'modified', label: 'Modified' },\n ]))\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/storage/storage-search.ts"],"names":["storageSearch","query","rows","apiGet","r","chalk","formatBytes","formatRelative","renderTable"],"mappings":"iQAaA,eAAOA,EAAqCC,CAAAA,CAA8B,CAExE,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,EAAoC,CAAA,yBAAA,EAA4B,kBAAA,CAAmBF,CAAK,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACpH,OAAA,EAAW,EAAC,EAAG,GAAA,CAAIG,IAAM,CAC1C,IAAA,CAAMA,EAAE,IAAA,CACR,IAAA,CAAMC,EAAM,GAAA,CAAID,CAAAA,CAAE,IAAI,CAAA,CACtB,IAAA,CAAMA,EAAE,IAAA,CACR,IAAA,CAAME,EAAYF,CAAAA,CAAE,IAAI,EACxB,QAAA,CAAUA,CAAAA,CAAE,UAAA,CAAaG,GAAAA,CAAeH,EAAE,UAAU,CAAA,CAAI,EAC1D,CAAA,CAAE,CAAA,CACF,QAAQ,GAAA,CAAII,GAAAA,CAAYN,EAAM,CAC5B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,IAAK,UAAA,CAAY,KAAA,CAAO,UAAW,CACvC,CAAC,CAAC,EACJ","file":"storage-search-EKYRVCY2.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatBytes, formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface SearchResult {\n name: string\n path: string\n type: string\n size: number\n updated_at: string\n}\n\nexport default async function storageSearch(query: string): Promise<void> {\n const data = await apiGet<{ results: SearchResult[] }>(`/api/v1/storage/search?q=${encodeURIComponent(query)}`, { authenticated: true })\n const rows = (data.results || []).map(r => ({\n name: r.name,\n path: chalk.dim(r.path),\n type: r.type,\n size: formatBytes(r.size),\n modified: r.updated_at ? formatRelative(r.updated_at) : '',\n }))\n console.log(renderTable(rows, [\n { key: 'name', label: 'Name' },\n { key: 'path', label: 'Path' },\n { key: 'type', label: 'Type' },\n { key: 'size', label: 'Size' },\n { key: 'modified', label: 'Modified' },\n ]))\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import'./chunk-THMWE2I6.js';import {f,m,g,c as c$1}from'./chunk-QT7R3AXE.js';import'./chunk-W6CRHANC.js';import c from'clipboardy';import l from'chalk';async function u(i,r){let t=a(`Creating share link for ${i}...`);t.start();let e=await d("/api/v1/storage/share",{path:i,expires_in:r?.expires,password:r?.password,max_views:r?.views,burn_after_reading:r?.burn},{authenticated:true});t.stop();try{await c.write(e.url);}catch{}if(f()){m(e);return}g("Share link created!"),console.log(` ${l.hex("#4FC3F7")(e.url)} ${c$1("")}`);}export{u as default};//# sourceMappingURL=storage-share-4PVM4QIC.js.map
2
- //# sourceMappingURL=storage-share-4PVM4QIC.js.map
1
+ import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {f,m,g,c as c$1}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import c from'clipboardy';import l from'chalk';async function u(i,r){let t=a(`Creating share link for ${i}...`);t.start();let e=await d("/api/v1/storage/share",{path:i,expires_in:r?.expires,password:r?.password,max_views:r?.views,burn_after_reading:r?.burn},{authenticated:true});t.stop();try{await c.write(e.url);}catch{}if(f()){m(e);return}g("Share link created!"),console.log(` ${l.hex("#4FC3F7")(e.url)} ${c$1("")}`);}export{u as default};//# sourceMappingURL=storage-share-OENZM4QY.js.map
2
+ //# sourceMappingURL=storage-share-OENZM4QY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/storage/storage-share.ts"],"names":["storageShare","path","options","spinner","createSpinner","result","apiPost","clipboard","isJsonMode","logJSON","logSuccess","chalk","copied"],"mappings":"wRAQA,eAAOA,EAAoCC,CAAAA,CAAcC,CAAAA,CAAkG,CACzJ,IAAMC,EAAUC,CAAAA,CAAc,CAAA,wBAAA,EAA2BH,CAAI,CAAA,GAAA,CAAK,CAAA,CAClEE,EAAQ,KAAA,EAAM,CACd,IAAME,CAAAA,CAAS,MAAMC,CAAAA,CAA2C,uBAAA,CAAyB,CACvF,IAAA,CAAAL,CAAAA,CACA,WAAYC,CAAAA,EAAS,OAAA,CACrB,SAAUA,CAAAA,EAAS,QAAA,CACnB,UAAWA,CAAAA,EAAS,KAAA,CACpB,mBAAoBA,CAAAA,EAAS,IAC/B,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,EAC1BC,CAAAA,CAAQ,IAAA,GAER,GAAI,CACF,MAAMI,CAAAA,CAAU,KAAA,CAAMF,EAAO,GAAG,EAClC,MAAQ,CAER,CAEA,GAAIG,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQJ,CAAM,CAAA,CACd,MACF,CAEAK,CAAAA,CAAW,qBAAqB,EAChC,OAAA,CAAQ,GAAA,CAAI,KAAKC,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAEN,CAAAA,CAAO,GAAG,CAAC,CAAA,CAAA,EAAIO,IAAO,EAAE,CAAC,EAAE,EACnE","file":"storage-share-4PVM4QIC.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport clipboard from 'clipboardy'\nimport chalk from 'chalk'\nimport { copied } from '../../lib/output/brand.js'\n\nexport default async function storageShare(path: string, options?: { expires?: string; password?: string; views?: number; burn?: boolean }): Promise<void> {\n const spinner = createSpinner(`Creating share link for ${path}...`)\n spinner.start()\n const result = await apiPost<{ url: string; share_id: string }>('/api/v1/storage/share', {\n path,\n expires_in: options?.expires,\n password: options?.password,\n max_views: options?.views,\n burn_after_reading: options?.burn,\n }, { authenticated: true })\n spinner.stop()\n\n try {\n await clipboard.write(result.url)\n } catch {\n // ignore\n }\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n\n logSuccess(`Share link created!`)\n console.log(` ${chalk.hex('#4FC3F7')(result.url)} ${copied('')}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/storage/storage-share.ts"],"names":["storageShare","path","options","spinner","createSpinner","result","apiPost","clipboard","isJsonMode","logJSON","logSuccess","chalk","copied"],"mappings":"wRAQA,eAAOA,EAAoCC,CAAAA,CAAcC,CAAAA,CAAkG,CACzJ,IAAMC,EAAUC,CAAAA,CAAc,CAAA,wBAAA,EAA2BH,CAAI,CAAA,GAAA,CAAK,CAAA,CAClEE,EAAQ,KAAA,EAAM,CACd,IAAME,CAAAA,CAAS,MAAMC,CAAAA,CAA2C,uBAAA,CAAyB,CACvF,IAAA,CAAAL,CAAAA,CACA,WAAYC,CAAAA,EAAS,OAAA,CACrB,SAAUA,CAAAA,EAAS,QAAA,CACnB,UAAWA,CAAAA,EAAS,KAAA,CACpB,mBAAoBA,CAAAA,EAAS,IAC/B,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,EAC1BC,CAAAA,CAAQ,IAAA,GAER,GAAI,CACF,MAAMI,CAAAA,CAAU,KAAA,CAAMF,EAAO,GAAG,EAClC,MAAQ,CAER,CAEA,GAAIG,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQJ,CAAM,CAAA,CACd,MACF,CAEAK,CAAAA,CAAW,qBAAqB,EAChC,OAAA,CAAQ,GAAA,CAAI,KAAKC,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAEN,CAAAA,CAAO,GAAG,CAAC,CAAA,CAAA,EAAIO,IAAO,EAAE,CAAC,EAAE,EACnE","file":"storage-share-OENZM4QY.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport clipboard from 'clipboardy'\nimport chalk from 'chalk'\nimport { copied } from '../../lib/output/brand.js'\n\nexport default async function storageShare(path: string, options?: { expires?: string; password?: string; views?: number; burn?: boolean }): Promise<void> {\n const spinner = createSpinner(`Creating share link for ${path}...`)\n spinner.start()\n const result = await apiPost<{ url: string; share_id: string }>('/api/v1/storage/share', {\n path,\n expires_in: options?.expires,\n password: options?.password,\n max_views: options?.views,\n burn_after_reading: options?.burn,\n }, { authenticated: true })\n spinner.stop()\n\n try {\n await clipboard.write(result.url)\n } catch {\n // ignore\n }\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n\n logSuccess(`Share link created!`)\n console.log(` ${chalk.hex('#4FC3F7')(result.url)} ${copied('')}`)\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import'./chunk-THMWE2I6.js';import {g as g$1}from'./chunk-QT7R3AXE.js';import'./chunk-W6CRHANC.js';async function g(a$1,e){if(e.add){let r=a(`Adding tag "${e.add}" to ${a$1}...`);r.start(),await d("/api/v1/storage/tags",{path:a$1,tag:e.add,action:"add"},{authenticated:true}),r.succeed(),g$1(`Tag "${e.add}" added to ${a$1}`);}if(e.remove){let r=a(`Removing tag "${e.remove}" from ${a$1}...`);r.start(),await d("/api/v1/storage/tags",{path:a$1,tag:e.remove,action:"remove"},{authenticated:true}),r.succeed(),g$1(`Tag "${e.remove}" removed from ${a$1}`);}}export{g as default};//# sourceMappingURL=storage-tag-SXSOQVY6.js.map
2
- //# sourceMappingURL=storage-tag-SXSOQVY6.js.map
1
+ import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g as g$1}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';async function g(a$1,e){if(e.add){let r=a(`Adding tag "${e.add}" to ${a$1}...`);r.start(),await d("/api/v1/storage/tags",{path:a$1,tag:e.add,action:"add"},{authenticated:true}),r.succeed(),g$1(`Tag "${e.add}" added to ${a$1}`);}if(e.remove){let r=a(`Removing tag "${e.remove}" from ${a$1}...`);r.start(),await d("/api/v1/storage/tags",{path:a$1,tag:e.remove,action:"remove"},{authenticated:true}),r.succeed(),g$1(`Tag "${e.remove}" removed from ${a$1}`);}}export{g as default};//# sourceMappingURL=storage-tag-7XTICDCD.js.map
2
+ //# sourceMappingURL=storage-tag-7XTICDCD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/storage/storage-tag.ts"],"names":["storageTag","path","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"mOAIA,eAAOA,CAAAA,CAAkCC,IAAcC,CAAAA,CAA2D,CAChH,GAAIA,CAAAA,CAAQ,GAAA,CAAK,CACf,IAAMC,CAAAA,CAAUC,EAAc,CAAA,YAAA,EAAeF,CAAAA,CAAQ,GAAG,CAAA,KAAA,EAAQD,GAAI,KAAK,CAAA,CACzEE,CAAAA,CAAQ,OAAM,CACd,MAAME,EAAQ,sBAAA,CAAwB,CAAE,KAAAJ,GAAAA,CAAM,GAAA,CAAKC,EAAQ,GAAA,CAAK,MAAA,CAAQ,KAAM,CAAA,CAAG,CAAE,cAAe,IAAK,CAAC,EACxGC,CAAAA,CAAQ,OAAA,GACRG,GAAAA,CAAW,CAAA,KAAA,EAAQJ,CAAAA,CAAQ,GAAG,CAAA,WAAA,EAAcD,GAAI,EAAE,EACpD,CACA,GAAIC,CAAAA,CAAQ,MAAA,CAAQ,CAClB,IAAMC,CAAAA,CAAUC,EAAc,CAAA,cAAA,EAAiBF,CAAAA,CAAQ,MAAM,CAAA,OAAA,EAAUD,GAAI,KAAK,CAAA,CAChFE,CAAAA,CAAQ,OAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,IAAA,CAAAJ,IAAM,GAAA,CAAKC,CAAAA,CAAQ,OAAQ,MAAA,CAAQ,QAAS,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC9GC,EAAQ,OAAA,EAAQ,CAChBG,IAAW,CAAA,KAAA,EAAQJ,CAAAA,CAAQ,MAAM,CAAA,eAAA,EAAkBD,GAAI,CAAA,CAAE,EAC3D,CACF","file":"storage-tag-SXSOQVY6.js","sourcesContent":["import { apiPost, apiDelete } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function storageTag(path: string, options: { add?: string; remove?: string }): Promise<void> {\n if (options.add) {\n const spinner = createSpinner(`Adding tag \"${options.add}\" to ${path}...`)\n spinner.start()\n await apiPost('/api/v1/storage/tags', { path, tag: options.add, action: 'add' }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Tag \"${options.add}\" added to ${path}`)\n }\n if (options.remove) {\n const spinner = createSpinner(`Removing tag \"${options.remove}\" from ${path}...`)\n spinner.start()\n await apiPost('/api/v1/storage/tags', { path, tag: options.remove, action: 'remove' }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Tag \"${options.remove}\" removed from ${path}`)\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/storage/storage-tag.ts"],"names":["storageTag","path","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"mOAIA,eAAOA,CAAAA,CAAkCC,IAAcC,CAAAA,CAA2D,CAChH,GAAIA,CAAAA,CAAQ,GAAA,CAAK,CACf,IAAMC,CAAAA,CAAUC,EAAc,CAAA,YAAA,EAAeF,CAAAA,CAAQ,GAAG,CAAA,KAAA,EAAQD,GAAI,KAAK,CAAA,CACzEE,CAAAA,CAAQ,OAAM,CACd,MAAME,EAAQ,sBAAA,CAAwB,CAAE,KAAAJ,GAAAA,CAAM,GAAA,CAAKC,EAAQ,GAAA,CAAK,MAAA,CAAQ,KAAM,CAAA,CAAG,CAAE,cAAe,IAAK,CAAC,EACxGC,CAAAA,CAAQ,OAAA,GACRG,GAAAA,CAAW,CAAA,KAAA,EAAQJ,CAAAA,CAAQ,GAAG,CAAA,WAAA,EAAcD,GAAI,EAAE,EACpD,CACA,GAAIC,CAAAA,CAAQ,MAAA,CAAQ,CAClB,IAAMC,CAAAA,CAAUC,EAAc,CAAA,cAAA,EAAiBF,CAAAA,CAAQ,MAAM,CAAA,OAAA,EAAUD,GAAI,KAAK,CAAA,CAChFE,CAAAA,CAAQ,OAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,IAAA,CAAAJ,IAAM,GAAA,CAAKC,CAAAA,CAAQ,OAAQ,MAAA,CAAQ,QAAS,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC9GC,EAAQ,OAAA,EAAQ,CAChBG,IAAW,CAAA,KAAA,EAAQJ,CAAAA,CAAQ,MAAM,CAAA,eAAA,EAAkBD,GAAI,CAAA,CAAE,EAC3D,CACF","file":"storage-tag-7XTICDCD.js","sourcesContent":["import { apiPost, apiDelete } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function storageTag(path: string, options: { add?: string; remove?: string }): Promise<void> {\n if (options.add) {\n const spinner = createSpinner(`Adding tag \"${options.add}\" to ${path}...`)\n spinner.start()\n await apiPost('/api/v1/storage/tags', { path, tag: options.add, action: 'add' }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Tag \"${options.add}\" added to ${path}`)\n }\n if (options.remove) {\n const spinner = createSpinner(`Removing tag \"${options.remove}\" from ${path}...`)\n spinner.start()\n await apiPost('/api/v1/storage/tags', { path, tag: options.remove, action: 'remove' }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Tag \"${options.remove}\" removed from ${path}`)\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-PSJQAIDB.js';import {f}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';async function s(e){let r=a(`Revoking share links for ${e}...`);r.start(),await f(`/api/v1/storage/share?path=${encodeURIComponent(e)}`,{authenticated:true}),r.succeed(),g(`All share links revoked for ${e}`);}export{s as default};//# sourceMappingURL=storage-unshare-6G6YPRPN.js.map
2
+ //# sourceMappingURL=storage-unshare-6G6YPRPN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/storage/storage-unshare.ts"],"names":["storageUnshare","path","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"4NAIA,eAAOA,CAAAA,CAAsCC,CAAAA,CAA6B,CACxE,IAAMC,EAAUC,CAAAA,CAAc,CAAA,yBAAA,EAA4BF,CAAI,CAAA,GAAA,CAAK,CAAA,CACnEC,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAU,CAAA,2BAAA,EAA8B,kBAAA,CAAmBH,CAAI,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACjGC,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,4BAAA,EAA+BJ,CAAI,EAAE,EAClD","file":"storage-unshare-EMXDT7DS.js","sourcesContent":["import { apiDelete } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function storageUnshare(path: string): Promise<void> {\n const spinner = createSpinner(`Revoking share links for ${path}...`)\n spinner.start()\n await apiDelete(`/api/v1/storage/share?path=${encodeURIComponent(path)}`, { authenticated: true })\n spinner.succeed()\n logSuccess(`All share links revoked for ${path}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/storage/storage-unshare.ts"],"names":["storageUnshare","path","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"4NAIA,eAAOA,CAAAA,CAAsCC,CAAAA,CAA6B,CACxE,IAAMC,EAAUC,CAAAA,CAAc,CAAA,yBAAA,EAA4BF,CAAI,CAAA,GAAA,CAAK,CAAA,CACnEC,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAU,CAAA,2BAAA,EAA8B,kBAAA,CAAmBH,CAAI,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACjGC,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,4BAAA,EAA+BJ,CAAI,EAAE,EAClD","file":"storage-unshare-6G6YPRPN.js","sourcesContent":["import { apiDelete } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function storageUnshare(path: string): Promise<void> {\n const spinner = createSpinner(`Revoking share links for ${path}...`)\n spinner.start()\n await apiDelete(`/api/v1/storage/share?path=${encodeURIComponent(path)}`, { authenticated: true })\n spinner.succeed()\n logSuccess(`All share links revoked for ${path}`)\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {a as a$2}from'./chunk-MKRWNV2T.js';import {a}from'./chunk-PSJQAIDB.js';import {g}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import'./chunk-THMWE2I6.js';import {a as a$1}from'./chunk-G4JU7IUC.js';import {j,f,m,g as g$1,i}from'./chunk-QT7R3AXE.js';import'./chunk-W6CRHANC.js';import s from'fs';import n from'path';import F from'chalk';import B from'cli-progress';import I from'ignore';async function N(C,P,l){let e=n.resolve(C),c=P||n.basename(e);s.existsSync(e)||(console.error(`File not found: ${e}`),process.exit(1));let v=s.statSync(e);if(v.isFile()){if(l?.dryRun){j(`[DRY-RUN] Would upload: ${e} \u2192 ${c}`);return}let t=a(`Uploading ${n.basename(e)}...`);t.start();let o=s.readFileSync(e),a$2=new FormData,i=new Blob([o]);a$2.append("file",i,n.basename(e));let f$1=await g(`/api/v1/storage/upload?path=${encodeURIComponent(c)}`,a$2,{authenticated:true});t.succeed(),f()?m(f$1):g$1(`Uploaded ${n.basename(e)} (${a$1(o.length)})`);return}if(v.isDirectory()){let a=function(r,d){let m=s.readdirSync(r,{withFileTypes:true});for(let p of m){let u=n.join(r,p.name),S=n.relative(d,u);t.ignores(S)||(p.isDirectory()?a(u,d):p.isFile()&&a$2(p.name)&&o.push({relative:S,absolute:u}));}};let t=I();l?.ignore&&t.add(l.ignore),t.add(".DS_Store"),t.add("node_modules"),t.add(".git");let o=[];if(a(e,e),o.length===0){i("No allowed files found to upload");return}if(l?.dryRun){j(`[DRY-RUN] Would upload ${o.length} files:`);for(let r of o)console.log(F.dim(` ${r.relative}`));return}let i$1=new B.SingleBar({format:`${F.hex("#7C4DFF")("\u25B8")} Uploading |${F.hex("#7C4DFF")("{bar}")}| {percentage}% | {value}/{total} files`,barCompleteChar:"\u2588",barIncompleteChar:"\u2591",hideCursor:true});i$1.start(o.length,0);let f$1=new FormData;for(let r of o){let d=s.readFileSync(r.absolute),m=new Blob([d]);f$1.append("files",m,r.relative);}let x=await g(`/api/v1/storage/upload?path=${encodeURIComponent(c)}`,f$1,{authenticated:true});i$1.update(o.length),i$1.stop(),f()?m(x):g$1(`Uploaded ${o.length} files to ${c}`);}}export{N as default};//# sourceMappingURL=storage-upload-EHOTOYS5.js.map
2
- //# sourceMappingURL=storage-upload-EHOTOYS5.js.map
1
+ import {a as a$2}from'./chunk-MKRWNV2T.js';import {a}from'./chunk-PSJQAIDB.js';import {g}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {a as a$1}from'./chunk-FZKCZRJZ.js';import {j,f,m,g as g$1,i}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import s from'fs';import n from'path';import F from'chalk';import B from'cli-progress';import I from'ignore';async function N(C,P,l){let e=n.resolve(C),c=P||n.basename(e);s.existsSync(e)||(console.error(`File not found: ${e}`),process.exit(1));let v=s.statSync(e);if(v.isFile()){if(l?.dryRun){j(`[DRY-RUN] Would upload: ${e} \u2192 ${c}`);return}let t=a(`Uploading ${n.basename(e)}...`);t.start();let o=s.readFileSync(e),a$2=new FormData,i=new Blob([o]);a$2.append("file",i,n.basename(e));let f$1=await g(`/api/v1/storage/upload?path=${encodeURIComponent(c)}`,a$2,{authenticated:true});t.succeed(),f()?m(f$1):g$1(`Uploaded ${n.basename(e)} (${a$1(o.length)})`);return}if(v.isDirectory()){let a=function(r,d){let m=s.readdirSync(r,{withFileTypes:true});for(let p of m){let u=n.join(r,p.name),S=n.relative(d,u);t.ignores(S)||(p.isDirectory()?a(u,d):p.isFile()&&a$2(p.name)&&o.push({relative:S,absolute:u}));}};let t=I();l?.ignore&&t.add(l.ignore),t.add(".DS_Store"),t.add("node_modules"),t.add(".git");let o=[];if(a(e,e),o.length===0){i("No allowed files found to upload");return}if(l?.dryRun){j(`[DRY-RUN] Would upload ${o.length} files:`);for(let r of o)console.log(F.dim(` ${r.relative}`));return}let i$1=new B.SingleBar({format:`${F.hex("#7C4DFF")("\u25B8")} Uploading |${F.hex("#7C4DFF")("{bar}")}| {percentage}% | {value}/{total} files`,barCompleteChar:"\u2588",barIncompleteChar:"\u2591",hideCursor:true});i$1.start(o.length,0);let f$1=new FormData;for(let r of o){let d=s.readFileSync(r.absolute),m=new Blob([d]);f$1.append("files",m,r.relative);}let x=await g(`/api/v1/storage/upload?path=${encodeURIComponent(c)}`,f$1,{authenticated:true});i$1.update(o.length),i$1.stop(),f()?m(x):g$1(`Uploaded ${o.length} files to ${c}`);}}export{N as default};//# sourceMappingURL=storage-upload-HW4QAENK.js.map
2
+ //# sourceMappingURL=storage-upload-HW4QAENK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/storage/storage-upload.ts"],"names":["storageUpload","local","remote","options","localPath","path","remotePath","fs","stat","logInfo","spinner","createSpinner","content","formData","blob","result","apiUpload","isJsonMode","logJSON","logSuccess","formatBytes","walk","dir","baseDir","entries","entry","fullPath","relative","ig","isAllowedFile","files","ignore","logWarn","f","chalk","progressBar","cliProgress"],"mappings":"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","file":"storage-upload-EHOTOYS5.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiPost, apiUpload } from '../../lib/api/client.js'\nimport { isAllowedFile } from '../../lib/deploy/allowlist.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logWarn, logJSON, logInfo } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\nimport cliProgress from 'cli-progress'\nimport ignore from 'ignore'\n\nexport default async function storageUpload(local: string, remote?: string, options?: { ignore?: string; dryRun?: boolean }): Promise<void> {\n const localPath = path.resolve(local)\n const remotePath = remote || path.basename(localPath)\n\n if (!fs.existsSync(localPath)) {\n console.error(`File not found: ${localPath}`)\n process.exit(1)\n }\n\n const stat = fs.statSync(localPath)\n\n if (stat.isFile()) {\n if (options?.dryRun) {\n logInfo(`[DRY-RUN] Would upload: ${localPath} → ${remotePath}`)\n return\n }\n const spinner = createSpinner(`Uploading ${path.basename(localPath)}...`)\n spinner.start()\n const content = fs.readFileSync(localPath)\n const formData = new FormData()\n const blob = new Blob([content])\n formData.append('file', blob, path.basename(localPath))\n const result = await apiUpload(`/api/v1/storage/upload?path=${encodeURIComponent(remotePath)}`, formData, { authenticated: true })\n spinner.succeed()\n if (isJsonMode()) logJSON(result)\n else logSuccess(`Uploaded ${path.basename(localPath)} (${formatBytes(content.length)})`)\n return\n }\n\n if (stat.isDirectory()) {\n const ig = ignore()\n if (options?.ignore) {\n ig.add(options.ignore)\n }\n ig.add('.DS_Store')\n ig.add('node_modules')\n ig.add('.git')\n\n const files: { relative: string; absolute: string }[] = []\n function walk(dir: string, baseDir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n const relative = path.relative(baseDir, fullPath)\n if (ig.ignores(relative)) continue\n if (entry.isDirectory()) {\n walk(fullPath, baseDir)\n } else if (entry.isFile() && isAllowedFile(entry.name)) {\n files.push({ relative, absolute: fullPath })\n }\n }\n }\n walk(localPath, localPath)\n\n if (files.length === 0) {\n logWarn('No allowed files found to upload')\n return\n }\n\n if (options?.dryRun) {\n logInfo(`[DRY-RUN] Would upload ${files.length} files:`)\n for (const f of files) {\n console.log(chalk.dim(` ${f.relative}`))\n }\n return\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${chalk.hex('#7C4DFF')('▸')} Uploading |${chalk.hex('#7C4DFF')('{bar}')}| {percentage}% | {value}/{total} files`,\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n })\n progressBar.start(files.length, 0)\n\n const formData = new FormData()\n for (const f of files) {\n const content = fs.readFileSync(f.absolute)\n const blob = new Blob([content])\n formData.append('files', blob, f.relative)\n }\n\n const result = await apiUpload(`/api/v1/storage/upload?path=${encodeURIComponent(remotePath)}`, formData, { authenticated: true })\n progressBar.update(files.length)\n progressBar.stop()\n\n if (isJsonMode()) logJSON(result)\n else logSuccess(`Uploaded ${files.length} files to ${remotePath}`)\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/storage/storage-upload.ts"],"names":["storageUpload","local","remote","options","localPath","path","remotePath","fs","stat","logInfo","spinner","createSpinner","content","formData","blob","result","apiUpload","isJsonMode","logJSON","logSuccess","formatBytes","walk","dir","baseDir","entries","entry","fullPath","relative","ig","isAllowedFile","files","ignore","logWarn","f","chalk","progressBar","cliProgress"],"mappings":"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","file":"storage-upload-HW4QAENK.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiPost, apiUpload } from '../../lib/api/client.js'\nimport { isAllowedFile } from '../../lib/deploy/allowlist.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logWarn, logJSON, logInfo } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\nimport cliProgress from 'cli-progress'\nimport ignore from 'ignore'\n\nexport default async function storageUpload(local: string, remote?: string, options?: { ignore?: string; dryRun?: boolean }): Promise<void> {\n const localPath = path.resolve(local)\n const remotePath = remote || path.basename(localPath)\n\n if (!fs.existsSync(localPath)) {\n console.error(`File not found: ${localPath}`)\n process.exit(1)\n }\n\n const stat = fs.statSync(localPath)\n\n if (stat.isFile()) {\n if (options?.dryRun) {\n logInfo(`[DRY-RUN] Would upload: ${localPath} → ${remotePath}`)\n return\n }\n const spinner = createSpinner(`Uploading ${path.basename(localPath)}...`)\n spinner.start()\n const content = fs.readFileSync(localPath)\n const formData = new FormData()\n const blob = new Blob([content])\n formData.append('file', blob, path.basename(localPath))\n const result = await apiUpload(`/api/v1/storage/upload?path=${encodeURIComponent(remotePath)}`, formData, { authenticated: true })\n spinner.succeed()\n if (isJsonMode()) logJSON(result)\n else logSuccess(`Uploaded ${path.basename(localPath)} (${formatBytes(content.length)})`)\n return\n }\n\n if (stat.isDirectory()) {\n const ig = ignore()\n if (options?.ignore) {\n ig.add(options.ignore)\n }\n ig.add('.DS_Store')\n ig.add('node_modules')\n ig.add('.git')\n\n const files: { relative: string; absolute: string }[] = []\n function walk(dir: string, baseDir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n const relative = path.relative(baseDir, fullPath)\n if (ig.ignores(relative)) continue\n if (entry.isDirectory()) {\n walk(fullPath, baseDir)\n } else if (entry.isFile() && isAllowedFile(entry.name)) {\n files.push({ relative, absolute: fullPath })\n }\n }\n }\n walk(localPath, localPath)\n\n if (files.length === 0) {\n logWarn('No allowed files found to upload')\n return\n }\n\n if (options?.dryRun) {\n logInfo(`[DRY-RUN] Would upload ${files.length} files:`)\n for (const f of files) {\n console.log(chalk.dim(` ${f.relative}`))\n }\n return\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${chalk.hex('#7C4DFF')('▸')} Uploading |${chalk.hex('#7C4DFF')('{bar}')}| {percentage}% | {value}/{total} files`,\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n })\n progressBar.start(files.length, 0)\n\n const formData = new FormData()\n for (const f of files) {\n const content = fs.readFileSync(f.absolute)\n const blob = new Blob([content])\n formData.append('files', blob, f.relative)\n }\n\n const result = await apiUpload(`/api/v1/storage/upload?path=${encodeURIComponent(remotePath)}`, formData, { authenticated: true })\n progressBar.update(files.length)\n progressBar.stop()\n\n if (isJsonMode()) logJSON(result)\n else logSuccess(`Uploaded ${files.length} files to ${remotePath}`)\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import {a}from'./chunk-THMWE2I6.js';import {d,b}from'./chunk-FZKCZRJZ.js';import'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import m from'chalk';async function r(){let o=((await c("/api/v1/time/list",{authenticated:true})).locked||[]).map(e=>({path:e.path,unlocks:b(e.unlock_at),remaining:e.time_remaining_ms>0?d(e.time_remaining_ms):m.green("unlocked")}));console.log(a(o,[{key:"path",label:"File"},{key:"unlocks",label:"Unlocks"},{key:"remaining",label:"Time Remaining"}]));}export{r as default};//# sourceMappingURL=time-list-HUWDZZ27.js.map
2
+ //# sourceMappingURL=time-list-HUWDZZ27.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/time/time-list.ts"],"names":["timeList","rows","apiGet","l","formatDate","formatCountdown","chalk","renderTable"],"mappings":"mPAWA,eAAOA,CAAAA,EAAiD,CAEtD,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAiC,mBAAA,CAAqB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC7E,MAAA,EAAU,EAAC,EAAG,GAAA,CAAIC,CAAAA,GAAM,CACzC,IAAA,CAAMA,EAAE,IAAA,CACR,OAAA,CAASC,CAAAA,CAAWD,CAAAA,CAAE,SAAS,CAAA,CAC/B,SAAA,CAAWA,CAAAA,CAAE,kBAAoB,CAAA,CAAIE,CAAAA,CAAgBF,CAAAA,CAAE,iBAAiB,CAAA,CAAIG,CAAAA,CAAM,KAAA,CAAM,UAAU,CACpG,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,GAAA,CAAIC,CAAAA,CAAYN,CAAAA,CAAM,CAC5B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACnC,CAAE,GAAA,CAAK,WAAA,CAAa,KAAA,CAAO,gBAAiB,CAC9C,CAAC,CAAC,EACJ","file":"time-list-2XMDLMRC.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatDate, formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface LockedFile {\n path: string\n unlock_at: string\n time_remaining_ms: number\n}\n\nexport default async function timeList(): Promise<void> {\n const data = await apiGet<{ locked: LockedFile[] }>('/api/v1/time/list', { authenticated: true })\n const rows = (data.locked || []).map(l => ({\n path: l.path,\n unlocks: formatDate(l.unlock_at),\n remaining: l.time_remaining_ms > 0 ? formatCountdown(l.time_remaining_ms) : chalk.green('unlocked'),\n }))\n console.log(renderTable(rows, [\n { key: 'path', label: 'File' },\n { key: 'unlocks', label: 'Unlocks' },\n { key: 'remaining', label: 'Time Remaining' },\n ]))\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/time/time-list.ts"],"names":["timeList","rows","apiGet","l","formatDate","formatCountdown","chalk","renderTable"],"mappings":"mPAWA,eAAOA,CAAAA,EAAiD,CAEtD,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAiC,mBAAA,CAAqB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC7E,MAAA,EAAU,EAAC,EAAG,GAAA,CAAIC,CAAAA,GAAM,CACzC,IAAA,CAAMA,EAAE,IAAA,CACR,OAAA,CAASC,CAAAA,CAAWD,CAAAA,CAAE,SAAS,CAAA,CAC/B,SAAA,CAAWA,CAAAA,CAAE,kBAAoB,CAAA,CAAIE,CAAAA,CAAgBF,CAAAA,CAAE,iBAAiB,CAAA,CAAIG,CAAAA,CAAM,KAAA,CAAM,UAAU,CACpG,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,GAAA,CAAIC,CAAAA,CAAYN,CAAAA,CAAM,CAC5B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACnC,CAAE,GAAA,CAAK,WAAA,CAAa,KAAA,CAAO,gBAAiB,CAC9C,CAAC,CAAC,EACJ","file":"time-list-HUWDZZ27.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatDate, formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface LockedFile {\n path: string\n unlock_at: string\n time_remaining_ms: number\n}\n\nexport default async function timeList(): Promise<void> {\n const data = await apiGet<{ locked: LockedFile[] }>('/api/v1/time/list', { authenticated: true })\n const rows = (data.locked || []).map(l => ({\n path: l.path,\n unlocks: formatDate(l.unlock_at),\n remaining: l.time_remaining_ms > 0 ? formatCountdown(l.time_remaining_ms) : chalk.green('unlocked'),\n }))\n console.log(renderTable(rows, [\n { key: 'path', label: 'File' },\n { key: 'unlocks', label: 'Unlocks' },\n { key: 'remaining', label: 'Time Remaining' },\n ]))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {f,m,g}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';async function s(i,t){let n=a(`Time-locking ${i} until ${t.until}...`);n.start();let u=await d("/api/v1/time/lock",{path:i,unlock_at:t.until},{authenticated:true});if(n.succeed(),f()){m(u);return}g(`Time-locked until ${t.until}`);}export{s as default};//# sourceMappingURL=time-lock-MZ6C6DMR.js.map
2
+ //# sourceMappingURL=time-lock-MZ6C6DMR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/time/time-lock.ts"],"names":["timeLock","path","options","spinner","createSpinner","result","apiPost","isJsonMode","logJSON","logSuccess"],"mappings":"gOAKA,eAAOA,CAAAA,CAAgCC,EAAcC,CAAAA,CAA2C,CAC9F,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,aAAA,EAAgBH,CAAI,CAAA,OAAA,EAAUC,CAAAA,CAAQ,KAAK,CAAA,GAAA,CAAK,CAAA,CAC9EC,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,EAAS,MAAMC,CAAAA,CAAgD,mBAAA,CAAqB,CACxF,IAAA,CAAAL,CAAAA,CACA,UAAWC,CAAAA,CAAQ,KACrB,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAE1B,GADAC,CAAAA,CAAQ,OAAA,EAAQ,CACZI,CAAAA,GAAc,CAChBC,CAAAA,CAAQH,CAAM,CAAA,CACd,MACF,CACAI,EAAW,CAAA,kBAAA,EAAqBP,CAAAA,CAAQ,KAAK,CAAA,CAAE,EACjD","file":"time-lock-WQKPTILH.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nexport default async function timeLock(path: string, options: { until: string }): Promise<void> {\n const spinner = createSpinner(`Time-locking ${path} until ${options.until}...`)\n spinner.start()\n const result = await apiPost<{ lock_id: string; unlock_at: string }>('/api/v1/time/lock', {\n path,\n unlock_at: options.until,\n }, { authenticated: true })\n spinner.succeed()\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n logSuccess(`Time-locked until ${options.until}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/time/time-lock.ts"],"names":["timeLock","path","options","spinner","createSpinner","result","apiPost","isJsonMode","logJSON","logSuccess"],"mappings":"gOAKA,eAAOA,CAAAA,CAAgCC,EAAcC,CAAAA,CAA2C,CAC9F,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,aAAA,EAAgBH,CAAI,CAAA,OAAA,EAAUC,CAAAA,CAAQ,KAAK,CAAA,GAAA,CAAK,CAAA,CAC9EC,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,EAAS,MAAMC,CAAAA,CAAgD,mBAAA,CAAqB,CACxF,IAAA,CAAAL,CAAAA,CACA,UAAWC,CAAAA,CAAQ,KACrB,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAE1B,GADAC,CAAAA,CAAQ,OAAA,EAAQ,CACZI,CAAAA,GAAc,CAChBC,CAAAA,CAAQH,CAAM,CAAA,CACd,MACF,CACAI,EAAW,CAAA,kBAAA,EAAqBP,CAAAA,CAAQ,KAAK,CAAA,CAAE,EACjD","file":"time-lock-MZ6C6DMR.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nexport default async function timeLock(path: string, options: { until: string }): Promise<void> {\n const spinner = createSpinner(`Time-locking ${path} until ${options.until}...`)\n spinner.start()\n const result = await apiPost<{ lock_id: string; unlock_at: string }>('/api/v1/time/lock', {\n path,\n unlock_at: options.until,\n }, { authenticated: true })\n spinner.succeed()\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n logSuccess(`Time-locked until ${options.until}`)\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-PSJQAIDB.js';import {c}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-W6CRHANC.js';import s from'fs';import p from'path';async function f(o){let t=a("Generating proof...");t.start();let a$1=await c(`/api/v1/time/proof?path=${encodeURIComponent(o)}`,{authenticated:true});t.succeed();let e=p.join(process.cwd(),`${p.basename(o)}.timeproof.json`);s.writeFileSync(e,JSON.stringify({proof:a$1.proof,generated_at:new Date().toISOString()},null,2)),g(`Existence proof saved to ${e}`);}export{f as default};//# sourceMappingURL=time-proof-4YZLG6NG.js.map
2
- //# sourceMappingURL=time-proof-4YZLG6NG.js.map
1
+ import {a}from'./chunk-PSJQAIDB.js';import {c}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import s from'fs';import p from'path';async function f(o){let t=a("Generating proof...");t.start();let a$1=await c(`/api/v1/time/proof?path=${encodeURIComponent(o)}`,{authenticated:true});t.succeed();let e=p.join(process.cwd(),`${p.basename(o)}.timeproof.json`);s.writeFileSync(e,JSON.stringify({proof:a$1.proof,generated_at:new Date().toISOString()},null,2)),g(`Existence proof saved to ${e}`);}export{f as default};//# sourceMappingURL=time-proof-G6IX5SMS.js.map
2
+ //# sourceMappingURL=time-proof-G6IX5SMS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/time/time-proof.ts"],"names":["timeProof","filePath","spinner","createSpinner","data","apiGet","proofPath","path","fs","logSuccess"],"mappings":"kQAMA,eAAOA,CAAAA,CAAiCC,CAAAA,CAAiC,CACvE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,qBAAqB,CAAA,CACnDD,EAAQ,KAAA,EAAM,CACd,IAAME,GAAAA,CAAO,MAAMC,CAAAA,CAA0B,CAAA,wBAAA,EAA2B,kBAAA,CAAmBJ,CAAQ,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC/HC,CAAAA,CAAQ,OAAA,GACR,IAAMI,CAAAA,CAAYC,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAI,CAAG,CAAA,EAAGA,EAAK,QAAA,CAASN,CAAQ,CAAC,CAAA,eAAA,CAAiB,EACtFO,CAAAA,CAAG,aAAA,CAAcF,CAAAA,CAAW,IAAA,CAAK,UAAU,CAAE,KAAA,CAAOF,GAAAA,CAAK,KAAA,CAAO,YAAA,CAAc,IAAI,IAAA,EAAK,CAAE,aAAc,CAAA,CAAG,IAAA,CAAM,CAAC,CAAC,CAAA,CAClHK,CAAAA,CAAW,CAAA,yBAAA,EAA4BH,CAAS,EAAE,EACpD","file":"time-proof-4YZLG6NG.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function timeProof(filePath: string): Promise<void> {\n const spinner = createSpinner('Generating proof...')\n spinner.start()\n const data = await apiGet<{ proof: string }>(`/api/v1/time/proof?path=${encodeURIComponent(filePath)}`, { authenticated: true })\n spinner.succeed()\n const proofPath = path.join(process.cwd(), `${path.basename(filePath)}.timeproof.json`)\n fs.writeFileSync(proofPath, JSON.stringify({ proof: data.proof, generated_at: new Date().toISOString() }, null, 2))\n logSuccess(`Existence proof saved to ${proofPath}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/time/time-proof.ts"],"names":["timeProof","filePath","spinner","createSpinner","data","apiGet","proofPath","path","fs","logSuccess"],"mappings":"kQAMA,eAAOA,CAAAA,CAAiCC,CAAAA,CAAiC,CACvE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,qBAAqB,CAAA,CACnDD,EAAQ,KAAA,EAAM,CACd,IAAME,GAAAA,CAAO,MAAMC,CAAAA,CAA0B,CAAA,wBAAA,EAA2B,kBAAA,CAAmBJ,CAAQ,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC/HC,CAAAA,CAAQ,OAAA,GACR,IAAMI,CAAAA,CAAYC,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAI,CAAG,CAAA,EAAGA,EAAK,QAAA,CAASN,CAAQ,CAAC,CAAA,eAAA,CAAiB,EACtFO,CAAAA,CAAG,aAAA,CAAcF,CAAAA,CAAW,IAAA,CAAK,UAAU,CAAE,KAAA,CAAOF,GAAAA,CAAK,KAAA,CAAO,YAAA,CAAc,IAAI,IAAA,EAAK,CAAE,aAAc,CAAA,CAAG,IAAA,CAAM,CAAC,CAAC,CAAA,CAClHK,CAAAA,CAAW,CAAA,yBAAA,EAA4BH,CAAS,EAAE,EACpD","file":"time-proof-G6IX5SMS.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function timeProof(filePath: string): Promise<void> {\n const spinner = createSpinner('Generating proof...')\n spinner.start()\n const data = await apiGet<{ proof: string }>(`/api/v1/time/proof?path=${encodeURIComponent(filePath)}`, { authenticated: true })\n spinner.succeed()\n const proofPath = path.join(process.cwd(), `${path.basename(filePath)}.timeproof.json`)\n fs.writeFileSync(proofPath, JSON.stringify({ proof: data.proof, generated_at: new Date().toISOString() }, null, 2))\n logSuccess(`Existence proof saved to ${proofPath}`)\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {c}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import {d}from'./chunk-G4JU7IUC.js';import {f,m,l}from'./chunk-QT7R3AXE.js';import'./chunk-W6CRHANC.js';import t from'chalk';async function s(e){let i=(await c(`/api/v1/time/status?path=${encodeURIComponent(e)}`,{authenticated:true})).status;if(f()){m(i);return}l(""),l(` ${t.bold(e)}`),l(t.dim(" \u2500\u2500\u2500".repeat(8))),l(` ${t.bold("Locked:")} ${i.locked?t.yellow("yes"):t.green("no")}`),i.unlock_at&&l(` ${t.bold("Unlocks:")} ${i.unlock_at}`),i.time_remaining_ms!==null&&i.time_remaining_ms>0&&l(` ${t.bold("Remaining:")} ${d(i.time_remaining_ms)}`),l(` ${t.bold("Proof:")} ${t.dim(i.proof_hash?.slice(0,16)||"-")}`),l("");}export{s as default};//# sourceMappingURL=time-status-YRQVIKNH.js.map
2
- //# sourceMappingURL=time-status-YRQVIKNH.js.map
1
+ import {c}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import {d}from'./chunk-FZKCZRJZ.js';import {f,m,l}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import t from'chalk';async function s(e){let i=(await c(`/api/v1/time/status?path=${encodeURIComponent(e)}`,{authenticated:true})).status;if(f()){m(i);return}l(""),l(` ${t.bold(e)}`),l(t.dim(" \u2500\u2500\u2500".repeat(8))),l(` ${t.bold("Locked:")} ${i.locked?t.yellow("yes"):t.green("no")}`),i.unlock_at&&l(` ${t.bold("Unlocks:")} ${i.unlock_at}`),i.time_remaining_ms!==null&&i.time_remaining_ms>0&&l(` ${t.bold("Remaining:")} ${d(i.time_remaining_ms)}`),l(` ${t.bold("Proof:")} ${t.dim(i.proof_hash?.slice(0,16)||"-")}`),l("");}export{s as default};//# sourceMappingURL=time-status-UJ3XY3R5.js.map
2
+ //# sourceMappingURL=time-status-UJ3XY3R5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/time/time-status.ts"],"names":["timeStatus","path","s","apiGet","isJsonMode","logJSON","logRaw","chalk","formatCountdown"],"mappings":"yNAaA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA6B,CAEpE,IAAMC,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAmC,CAAA,yBAAA,EAA4B,kBAAA,CAAmBF,CAAI,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACtH,MAAA,CAEf,GAAIG,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAC,CAAA,CACT,MACF,CAEAI,CAAAA,CAAO,EAAE,CAAA,CACTA,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAKN,CAAI,CAAC,CAAA,CAAE,CAAA,CAC9BK,CAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CACnCD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,EAAA,EAAKL,CAAAA,CAAE,MAAA,CAASK,CAAAA,CAAM,MAAA,CAAO,KAAK,CAAA,CAAIA,CAAAA,CAAM,KAAA,CAAM,IAAI,CAAC,CAAA,CAAE,CAAA,CACtFL,CAAAA,CAAE,SAAA,EACJI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA,EAAIL,CAAAA,CAAE,SAAS,CAAA,CAAE,CAAA,CAEjDA,CAAAA,CAAE,iBAAA,GAAsB,IAAA,EAAQA,CAAAA,CAAE,iBAAA,CAAoB,CAAA,EACxDI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,YAAY,CAAC,CAAA,CAAA,EAAIC,CAAAA,CAAgBN,CAAAA,CAAE,iBAAiB,CAAC,CAAA,CAAE,CAAA,CAEhFI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,QAAQ,CAAC,CAAA,GAAA,EAAMA,CAAAA,CAAM,GAAA,CAAIL,CAAAA,CAAE,UAAA,EAAY,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,EAAK,GAAG,CAAC,CAAA,CAAE,CAAA,CACpFI,CAAAA,CAAO,EAAE,EACX","file":"time-status-YRQVIKNH.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface TimeLockStatus {\n locked: boolean\n unlock_at: string | null\n time_remaining_ms: number | null\n proof_hash: string\n}\n\nexport default async function timeStatus(path: string): Promise<void> {\n const data = await apiGet<{ status: TimeLockStatus }>(`/api/v1/time/status?path=${encodeURIComponent(path)}`, { authenticated: true })\n const s = data.status\n\n if (isJsonMode()) {\n logJSON(s)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(path)}`)\n logRaw(chalk.dim(' ───'.repeat(8)))\n logRaw(` ${chalk.bold('Locked:')} ${s.locked ? chalk.yellow('yes') : chalk.green('no')}`)\n if (s.unlock_at) {\n logRaw(` ${chalk.bold('Unlocks:')} ${s.unlock_at}`)\n }\n if (s.time_remaining_ms !== null && s.time_remaining_ms > 0) {\n logRaw(` ${chalk.bold('Remaining:')} ${formatCountdown(s.time_remaining_ms)}`)\n }\n logRaw(` ${chalk.bold('Proof:')} ${chalk.dim(s.proof_hash?.slice(0, 16) || '-')}`)\n logRaw('')\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/time/time-status.ts"],"names":["timeStatus","path","s","apiGet","isJsonMode","logJSON","logRaw","chalk","formatCountdown"],"mappings":"yNAaA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA6B,CAEpE,IAAMC,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAmC,CAAA,yBAAA,EAA4B,kBAAA,CAAmBF,CAAI,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACtH,MAAA,CAEf,GAAIG,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAC,CAAA,CACT,MACF,CAEAI,CAAAA,CAAO,EAAE,CAAA,CACTA,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAKN,CAAI,CAAC,CAAA,CAAE,CAAA,CAC9BK,CAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CACnCD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,EAAA,EAAKL,CAAAA,CAAE,MAAA,CAASK,CAAAA,CAAM,MAAA,CAAO,KAAK,CAAA,CAAIA,CAAAA,CAAM,KAAA,CAAM,IAAI,CAAC,CAAA,CAAE,CAAA,CACtFL,CAAAA,CAAE,SAAA,EACJI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA,EAAIL,CAAAA,CAAE,SAAS,CAAA,CAAE,CAAA,CAEjDA,CAAAA,CAAE,iBAAA,GAAsB,IAAA,EAAQA,CAAAA,CAAE,iBAAA,CAAoB,CAAA,EACxDI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,YAAY,CAAC,CAAA,CAAA,EAAIC,CAAAA,CAAgBN,CAAAA,CAAE,iBAAiB,CAAC,CAAA,CAAE,CAAA,CAEhFI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,QAAQ,CAAC,CAAA,GAAA,EAAMA,CAAAA,CAAM,GAAA,CAAIL,CAAAA,CAAE,UAAA,EAAY,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,EAAK,GAAG,CAAC,CAAA,CAAE,CAAA,CACpFI,CAAAA,CAAO,EAAE,EACX","file":"time-status-UJ3XY3R5.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface TimeLockStatus {\n locked: boolean\n unlock_at: string | null\n time_remaining_ms: number | null\n proof_hash: string\n}\n\nexport default async function timeStatus(path: string): Promise<void> {\n const data = await apiGet<{ status: TimeLockStatus }>(`/api/v1/time/status?path=${encodeURIComponent(path)}`, { authenticated: true })\n const s = data.status\n\n if (isJsonMode()) {\n logJSON(s)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(path)}`)\n logRaw(chalk.dim(' ───'.repeat(8)))\n logRaw(` ${chalk.bold('Locked:')} ${s.locked ? chalk.yellow('yes') : chalk.green('no')}`)\n if (s.unlock_at) {\n logRaw(` ${chalk.bold('Unlocks:')} ${s.unlock_at}`)\n }\n if (s.time_remaining_ms !== null && s.time_remaining_ms > 0) {\n logRaw(` ${chalk.bold('Remaining:')} ${formatCountdown(s.time_remaining_ms)}`)\n }\n logRaw(` ${chalk.bold('Proof:')} ${chalk.dim(s.proof_hash?.slice(0, 16) || '-')}`)\n logRaw('')\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import'./chunk-THMWE2I6.js';import {g,h}from'./chunk-QT7R3AXE.js';import'./chunk-W6CRHANC.js';async function i(t){let o=a(`Attempting to unlock ${t}...`);o.start();try{(await d("/api/v1/time/unlock",{path:t},{authenticated:!0})).unlocked?(o.succeed(),g(`Unlocked ${t}`)):(o.fail(),h("Cannot unlock yet \u2014 lock time has not passed"),process.exit(1));}catch{throw o.fail(),new Error("Cannot unlock yet \u2014 lock time has not passed")}}export{i as default};//# sourceMappingURL=time-unlock-OUIAP7RY.js.map
2
- //# sourceMappingURL=time-unlock-OUIAP7RY.js.map
1
+ import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g,h}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';async function i(t){let o=a(`Attempting to unlock ${t}...`);o.start();try{(await d("/api/v1/time/unlock",{path:t},{authenticated:!0})).unlocked?(o.succeed(),g(`Unlocked ${t}`)):(o.fail(),h("Cannot unlock yet \u2014 lock time has not passed"),process.exit(1));}catch{throw o.fail(),new Error("Cannot unlock yet \u2014 lock time has not passed")}}export{i as default};//# sourceMappingURL=time-unlock-3TUR2KVC.js.map
2
+ //# sourceMappingURL=time-unlock-3TUR2KVC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/time/time-unlock.ts"],"names":["timeUnlock","path","spinner","createSpinner","apiPost","logSuccess","logError"],"mappings":"8NAIA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA6B,CACpE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,qBAAA,EAAwBF,CAAI,CAAA,GAAA,CAAK,CAAA,CAC/DC,CAAAA,CAAQ,KAAA,EAAM,CACd,GAAI,CAAA,CACa,MAAME,CAAAA,CAA+B,qBAAA,CAAuB,CAAE,IAAA,CAAAH,CAAK,CAAA,CAAG,CAAE,aAAA,CAAe,CAAA,CAAK,CAAC,CAAA,EACjG,QAAA,EACTC,EAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,SAAA,EAAYJ,CAAI,CAAA,CAAE,CAAA,GAE7BC,CAAAA,CAAQ,IAAA,EAAK,CACbI,CAAAA,CAAS,mDAA8C,CAAA,CACvD,OAAA,CAAQ,KAAK,CAAC,CAAA,EAElB,CAAA,KAAQ,CACN,MAAAJ,CAAAA,CAAQ,IAAA,EAAK,CACP,IAAI,KAAA,CAAM,mDAA8C,CAChE,CACF","file":"time-unlock-OUIAP7RY.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logError } from '../../lib/output/logger.js'\n\nexport default async function timeUnlock(path: string): Promise<void> {\n const spinner = createSpinner(`Attempting to unlock ${path}...`)\n spinner.start()\n try {\n const result = await apiPost<{ unlocked: boolean }>('/api/v1/time/unlock', { path }, { authenticated: true })\n if (result.unlocked) {\n spinner.succeed()\n logSuccess(`Unlocked ${path}`)\n } else {\n spinner.fail()\n logError('Cannot unlock yet — lock time has not passed')\n process.exit(1)\n }\n } catch {\n spinner.fail()\n throw new Error('Cannot unlock yet — lock time has not passed')\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/time/time-unlock.ts"],"names":["timeUnlock","path","spinner","createSpinner","apiPost","logSuccess","logError"],"mappings":"8NAIA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA6B,CACpE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,qBAAA,EAAwBF,CAAI,CAAA,GAAA,CAAK,CAAA,CAC/DC,CAAAA,CAAQ,KAAA,EAAM,CACd,GAAI,CAAA,CACa,MAAME,CAAAA,CAA+B,qBAAA,CAAuB,CAAE,IAAA,CAAAH,CAAK,CAAA,CAAG,CAAE,aAAA,CAAe,CAAA,CAAK,CAAC,CAAA,EACjG,QAAA,EACTC,EAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,SAAA,EAAYJ,CAAI,CAAA,CAAE,CAAA,GAE7BC,CAAAA,CAAQ,IAAA,EAAK,CACbI,CAAAA,CAAS,mDAA8C,CAAA,CACvD,OAAA,CAAQ,KAAK,CAAC,CAAA,EAElB,CAAA,KAAQ,CACN,MAAAJ,CAAAA,CAAQ,IAAA,EAAK,CACP,IAAI,KAAA,CAAM,mDAA8C,CAChE,CACF","file":"time-unlock-3TUR2KVC.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logError } from '../../lib/output/logger.js'\n\nexport default async function timeUnlock(path: string): Promise<void> {\n const spinner = createSpinner(`Attempting to unlock ${path}...`)\n spinner.start()\n try {\n const result = await apiPost<{ unlocked: boolean }>('/api/v1/time/unlock', { path }, { authenticated: true })\n if (result.unlocked) {\n spinner.succeed()\n logSuccess(`Unlocked ${path}`)\n } else {\n spinner.fail()\n logError('Cannot unlock yet — lock time has not passed')\n process.exit(1)\n }\n } catch {\n spinner.fail()\n throw new Error('Cannot unlock yet — lock time has not passed')\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b as b$1}from'./chunk-THMWE2I6.js';import {d as d$1}from'./chunk-FZKCZRJZ.js';import {h,f,m}from'./chunk-QT7R3AXE.js';import {b,g}from'./chunk-2RMLR54M.js';import o from'chalk';async function d(){let e=await b();if(e||(h("Not authenticated"),process.exit(1)),f()){m({authenticated:true,user:e.user,session_id:e.session_id,expires_at:e.expires_at});return}let m$1=g(e),u=[{key:o.bold("Email"),value:e.user.email},{key:o.bold("Username"),value:e.user.username},{key:o.bold("Plan"),value:o.hex("#7C4DFF")(e.user.plan)},{key:o.bold("Session Expires"),value:d$1(m$1)}];console.log(b$1(u,[{key:"key",label:"Attribute"},{key:"value",label:"Value"}]));}export{d as default};//# sourceMappingURL=whoami-C4LPZU6R.js.map
2
+ //# sourceMappingURL=whoami-C4LPZU6R.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/auth/whoami.ts"],"names":["whoami","session","loadSession","logError","isJsonMode","logJSON","timeLeft","getTimeUntilExpiry","rows","chalk","formatCountdown","renderCompactTable"],"mappings":"yLAOA,eAAOA,CAAAA,EAA+C,CACpD,IAAMC,CAAAA,CAAU,MAAMC,GAAAA,EAAY,CAMlC,GALKD,CAAAA,GACHE,EAAS,mBAAmB,CAAA,CAC5B,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGZC,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQ,CACN,aAAA,CAAe,IAAA,CACf,IAAA,CAAMJ,EAAQ,IAAA,CACd,UAAA,CAAYA,CAAAA,CAAQ,UAAA,CACpB,UAAA,CAAYA,CAAAA,CAAQ,UACtB,CAAC,CAAA,CACD,MACF,CAEA,IAAMK,GAAAA,CAAWC,CAAAA,CAAmBN,CAAO,CAAA,CACrCO,CAAAA,CAAO,CACX,CAAE,GAAA,CAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAG,KAAA,CAAOR,CAAAA,CAAQ,IAAA,CAAK,KAAM,CAAA,CACtD,CAAE,GAAA,CAAKQ,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAG,KAAA,CAAOR,CAAAA,CAAQ,IAAA,CAAK,QAAS,CAAA,CAC5D,CAAE,GAAA,CAAKQ,CAAAA,CAAM,IAAA,CAAK,MAAM,CAAA,CAAG,KAAA,CAAOA,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAER,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAE,CAAA,CAC1E,CAAE,GAAA,CAAKQ,CAAAA,CAAM,KAAK,iBAAiB,CAAA,CAAG,KAAA,CAAOC,GAAAA,CAAgBJ,GAAQ,CAAE,CACzE,CAAA,CAEA,OAAA,CAAQ,GAAA,CAAIK,CAAAA,CAAmBH,CAAAA,CAAM,CACnC,CAAE,IAAK,KAAA,CAAO,KAAA,CAAO,WAAY,CAAA,CACjC,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CACjC,CAAC,CAAC,EACJ","file":"whoami-ZFYNNZSF.js","sourcesContent":["import { loadSession, getTimeUntilExpiry } from '../../lib/auth/session.js'\nimport { logError, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\nimport { renderCompactTable } from '../../lib/output/table.js'\n\nexport default async function whoami(): Promise<void> {\n const session = await loadSession()\n if (!session) {\n logError('Not authenticated')\n process.exit(1)\n }\n\n if (isJsonMode()) {\n logJSON({\n authenticated: true,\n user: session.user,\n session_id: session.session_id,\n expires_at: session.expires_at,\n })\n return\n }\n\n const timeLeft = getTimeUntilExpiry(session)\n const rows = [\n { key: chalk.bold('Email'), value: session.user.email },\n { key: chalk.bold('Username'), value: session.user.username },\n { key: chalk.bold('Plan'), value: chalk.hex('#7C4DFF')(session.user.plan) },\n { key: chalk.bold('Session Expires'), value: formatCountdown(timeLeft) },\n ]\n\n console.log(renderCompactTable(rows, [\n { key: 'key', label: 'Attribute' },\n { key: 'value', label: 'Value' },\n ]))\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/auth/whoami.ts"],"names":["whoami","session","loadSession","logError","isJsonMode","logJSON","timeLeft","getTimeUntilExpiry","rows","chalk","formatCountdown","renderCompactTable"],"mappings":"yLAOA,eAAOA,CAAAA,EAA+C,CACpD,IAAMC,CAAAA,CAAU,MAAMC,CAAAA,EAAY,CAMlC,GALKD,CAAAA,GACHE,EAAS,mBAAmB,CAAA,CAC5B,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGZC,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQ,CACN,aAAA,CAAe,IAAA,CACf,IAAA,CAAMJ,EAAQ,IAAA,CACd,UAAA,CAAYA,CAAAA,CAAQ,UAAA,CACpB,UAAA,CAAYA,CAAAA,CAAQ,UACtB,CAAC,CAAA,CACD,MACF,CAEA,IAAMK,GAAAA,CAAWC,CAAAA,CAAmBN,CAAO,CAAA,CACrCO,CAAAA,CAAO,CACX,CAAE,GAAA,CAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAG,KAAA,CAAOR,CAAAA,CAAQ,IAAA,CAAK,KAAM,CAAA,CACtD,CAAE,GAAA,CAAKQ,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAG,KAAA,CAAOR,CAAAA,CAAQ,IAAA,CAAK,QAAS,CAAA,CAC5D,CAAE,GAAA,CAAKQ,CAAAA,CAAM,IAAA,CAAK,MAAM,CAAA,CAAG,KAAA,CAAOA,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAER,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAE,CAAA,CAC1E,CAAE,GAAA,CAAKQ,CAAAA,CAAM,KAAK,iBAAiB,CAAA,CAAG,KAAA,CAAOC,GAAAA,CAAgBJ,GAAQ,CAAE,CACzE,CAAA,CAEA,OAAA,CAAQ,GAAA,CAAIK,GAAAA,CAAmBH,CAAAA,CAAM,CACnC,CAAE,IAAK,KAAA,CAAO,KAAA,CAAO,WAAY,CAAA,CACjC,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CACjC,CAAC,CAAC,EACJ","file":"whoami-C4LPZU6R.js","sourcesContent":["import { loadSession, getTimeUntilExpiry } from '../../lib/auth/session.js'\nimport { logError, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\nimport { renderCompactTable } from '../../lib/output/table.js'\n\nexport default async function whoami(): Promise<void> {\n const session = await loadSession()\n if (!session) {\n logError('Not authenticated')\n process.exit(1)\n }\n\n if (isJsonMode()) {\n logJSON({\n authenticated: true,\n user: session.user,\n session_id: session.session_id,\n expires_at: session.expires_at,\n })\n return\n }\n\n const timeLeft = getTimeUntilExpiry(session)\n const rows = [\n { key: chalk.bold('Email'), value: session.user.email },\n { key: chalk.bold('Username'), value: session.user.username },\n { key: chalk.bold('Plan'), value: chalk.hex('#7C4DFF')(session.user.plan) },\n { key: chalk.bold('Session Expires'), value: formatCountdown(timeLeft) },\n ]\n\n console.log(renderCompactTable(rows, [\n { key: 'key', label: 'Attribute' },\n { key: 'value', label: 'Value' },\n ]))\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squidcloudctl",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "description": "SquidCloud CLI — deploy, storage, sites, pipelines, and more",
5
5
  "type": "module",
6
6
  "bin": {
@@ -31,8 +31,6 @@
31
31
  "clipboardy": "^4.0.0",
32
32
  "commander": "^13.1.0",
33
33
  "conf": "^13.1.0",
34
- "date-fns": "^4.1.0",
35
- "envinfo": "^7.14.0",
36
34
  "figlet": "^1.8.0",
37
35
  "gradient-string": "^3.0.0",
38
36
  "ignore": "^7.0.3",
@@ -1,2 +0,0 @@
1
- import {a as a$1}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import {f}from'./chunk-W6CRHANC.js';import a from'inquirer';async function c(e){if(e.all){let{confirm:s}=await a.prompt([{type:"confirm",name:"confirm",message:"Revoke ALL active sessions? This will log out every device.",default:false}]);if(!s)return;let t=a$1("Revoking all sessions...");t.start(),await d("/api/auth/ssp/revoke-all",{},{authenticated:true}),await f(),t.succeed(),g("All sessions revoked");return}if(e.session){let s=a$1(`Revoking session ${e.session}...`);s.start(),await d("/api/auth/ssp/revoke",{session_id:e.session},{authenticated:true}),s.succeed(),g(`Session ${e.session} revoked`);return}console.error("Specify --session <id> or --all"),process.exit(1);}export{c as default};//# sourceMappingURL=auth-revoke-IRZJIB2A.js.map
2
- //# sourceMappingURL=auth-revoke-IRZJIB2A.js.map
@@ -1,2 +0,0 @@
1
- import {d as d$1}from'./chunk-G4JU7IUC.js';import {h,f,m,l}from'./chunk-QT7R3AXE.js';import {d,c,i}from'./chunk-W6CRHANC.js';import e from'chalk';async function u(){let i$1=await d();i$1||(h("Not authenticated"),process.exit(1));let f$1=c(),t=i$1.device_fingerprint===f$1,o=i(i$1),s=o<=120*1e3;if(f()){m({authenticated:true,session_id:i$1.session_id,expires_in_ms:o,fingerprint_match:t,needs_refresh:s,user:i$1.user});return}l(""),l(`${e.bold("Session Health")}`),l(`${e.dim("\u2500\u2500\u2500".repeat(15))}`),l(` ${e.bold("Session ID:")} ${e.dim(i$1.session_id)}`),l(` ${e.bold("User:")} ${i$1.user.email} (${i$1.user.username})`),l(` ${e.bold("Plan:")} ${e.hex("#7C4DFF")(i$1.user.plan)}`),l(` ${e.bold("Expires:")} ${o>0?d$1(o):e.red("expired")}`),l(` ${e.bold("Fingerprint:")} ${t?e.green("\u2713 match"):e.red("\u2717 mismatch")}`),l(` ${e.bold("Refresh:")} ${s?e.yellow("needed soon"):e.green("ok")}`),l("");}export{u as default};//# sourceMappingURL=auth-status-WHT7RXX6.js.map
2
- //# sourceMappingURL=auth-status-WHT7RXX6.js.map
@@ -1,2 +0,0 @@
1
- import e from'chalk';import {format,formatDistanceToNow}from'date-fns';function c(t){if(t===0)return "0 B";let r=["B","KB","MB","GB","TB"],o=1024,n=Math.floor(Math.log(t)/Math.log(o));return `${(t/Math.pow(o,n)).toFixed(n>0?1:0)} ${r[n]}`}function m(t){let r=typeof t=="string"?new Date(t):t;return format(r,"MMM d, yyyy HH:mm")}function g(t){let r=typeof t=="string"?new Date(t):t;return formatDistanceToNow(r,{addSuffix:true})}function $(t){if(t<=0)return e.red("expired");let r=Math.floor(t/36e5),o=Math.floor(t%36e5/6e4),n=Math.floor(t%6e4/1e3);return r>0?`${r}h ${o}m ${n}s`:o>0?`${o}m ${n}s`:`${n}s`}export{c as a,m as b,g as c,$ as d};//# sourceMappingURL=chunk-G4JU7IUC.js.map
2
- //# sourceMappingURL=chunk-G4JU7IUC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/utils/format.ts"],"names":["formatBytes","bytes","units","k","i","formatDate","date","d","dateFnsFormat","formatRelative","formatDistanceToNow","formatCountdown","ms","chalk","hours","minutes","seconds"],"mappings":"uEAGO,SAASA,EAAYC,CAAAA,CAAuB,CACjD,GAAIA,CAAAA,GAAU,EAAG,OAAO,KAAA,CACxB,IAAMC,CAAAA,CAAQ,CAAC,GAAA,CAAK,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAI,CAAA,CACpCC,CAAAA,CAAI,IAAA,CACJC,CAAAA,CAAI,KAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAIH,CAAK,EAAI,IAAA,CAAK,GAAA,CAAIE,CAAC,CAAC,EAElD,OAAO,CAAA,EAAA,CADOF,CAAAA,CAAQ,IAAA,CAAK,IAAIE,CAAAA,CAAGC,CAAC,CAAA,EACnB,OAAA,CAAQA,EAAI,CAAA,CAAI,CAAA,CAAI,CAAC,CAAC,IAAIF,CAAAA,CAAME,CAAC,CAAC,CAAA,CACpD,CAUO,SAASC,CAAAA,CAAWC,CAAAA,CAA6B,CACtD,IAAMC,CAAAA,CAAI,OAAOD,CAAAA,EAAS,QAAA,CAAW,IAAI,IAAA,CAAKA,CAAI,CAAA,CAAIA,CAAAA,CACtD,OAAOE,MAAAA,CAAcD,CAAAA,CAAG,mBAAmB,CAC7C,CAEO,SAASE,CAAAA,CAAeH,CAAAA,CAA6B,CAC1D,IAAMC,CAAAA,CAAI,OAAOD,CAAAA,EAAS,QAAA,CAAW,IAAI,IAAA,CAAKA,CAAI,CAAA,CAAIA,CAAAA,CACtD,OAAOI,mBAAAA,CAAoBH,CAAAA,CAAG,CAAE,SAAA,CAAW,IAAK,CAAC,CACnD,CAEO,SAASI,EAAgBC,CAAAA,CAAoB,CAClD,GAAIA,CAAAA,EAAM,EAAG,OAAOC,CAAAA,CAAM,GAAA,CAAI,SAAS,EACvC,IAAMC,CAAAA,CAAQ,IAAA,CAAK,KAAA,CAAMF,EAAK,IAAO,CAAA,CAC/BG,CAAAA,CAAU,IAAA,CAAK,MAAOH,CAAAA,CAAK,IAAA,CAAW,GAAK,CAAA,CAC3CI,EAAU,IAAA,CAAK,KAAA,CAAOJ,CAAAA,CAAK,GAAA,CAAS,GAAI,CAAA,CAC9C,OAAIE,CAAAA,CAAQ,CAAA,CAAU,GAAGA,CAAK,CAAA,EAAA,EAAKC,CAAO,CAAA,EAAA,EAAKC,CAAO,CAAA,CAAA,CAAA,CAClDD,CAAAA,CAAU,CAAA,CAAU,CAAA,EAAGA,CAAO,CAAA,EAAA,EAAKC,CAAO,CAAA,CAAA,CAAA,CACvC,CAAA,EAAGA,CAAO,CAAA,CAAA,CACnB","file":"chunk-G4JU7IUC.js","sourcesContent":["import chalk from 'chalk'\nimport { formatDistanceToNow, format as dateFnsFormat } from 'date-fns'\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 dateFnsFormat(d, 'MMM d, yyyy HH:mm')\n}\n\nexport function formatRelative(date: string | Date): string {\n const d = typeof date === 'string' ? new Date(date) : date\n return formatDistanceToNow(d, { addSuffix: true })\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 +0,0 @@
1
- import {a}from'./chunk-NDB6KXYI.js';import {a as a$1}from'./chunk-SVR7W7MP.js';import {d,c,a as a$2}from'./chunk-W6CRHANC.js';import {nanoid}from'nanoid';var _=3,b=1e3,k=1e3,A=a(),x=0;async function I(){let e=Date.now()-x;e<k&&await new Promise(n=>setTimeout(n,k-e)),x=Date.now();}function D(){return nanoid(21)}async function $(t,e,n,s,o){let m=`${t}:${e}:${n}:${s}`;return a$2(new TextEncoder().encode(o),m)}async function g(t,e={}){let{method:n="GET",headers:s={},body:o,authenticated:m=false,retries:f=_}=e;await I();let d$1=D(),u=Date.now(),r={"Content-Type":"application/json","X-SQC-Request-ID":d$1,"X-SQC-Timestamp":String(u),...s};if(m){let i=await d();if(i){let c$1=c();r["X-SQC-Fingerprint"]=c$1,i.access_token&&(r.Authorization=`Bearer ${i.access_token}`,r["X-SQC-Signature"]=await $(d$1,u,n,t,i.access_token));}}let p=`${A}${t}`,a={method:n,headers:r};o&&n!=="GET"&&(a.body=JSON.stringify(o));let S=null;for(let i=0;i<=f;i++)try{let c=await fetch(p,a);if(c.status===401&&m){let T=await a$1();if(T){r.Authorization=`Bearer ${T.access_token}`,r["X-SQC-Signature"]=await $(d$1,u,n,t,T.access_token),a.headers=r;let h=await fetch(p,a);return y(h)}}return y(c)}catch(c){if(S=c instanceof Error?c:new Error(String(c)),i<f){let T=b*Math.pow(2,i)*(.5+Math.random()*.5);await new Promise(h=>setTimeout(h,T));}}throw S||new Error(`Request failed: ${t}`)}async function y(t){if(t.status===204)return;if((t.headers.get("content-type")||"").includes("application/json")){let s=await t.json();if(!t.ok){let o=s?.error?.message||s?.message||`HTTP ${t.status}`;throw new w(o,t.status,s?.error)}return s}if(!t.ok){let s=await t.text();throw new w(s||`HTTP ${t.status}`,t.status)}return await t.text()}var w=class extends Error{constructor(n,s,o){super(n);this.status=s;this.details=o;this.name="ApiError";}status;details};async function F(t,e){return g(t,{...e,method:"GET"})}async function G(t,e,n){return g(t,{...n,method:"POST",body:e})}async function L(t,e,n){return g(t,{...n,method:"PUT",body:e})}async function j(t,e){return g(t,{...e,method:"DELETE"})}async function z(t,e,n){let{method:s="POST",headers:o={},authenticated:m=false}=n||{},f=D(),d$1=Date.now(),u={...o,"X-SQC-Request-ID":f,"X-SQC-Timestamp":String(d$1)};if(m){let a=await d();a&&(u["X-SQC-Fingerprint"]=c(),a.access_token&&(u.Authorization=`Bearer ${a.access_token}`));}let r=`${A}${t}`,p=await fetch(r,{method:s,headers:u,body:e});return y(p)}export{g as a,w as b,F as c,G as d,L as e,j as f,z as g};//# sourceMappingURL=chunk-MU5KHPCI.js.map
2
- //# sourceMappingURL=chunk-MU5KHPCI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/api/client.ts"],"names":["MAX_RETRIES","BASE_DELAY","RATE_LIMIT_WINDOW","API_BASE","getApiBase","lastRequestTime","rateLimit","elapsed","r","buildRequestId","nanoid","signRequest","requestId","timestamp","method","path","accessToken","data","computeHMAC","apiRequest","options","headers","body","authenticated","retries","reqHeaders","session","loadSession","fingerprint","computeDeviceFingerprint","url","fetchOptions","lastError","attempt","response","newSession","refreshAccessToken","retryResponse","handleResponse","err","delay","message","ApiError","text","status","details","apiGet","apiPost","apiPut","apiDelete","apiUpload","formData"],"mappings":"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","file":"chunk-MU5KHPCI.js","sourcesContent":["import { nanoid } from 'nanoid'\nimport { computeHMAC } from '../crypto/ssp.js'\nimport { loadSession } from '../auth/session.js'\nimport { refreshAccessToken } from '../auth/refresh.js'\nimport { computeDeviceFingerprint } from '../auth/fingerprint.js'\nimport { getApiBase } from './cert-pin.js'\n\nconst MAX_RETRIES = 3\nconst BASE_DELAY = 1000\nconst RATE_LIMIT_WINDOW = 1000\nconst API_BASE = getApiBase()\n\ninterface RequestOptions {\n method?: string\n headers?: Record<string, string>\n body?: unknown\n authenticated?: boolean\n retries?: number\n}\n\nlet lastRequestTime = 0\n\nasync function rateLimit(): Promise<void> {\n const now = Date.now()\n const elapsed = now - lastRequestTime\n if (elapsed < RATE_LIMIT_WINDOW) {\n await new Promise(r => setTimeout(r, RATE_LIMIT_WINDOW - elapsed))\n }\n lastRequestTime = Date.now()\n}\n\nfunction buildRequestId(): string {\n return nanoid(21)\n}\n\nasync function signRequest(requestId: string, timestamp: number, method: string, path: string, accessToken: string): Promise<string> {\n const data = `${requestId}:${timestamp}:${method}:${path}`\n return computeHMAC(new TextEncoder().encode(accessToken), data)\n}\n\nexport async function apiRequest<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const { method = 'GET', headers = {}, body, authenticated = false, retries = MAX_RETRIES } = options\n\n await rateLimit()\n\n const requestId = buildRequestId()\n const timestamp = Date.now()\n\n const reqHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'X-SQC-Request-ID': requestId,\n 'X-SQC-Timestamp': String(timestamp),\n ...headers,\n }\n\n if (authenticated) {\n let session = await loadSession()\n if (session) {\n const fingerprint = computeDeviceFingerprint()\n reqHeaders['X-SQC-Fingerprint'] = fingerprint\n\n if (session.access_token) {\n reqHeaders['Authorization'] = `Bearer ${session.access_token}`\n reqHeaders['X-SQC-Signature'] = await signRequest(requestId, timestamp, method, path, session.access_token)\n }\n }\n }\n\n const url = `${API_BASE}${path}`\n const fetchOptions: RequestInit = {\n method,\n headers: reqHeaders,\n }\n\n if (body && method !== 'GET') {\n fetchOptions.body = JSON.stringify(body)\n }\n\n let lastError: Error | null = null\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n const response = await fetch(url, fetchOptions)\n\n if (response.status === 401 && authenticated) {\n const newSession = await refreshAccessToken()\n if (newSession) {\n reqHeaders['Authorization'] = `Bearer ${newSession.access_token}`\n reqHeaders['X-SQC-Signature'] = await signRequest(requestId, timestamp, method, path, newSession.access_token)\n fetchOptions.headers = reqHeaders\n const retryResponse = await fetch(url, fetchOptions)\n return handleResponse<T>(retryResponse)\n }\n }\n\n return handleResponse<T>(response)\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err))\n if (attempt < retries) {\n const delay = BASE_DELAY * Math.pow(2, attempt) * (0.5 + Math.random() * 0.5)\n await new Promise(r => setTimeout(r, delay))\n }\n }\n }\n\n throw lastError || new Error(`Request failed: ${path}`)\n}\n\nasync function handleResponse<T>(response: Response): Promise<T> {\n if (response.status === 204) {\n return undefined as T\n }\n const contentType = response.headers.get('content-type') || ''\n if (contentType.includes('application/json')) {\n const data = await response.json()\n if (!response.ok) {\n const message = data?.error?.message || data?.message || `HTTP ${response.status}`\n throw new ApiError(message, response.status, data?.error)\n }\n return data as T\n }\n if (!response.ok) {\n const text = await response.text()\n throw new ApiError(text || `HTTP ${response.status}`, response.status)\n }\n const text = await response.text()\n return text as unknown as T\n}\n\nexport class ApiError extends Error {\n constructor(\n message: string,\n public status: number,\n public details?: unknown,\n ) {\n super(message)\n this.name = 'ApiError'\n }\n}\n\nexport async function apiGet<T>(path: string, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'GET' })\n}\n\nexport async function apiPost<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'POST', body })\n}\n\nexport async function apiPut<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'PUT', body })\n}\n\nexport async function apiDelete<T>(path: string, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'DELETE' })\n}\n\nexport async function apiUpload<T>(path: string, formData: FormData, options?: RequestOptions): Promise<T> {\n const { method = 'POST', headers = {}, authenticated = false } = options || {}\n const requestId = buildRequestId()\n const timestamp = Date.now()\n\n const reqHeaders: Record<string, string> = {\n ...headers,\n 'X-SQC-Request-ID': requestId,\n 'X-SQC-Timestamp': String(timestamp),\n }\n\n if (authenticated) {\n const session = await loadSession()\n if (session) {\n reqHeaders['X-SQC-Fingerprint'] = computeDeviceFingerprint()\n if (session.access_token) {\n reqHeaders['Authorization'] = `Bearer ${session.access_token}`\n }\n }\n }\n\n const url = `${API_BASE}${path}`\n const response = await fetch(url, {\n method,\n headers: reqHeaders,\n body: formData,\n })\n\n return handleResponse<T>(response)\n}\n"]}
@@ -1,3 +0,0 @@
1
- import {d as d$1,c,f as f$1,e}from'./chunk-W6CRHANC.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 d$1();if(!t)return null;let i=c();if(t.device_fingerprint!==i)return await f$1(),null;let a=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.ok)return await f$1(),null;let e$1=await a.json(),c$1={...t,access_token:e$1.access_token,refresh_token:e$1.refresh_token,expires_at:e$1.expires_at*1e3,issued_at:Date.now(),device_fingerprint:i,user:{id:e$1.user.id,email:e$1.user.email,username:e$1.user.user_metadata?.username||e$1.user.email.split("@")[0]||"user",plan:"free"}};return await e(c$1),c$1}catch{return await f$1(),null}finally{n();}}
2
- export{b as a};//# sourceMappingURL=chunk-SVR7W7MP.js.map
3
- //# sourceMappingURL=chunk-SVR7W7MP.js.map
@@ -1,2 +0,0 @@
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 {hmac}from'@noble/hashes/hmac';import {blake3}from'@noble/hashes/blake3';import {createHash}from'crypto';etc.sha512Sync=(...t)=>sha512(concatBytes(...t));function ot(t,r){return Buffer.from(hmac(sha256,t,r)).toString("hex")}function o(t){return Buffer.from(t).toString("hex")}function p(t){return new Uint8Array(Buffer.from(t,"hex"))}var P=["/etc/machine-id","/var/lib/dbus/machine-id","/etc/hostid"];function D(){for(let r of P)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=[D(),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 bt(){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 kt(t){await l(JSON.stringify(t));}async function Bt(){await a();}function qt(t){return Date.now()>=t.expires_at}function Pt(t){return t.expires_at-Date.now()<=12e4}function Dt(t){return t.expires_at-Date.now()}export{ot as a,o as b,f as c,bt as d,kt as e,Bt as f,qt as g,Pt as h,Dt as i};//# sourceMappingURL=chunk-W6CRHANC.js.map
2
- //# sourceMappingURL=chunk-W6CRHANC.js.map
@@ -1 +0,0 @@
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","computeHMAC","key","data","hmac","sha256","bytesToHex","buf","hexToBytes","hex","MACHINE_ID_PATHS","getMachineId","p","existsSync","readFileSync","createHash","os","computeDeviceFingerprint","blake3","FALLBACK_DIR","path","FALLBACK_FILE","getFallbackKey","fingerprint","ikm","hkdf","storeSession","sessionJson","iv","randomBytes","plaintext","encrypted","gcm","fs","payload","getSession","raw","decrypted","deleteSession","loadSession","session","saveSession","clearSession","isSessionExpired","shouldRefreshToken","getTimeUntilExpiry"],"mappings":"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","file":"chunk-W6CRHANC.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}\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"]}
@@ -1,2 +0,0 @@
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-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import'./chunk-W6CRHANC.js';//# sourceMappingURL=client-HD3YWJJJ.js.map
2
- //# sourceMappingURL=client-HD3YWJJJ.js.map
@@ -1,2 +0,0 @@
1
- import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-W6CRHANC.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(),g(`Removed ${i.email} from "${e}"`);}export{o as default};//# sourceMappingURL=collab-remove-XI3NX2M7.js.map
2
- //# sourceMappingURL=collab-remove-XI3NX2M7.js.map
@@ -1,2 +0,0 @@
1
- import {c as c$1}from'./chunk-MU5KHPCI.js';import'./chunk-NDB6KXYI.js';import'./chunk-SVR7W7MP.js';import {f,m,l}from'./chunk-QT7R3AXE.js';import {d as d$1,c}from'./chunk-W6CRHANC.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 d$1();if(o){let a=o.device_fingerprint===c();t.push({name:"Auth Session",status:a?"pass":"warn",message:a?`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$1("/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:c().slice(0,16)+"..."});try{let a=await c$1("/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-5TK2COIN.js.map
2
- //# sourceMappingURL=doctor-5TK2COIN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/util/doctor.ts"],"names":["doctor","options","checks","session","loadSession","fpMatch","computeDeviceFingerprint","apiGet","securityInfo","isJsonMode","logJSON","logRaw","chalk","check","icon"],"mappings":"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","file":"doctor-5TK2COIN.js","sourcesContent":["import envinfo from 'envinfo'\nimport chalk from 'chalk'\nimport { loadSession } from '../../lib/auth/session.js'\nimport { computeDeviceFingerprint } from '../../lib/auth/fingerprint.js'\nimport { apiGet } from '../../lib/api/client.js'\nimport { logSuccess, logError, logInfo, logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nexport default async function doctor(options?: { security?: boolean }): Promise<void> {\n const checks: { name: string; status: 'pass' | 'fail' | 'warn'; message: string }[] = []\n\n // Node version check\n const nodeMajor = parseInt(process.version.slice(1), 10)\n if (nodeMajor >= 20) {\n checks.push({ name: 'Node.js Version', status: 'pass', message: `${process.version} (20+ required)` })\n } else {\n checks.push({ name: 'Node.js Version', status: 'fail', message: `${process.version} — upgrade to 20+` })\n }\n\n // Auth check\n const session = await loadSession()\n if (session) {\n const fpMatch = session.device_fingerprint === computeDeviceFingerprint()\n checks.push({\n name: 'Auth Session',\n status: fpMatch ? 'pass' : 'warn',\n message: fpMatch ? `Authenticated as ${session.user.email}` : 'Device fingerprint mismatch — may need re-login',\n })\n } else {\n checks.push({ name: 'Auth Session', status: 'warn', message: 'Not authenticated — run `squidcloud login`' })\n }\n\n // Network connectivity\n try {\n await apiGet('/api/health')\n checks.push({ name: 'Network', status: 'pass', message: 'Connected to SquidCloud API' })\n } catch {\n checks.push({ name: 'Network', status: 'fail', message: 'Cannot reach SquidCloud API' })\n }\n\n if (options?.security) {\n checks.push({\n name: 'Device Fingerprint',\n status: 'pass',\n message: computeDeviceFingerprint().slice(0, 16) + '...',\n })\n try {\n const securityInfo = await apiGet('/api/auth/ssp/security-check', { authenticated: true })\n checks.push({ name: 'Server Security', status: 'pass', message: 'All checks passed' })\n } catch {\n checks.push({ name: 'Server Security', status: 'warn', message: 'Could not verify all security checks' })\n }\n }\n\n if (isJsonMode()) {\n logJSON({ checks })\n return\n }\n\n logRaw('')\n logRaw(chalk.bold(' SquidCloud Diagnostics'))\n logRaw(chalk.dim(' ───'.repeat(10)))\n logRaw('')\n\n for (const check of checks) {\n const icon = check.status === 'pass' ? chalk.green('✓') : check.status === 'warn' ? chalk.yellow('⚠') : chalk.red('✗')\n logRaw(` ${icon} ${chalk.bold(check.name)}`)\n logRaw(` ${chalk.dim(check.message)}`)\n logRaw('')\n }\n\n logRaw(chalk.bold(' Environment'))\n logRaw(chalk.dim(' ───'.repeat(10)))\n logRaw('')\n logRaw(` ${chalk.dim('Platform:')} ${process.platform} ${process.arch}`)\n logRaw(` ${chalk.dim('Node:')} ${process.version}`)\n logRaw(` ${chalk.dim('CWD:')} ${process.cwd()}`)\n logRaw('')\n}\n"]}