squidcloudctl 1.1.0 → 1.1.2

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 (231) hide show
  1. package/dist/auth-revoke-I5FM6N2S.js +2 -0
  2. package/dist/{auth-revoke-OC67YCEQ.js.map → auth-revoke-I5FM6N2S.js.map} +1 -1
  3. package/dist/{auth-sessions-XIBWY6BL.js → auth-sessions-ALQEGBDS.js} +2 -2
  4. package/dist/{auth-sessions-XIBWY6BL.js.map → auth-sessions-ALQEGBDS.js.map} +1 -1
  5. package/dist/{auth-status-B5VLDH27.js → auth-status-4VVTCDII.js} +2 -2
  6. package/dist/{auth-status-B5VLDH27.js.map → auth-status-4VVTCDII.js.map} +1 -1
  7. package/dist/bin/squidcloud.js +2 -2
  8. package/dist/bin/squidcloud.js.map +1 -1
  9. package/dist/chunk-4NTVRCZM.js +2 -0
  10. package/dist/chunk-4NTVRCZM.js.map +1 -0
  11. package/dist/{chunk-RWWBBPEJ.js → chunk-BC2OVPRV.js} +2 -2
  12. package/dist/{chunk-RWWBBPEJ.js.map → chunk-BC2OVPRV.js.map} +1 -1
  13. package/dist/chunk-FYFPDKJM.js +3 -0
  14. package/dist/chunk-FYFPDKJM.js.map +1 -0
  15. package/dist/client-RFYERFWZ.js +2 -0
  16. package/dist/{client-FRNT7PEB.js.map → client-RFYERFWZ.js.map} +1 -1
  17. package/dist/{collab-activity-GQOGCECR.js → collab-activity-5RK36CJW.js} +2 -2
  18. package/dist/{collab-activity-GQOGCECR.js.map → collab-activity-5RK36CJW.js.map} +1 -1
  19. package/dist/collab-invite-HAMMPEAQ.js +2 -0
  20. package/dist/{collab-invite-HUSQYV23.js.map → collab-invite-HAMMPEAQ.js.map} +1 -1
  21. package/dist/collab-leave-MTCXHQ4T.js +2 -0
  22. package/dist/{collab-leave-W2ESTT5L.js.map → collab-leave-MTCXHQ4T.js.map} +1 -1
  23. package/dist/{collab-list-722OEBJQ.js → collab-list-JV4ZCWLB.js} +2 -2
  24. package/dist/{collab-list-722OEBJQ.js.map → collab-list-JV4ZCWLB.js.map} +1 -1
  25. package/dist/collab-remove-DO4BIA5R.js +2 -0
  26. package/dist/{collab-remove-ZMB22U2T.js.map → collab-remove-DO4BIA5R.js.map} +1 -1
  27. package/dist/collab-transfer-6CG5PHVC.js +2 -0
  28. package/dist/{collab-transfer-56MH4IT6.js.map → collab-transfer-6CG5PHVC.js.map} +1 -1
  29. package/dist/deploy-X5HX7V4J.js +3 -0
  30. package/dist/{deploy-WK3VAA7D.js.map → deploy-X5HX7V4J.js.map} +1 -1
  31. package/dist/{doctor-C7TZGTCO.js → doctor-RSKBJYUX.js} +2 -2
  32. package/dist/{doctor-C7TZGTCO.js.map → doctor-RSKBJYUX.js.map} +1 -1
  33. package/dist/forms-clear-UJ23UHUN.js +2 -0
  34. package/dist/{forms-clear-2ERBEAEY.js.map → forms-clear-UJ23UHUN.js.map} +1 -1
  35. package/dist/forms-create-CWC7MGOJ.js +2 -0
  36. package/dist/{forms-create-3ONGTRQZ.js.map → forms-create-CWC7MGOJ.js.map} +1 -1
  37. package/dist/forms-delete-TKHTM6L5.js +2 -0
  38. package/dist/{forms-delete-CKLGD52U.js.map → forms-delete-TKHTM6L5.js.map} +1 -1
  39. package/dist/{forms-embed-4S46VDP4.js → forms-embed-FF3VMR4M.js} +3 -3
  40. package/dist/{forms-embed-4S46VDP4.js.map → forms-embed-FF3VMR4M.js.map} +1 -1
  41. package/dist/forms-export-5ZNEL3V2.js +2 -0
  42. package/dist/{forms-export-WGHH5TBF.js.map → forms-export-5ZNEL3V2.js.map} +1 -1
  43. package/dist/{forms-info-OMXUOOBT.js → forms-info-SUST47TN.js} +2 -2
  44. package/dist/{forms-info-OMXUOOBT.js.map → forms-info-SUST47TN.js.map} +1 -1
  45. package/dist/{forms-list-ZRKQXGLM.js → forms-list-W2UUPFFD.js} +2 -2
  46. package/dist/{forms-list-ZRKQXGLM.js.map → forms-list-W2UUPFFD.js.map} +1 -1
  47. package/dist/{forms-submissions-K7W7XYPR.js → forms-submissions-UTLSYPWS.js} +2 -2
  48. package/dist/{forms-submissions-K7W7XYPR.js.map → forms-submissions-UTLSYPWS.js.map} +1 -1
  49. package/dist/login-SO6BZ4HE.js +2 -0
  50. package/dist/{login-JJ7YHQB5.js.map → login-SO6BZ4HE.js.map} +1 -1
  51. package/dist/logout-QERO6G6B.js +2 -0
  52. package/dist/{logout-PS2XK3GB.js.map → logout-QERO6G6B.js.map} +1 -1
  53. package/dist/logs-export-DYOPV2LT.js +2 -0
  54. package/dist/{logs-export-55G3COYK.js.map → logs-export-DYOPV2LT.js.map} +1 -1
  55. package/dist/{logs-search-5QCEBZ6W.js → logs-search-323KRPG4.js} +2 -2
  56. package/dist/{logs-search-5QCEBZ6W.js.map → logs-search-323KRPG4.js.map} +1 -1
  57. package/dist/{logs-tail-OYLJ5EOM.js → logs-tail-J64TCZG5.js} +3 -3
  58. package/dist/{logs-tail-OYLJ5EOM.js.map → logs-tail-J64TCZG5.js.map} +1 -1
  59. package/dist/{monitor-XUW4BMBQ.js → monitor-DKLGO5H7.js} +2 -2
  60. package/dist/{monitor-XUW4BMBQ.js.map → monitor-DKLGO5H7.js.map} +1 -1
  61. package/dist/{monitor-automations-TSO65I6U.js → monitor-automations-4XOOCRFY.js} +2 -2
  62. package/dist/{monitor-automations-TSO65I6U.js.map → monitor-automations-4XOOCRFY.js.map} +1 -1
  63. package/dist/{monitor-pipelines-OPCTGGRR.js → monitor-pipelines-EPL24J3S.js} +2 -2
  64. package/dist/{monitor-pipelines-OPCTGGRR.js.map → monitor-pipelines-EPL24J3S.js.map} +1 -1
  65. package/dist/{monitor-sites-OLSGE4V2.js → monitor-sites-QIVG5TPF.js} +2 -2
  66. package/dist/{monitor-sites-OLSGE4V2.js.map → monitor-sites-QIVG5TPF.js.map} +1 -1
  67. package/dist/{monitor-storage-CVFXC3ZS.js → monitor-storage-HBCC34K7.js} +2 -2
  68. package/dist/{monitor-storage-CVFXC3ZS.js.map → monitor-storage-HBCC34K7.js.map} +1 -1
  69. package/dist/scripts-cancel-JS3LL2AT.js +2 -0
  70. package/dist/{scripts-cancel-OR2UFFC3.js.map → scripts-cancel-JS3LL2AT.js.map} +1 -1
  71. package/dist/scripts-delete-274TW63X.js +2 -0
  72. package/dist/{scripts-delete-HMHBIL4G.js.map → scripts-delete-274TW63X.js.map} +1 -1
  73. package/dist/scripts-disable-JPATOVO4.js +2 -0
  74. package/dist/{scripts-disable-ABFUD34Y.js.map → scripts-disable-JPATOVO4.js.map} +1 -1
  75. package/dist/scripts-enable-JVAA6AMP.js +2 -0
  76. package/dist/{scripts-enable-VMRAPULS.js.map → scripts-enable-JVAA6AMP.js.map} +1 -1
  77. package/dist/{scripts-list-DV2QVLPX.js → scripts-list-YPFNLI3P.js} +2 -2
  78. package/dist/{scripts-list-DV2QVLPX.js.map → scripts-list-YPFNLI3P.js.map} +1 -1
  79. package/dist/scripts-logs-VISO5ONQ.js +2 -0
  80. package/dist/{scripts-logs-AHTMTQ6G.js.map → scripts-logs-VISO5ONQ.js.map} +1 -1
  81. package/dist/scripts-run-3NBYKEMQ.js +2 -0
  82. package/dist/{scripts-run-K2LFPFTH.js.map → scripts-run-3NBYKEMQ.js.map} +1 -1
  83. package/dist/scripts-status-45K3IL5L.js +2 -0
  84. package/dist/{scripts-status-XGI5SMWL.js.map → scripts-status-45K3IL5L.js.map} +1 -1
  85. package/dist/scripts-validate-JZPIIMIX.js +2 -0
  86. package/dist/{scripts-validate-7EZXPO3Q.js.map → scripts-validate-JZPIIMIX.js.map} +1 -1
  87. package/dist/{scripts-watch-HN23AZLJ.js → scripts-watch-XZ7MZIMK.js} +2 -2
  88. package/dist/{scripts-watch-HN23AZLJ.js.map → scripts-watch-XZ7MZIMK.js.map} +1 -1
  89. package/dist/{session-T3DZUXHP.js → session-AZGWAAQQ.js} +2 -2
  90. package/dist/{session-T3DZUXHP.js.map → session-AZGWAAQQ.js.map} +1 -1
  91. package/dist/sign-cancel-OUJM5UZT.js +2 -0
  92. package/dist/{sign-cancel-R7KQFEM3.js.map → sign-cancel-OUJM5UZT.js.map} +1 -1
  93. package/dist/sign-download-FS5G6J27.js +2 -0
  94. package/dist/{sign-download-EHPZ5FMF.js.map → sign-download-FS5G6J27.js.map} +1 -1
  95. package/dist/{sign-list-6N7G36EO.js → sign-list-FV7SQSWT.js} +2 -2
  96. package/dist/{sign-list-6N7G36EO.js.map → sign-list-FV7SQSWT.js.map} +1 -1
  97. package/dist/sign-request-VVFYWT3Y.js +2 -0
  98. package/dist/{sign-request-DW6BS67P.js.map → sign-request-VVFYWT3Y.js.map} +1 -1
  99. package/dist/sign-status-LKG5UFBX.js +2 -0
  100. package/dist/{sign-status-L4PNMSBI.js.map → sign-status-LKG5UFBX.js.map} +1 -1
  101. package/dist/sign-verify-CVTTJSDL.js +2 -0
  102. package/dist/{sign-verify-I6YPHFUW.js.map → sign-verify-CVTTJSDL.js.map} +1 -1
  103. package/dist/{sites-analytics-JMW6DAC3.js → sites-analytics-JK4UFMWX.js} +2 -2
  104. package/dist/{sites-analytics-JMW6DAC3.js.map → sites-analytics-JK4UFMWX.js.map} +1 -1
  105. package/dist/sites-delete-SUHEQDZQ.js +2 -0
  106. package/dist/{sites-delete-M4DJ3GXV.js.map → sites-delete-SUHEQDZQ.js.map} +1 -1
  107. package/dist/{sites-deploys-2HBSXQA4.js → sites-deploys-C4TVID2W.js} +2 -2
  108. package/dist/{sites-deploys-2HBSXQA4.js.map → sites-deploys-C4TVID2W.js.map} +1 -1
  109. package/dist/{sites-info-CIDGRZRJ.js → sites-info-BZUK57TH.js} +2 -2
  110. package/dist/{sites-info-CIDGRZRJ.js.map → sites-info-BZUK57TH.js.map} +1 -1
  111. package/dist/{sites-list-L56B32PU.js → sites-list-LLULSE5J.js} +2 -2
  112. package/dist/{sites-list-L56B32PU.js.map → sites-list-LLULSE5J.js.map} +1 -1
  113. package/dist/{sites-logs-NMNQXOKI.js → sites-logs-NILNXF4L.js} +3 -3
  114. package/dist/{sites-logs-NMNQXOKI.js.map → sites-logs-NILNXF4L.js.map} +1 -1
  115. package/dist/sites-open-R7A5EQWM.js +3 -0
  116. package/dist/{sites-open-JOJQ5PW2.js.map → sites-open-R7A5EQWM.js.map} +1 -1
  117. package/dist/sites-purge-VHERQRUB.js +2 -0
  118. package/dist/{sites-purge-IA2673H4.js.map → sites-purge-VHERQRUB.js.map} +1 -1
  119. package/dist/sites-rename-MOO6HVW3.js +2 -0
  120. package/dist/{sites-rename-WFSBG4ME.js.map → sites-rename-MOO6HVW3.js.map} +1 -1
  121. package/dist/sites-rollback-SPW2Z73L.js +2 -0
  122. package/dist/{sites-rollback-REUDH4TZ.js.map → sites-rollback-SPW2Z73L.js.map} +1 -1
  123. package/dist/sites-unpublish-6P7SQGIU.js +2 -0
  124. package/dist/{sites-unpublish-AS4D6N3M.js.map → sites-unpublish-6P7SQGIU.js.map} +1 -1
  125. package/dist/sites-visibility-R3AQJ76F.js +2 -0
  126. package/dist/{sites-visibility-S3TKH6XD.js.map → sites-visibility-R3AQJ76F.js.map} +1 -1
  127. package/dist/storage-cat-HXFOJJG5.js +2 -0
  128. package/dist/{storage-cat-LZ7LYZAY.js.map → storage-cat-HXFOJJG5.js.map} +1 -1
  129. package/dist/storage-clean-LEQEYWL6.js +2 -0
  130. package/dist/{storage-clean-S57ZHSGL.js.map → storage-clean-LEQEYWL6.js.map} +1 -1
  131. package/dist/storage-cp-JTPTXZRQ.js +2 -0
  132. package/dist/{storage-cp-M2BVRCIL.js.map → storage-cp-JTPTXZRQ.js.map} +1 -1
  133. package/dist/storage-diff-XURHVTPC.js +2 -0
  134. package/dist/{storage-diff-ZATBMPAM.js.map → storage-diff-XURHVTPC.js.map} +1 -1
  135. package/dist/storage-download-5OYCNXKL.js +3 -0
  136. package/dist/{storage-download-PZEEX2Z3.js.map → storage-download-5OYCNXKL.js.map} +1 -1
  137. package/dist/{storage-info-T62YZOPK.js → storage-info-WA74POPR.js} +2 -2
  138. package/dist/{storage-info-T62YZOPK.js.map → storage-info-WA74POPR.js.map} +1 -1
  139. package/dist/{storage-ls-DGOI7ZXX.js → storage-ls-7RZQ3AXR.js} +2 -2
  140. package/dist/{storage-ls-DGOI7ZXX.js.map → storage-ls-7RZQ3AXR.js.map} +1 -1
  141. package/dist/storage-mkdir-NWOHGAQI.js +2 -0
  142. package/dist/{storage-mkdir-J4BYV3QL.js.map → storage-mkdir-NWOHGAQI.js.map} +1 -1
  143. package/dist/storage-mv-XQ7EPX3M.js +2 -0
  144. package/dist/{storage-mv-R73IGYOM.js.map → storage-mv-XQ7EPX3M.js.map} +1 -1
  145. package/dist/storage-rm-LYO6UR3G.js +2 -0
  146. package/dist/{storage-rm-M3UODY5G.js.map → storage-rm-LYO6UR3G.js.map} +1 -1
  147. package/dist/{storage-search-H44Y6OKS.js → storage-search-RIT5ISCA.js} +2 -2
  148. package/dist/{storage-search-H44Y6OKS.js.map → storage-search-RIT5ISCA.js.map} +1 -1
  149. package/dist/storage-share-OURRQWZK.js +2 -0
  150. package/dist/{storage-share-VIJJIHBX.js.map → storage-share-OURRQWZK.js.map} +1 -1
  151. package/dist/storage-tag-NGJGUJSZ.js +2 -0
  152. package/dist/{storage-tag-PAVT6GBZ.js.map → storage-tag-NGJGUJSZ.js.map} +1 -1
  153. package/dist/storage-unshare-3DXEKHEH.js +2 -0
  154. package/dist/{storage-unshare-O3AAJZMT.js.map → storage-unshare-3DXEKHEH.js.map} +1 -1
  155. package/dist/storage-upload-5M6PBHOC.js +2 -0
  156. package/dist/{storage-upload-DRYGLH2O.js.map → storage-upload-5M6PBHOC.js.map} +1 -1
  157. package/dist/{time-list-CW2OOCPT.js → time-list-GMZYZAOU.js} +2 -2
  158. package/dist/{time-list-CW2OOCPT.js.map → time-list-GMZYZAOU.js.map} +1 -1
  159. package/dist/time-lock-2OLEVQPJ.js +2 -0
  160. package/dist/{time-lock-A2MZ3MP2.js.map → time-lock-2OLEVQPJ.js.map} +1 -1
  161. package/dist/time-proof-RUTDAEKP.js +2 -0
  162. package/dist/{time-proof-ZLRY6ZVZ.js.map → time-proof-RUTDAEKP.js.map} +1 -1
  163. package/dist/{time-status-XQLRCYF6.js → time-status-TVNJBFKC.js} +2 -2
  164. package/dist/{time-status-XQLRCYF6.js.map → time-status-TVNJBFKC.js.map} +1 -1
  165. package/dist/time-unlock-OO6QH5R6.js +2 -0
  166. package/dist/{time-unlock-KNMGQ3TK.js.map → time-unlock-OO6QH5R6.js.map} +1 -1
  167. package/dist/update-XJQSXSFU.js +2 -0
  168. package/dist/{update-IYMIV34T.js.map → update-XJQSXSFU.js.map} +1 -1
  169. package/dist/version-LHSDYI7Q.js +2 -0
  170. package/dist/version-LHSDYI7Q.js.map +1 -0
  171. package/dist/{whoami-WIHSRTUN.js → whoami-SAURQARO.js} +2 -2
  172. package/dist/{whoami-WIHSRTUN.js.map → whoami-SAURQARO.js.map} +1 -1
  173. package/package.json +1 -1
  174. package/dist/auth-revoke-OC67YCEQ.js +0 -2
  175. package/dist/chunk-6TS5Y27A.js +0 -6
  176. package/dist/chunk-6TS5Y27A.js.map +0 -1
  177. package/dist/chunk-C5KZCYJ4.js +0 -2
  178. package/dist/chunk-C5KZCYJ4.js.map +0 -1
  179. package/dist/chunk-ON3YIMVG.js +0 -2
  180. package/dist/chunk-ON3YIMVG.js.map +0 -1
  181. package/dist/client-FRNT7PEB.js +0 -2
  182. package/dist/collab-invite-HUSQYV23.js +0 -2
  183. package/dist/collab-leave-W2ESTT5L.js +0 -2
  184. package/dist/collab-remove-ZMB22U2T.js +0 -2
  185. package/dist/collab-transfer-56MH4IT6.js +0 -2
  186. package/dist/deploy-WK3VAA7D.js +0 -3
  187. package/dist/forms-clear-2ERBEAEY.js +0 -2
  188. package/dist/forms-create-3ONGTRQZ.js +0 -2
  189. package/dist/forms-delete-CKLGD52U.js +0 -2
  190. package/dist/forms-export-WGHH5TBF.js +0 -2
  191. package/dist/login-JJ7YHQB5.js +0 -2
  192. package/dist/logout-PS2XK3GB.js +0 -2
  193. package/dist/logs-export-55G3COYK.js +0 -2
  194. package/dist/scripts-cancel-OR2UFFC3.js +0 -2
  195. package/dist/scripts-delete-HMHBIL4G.js +0 -2
  196. package/dist/scripts-disable-ABFUD34Y.js +0 -2
  197. package/dist/scripts-enable-VMRAPULS.js +0 -2
  198. package/dist/scripts-logs-AHTMTQ6G.js +0 -2
  199. package/dist/scripts-run-K2LFPFTH.js +0 -2
  200. package/dist/scripts-status-XGI5SMWL.js +0 -2
  201. package/dist/scripts-validate-7EZXPO3Q.js +0 -2
  202. package/dist/sign-cancel-R7KQFEM3.js +0 -2
  203. package/dist/sign-download-EHPZ5FMF.js +0 -2
  204. package/dist/sign-request-DW6BS67P.js +0 -2
  205. package/dist/sign-status-L4PNMSBI.js +0 -2
  206. package/dist/sign-verify-I6YPHFUW.js +0 -2
  207. package/dist/sites-delete-M4DJ3GXV.js +0 -2
  208. package/dist/sites-open-JOJQ5PW2.js +0 -3
  209. package/dist/sites-purge-IA2673H4.js +0 -2
  210. package/dist/sites-rename-WFSBG4ME.js +0 -2
  211. package/dist/sites-rollback-REUDH4TZ.js +0 -2
  212. package/dist/sites-unpublish-AS4D6N3M.js +0 -2
  213. package/dist/sites-visibility-S3TKH6XD.js +0 -2
  214. package/dist/storage-cat-LZ7LYZAY.js +0 -2
  215. package/dist/storage-clean-S57ZHSGL.js +0 -2
  216. package/dist/storage-cp-M2BVRCIL.js +0 -2
  217. package/dist/storage-diff-ZATBMPAM.js +0 -2
  218. package/dist/storage-download-PZEEX2Z3.js +0 -3
  219. package/dist/storage-mkdir-J4BYV3QL.js +0 -2
  220. package/dist/storage-mv-R73IGYOM.js +0 -2
  221. package/dist/storage-rm-M3UODY5G.js +0 -2
  222. package/dist/storage-share-VIJJIHBX.js +0 -2
  223. package/dist/storage-tag-PAVT6GBZ.js +0 -2
  224. package/dist/storage-unshare-O3AAJZMT.js +0 -2
  225. package/dist/storage-upload-DRYGLH2O.js +0 -2
  226. package/dist/time-lock-A2MZ3MP2.js +0 -2
  227. package/dist/time-proof-ZLRY6ZVZ.js +0 -2
  228. package/dist/time-unlock-KNMGQ3TK.js +0 -2
  229. package/dist/update-IYMIV34T.js +0 -2
  230. package/dist/version-7IHVNLWY.js +0 -2
  231. package/dist/version-7IHVNLWY.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/auth/refresh.ts","../src/lib/api/client.ts"],"names":["LOCK_FILE","path","os","ensureLockDir","dir","fs","acquireLock","acquired","attempts","fd","stat","refreshAccessToken","release","session","loadSession","fingerprint","computeDeviceFingerprint","clearSession","response","apiPost","newSession","saveSession","MAX_RETRIES","BASE_DELAY","RATE_LIMIT_WINDOW","API_BASE","getApiBase","lastRequestTime","rateLimit","elapsed","r","buildRequestId","nanoid","signRequest","requestId","timestamp","method","accessToken","data","computeHMAC","apiRequest","options","headers","body","authenticated","retries","reqHeaders","url","fetchOptions","lastError","attempt","retryResponse","handleResponse","err","delay","message","ApiError","text","status","details","apiGet","apiPut","apiDelete","apiUpload","formData"],"mappings":"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","file":"chunk-RWWBBPEJ.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport os from 'node:os'\nimport { SquidSession } from '../crypto/ssp.js'\nimport { apiPost } from '../api/client.js'\nimport { computeDeviceFingerprint } from './fingerprint.js'\nimport { loadSession, saveSession, clearSession } from './session.js'\n\nconst LOCK_FILE = path.join(os.homedir(), '.squidcloud', '.refresh.lock')\n\nfunction ensureLockDir(): void {\n const dir = path.dirname(LOCK_FILE)\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true, mode: 0o700 })\n }\n}\n\nasync function acquireLock(): Promise<() => void> {\n ensureLockDir()\n let acquired = false\n let attempts = 0\n while (!acquired && attempts < 50) {\n try {\n const fd = fs.openSync(LOCK_FILE, 'wx')\n fs.writeSync(fd, String(process.pid))\n fs.closeSync(fd)\n acquired = true\n } catch {\n const stat = fs.statSync(LOCK_FILE)\n const age = Date.now() - stat.mtimeMs\n if (age > 10000) {\n try { fs.unlinkSync(LOCK_FILE) } catch {}\n }\n await new Promise(r => setTimeout(r, 100))\n attempts++\n }\n }\n return () => {\n try { fs.unlinkSync(LOCK_FILE) } catch {}\n }\n}\n\nexport async function refreshAccessToken(): Promise<SquidSession | null> {\n const release = await acquireLock()\n try {\n const session = await loadSession()\n if (!session) return null\n\n const fingerprint = computeDeviceFingerprint()\n if (session.device_fingerprint !== fingerprint) {\n await clearSession()\n return null\n }\n\n const response = await apiPost<{ session: SquidSession }>('/api/auth/ssp/refresh', {\n refresh_token: session.refresh_token,\n refresh_token_id: session.refresh_token_id,\n device_fingerprint: fingerprint,\n })\n\n if (!response || !response.session) {\n await clearSession()\n return null\n }\n\n const newSession: SquidSession = {\n ...response.session,\n device_fingerprint: fingerprint,\n }\n await saveSession(newSession)\n return newSession\n } catch {\n await clearSession()\n return null\n } finally {\n release()\n }\n}\n","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
+ {"version":3,"sources":["../src/lib/auth/refresh.ts","../src/lib/api/client.ts"],"names":["LOCK_FILE","path","os","ensureLockDir","dir","fs","acquireLock","acquired","attempts","fd","stat","refreshAccessToken","release","session","loadSession","fingerprint","computeDeviceFingerprint","clearSession","response","apiPost","newSession","saveSession","MAX_RETRIES","BASE_DELAY","RATE_LIMIT_WINDOW","API_BASE","getApiBase","lastRequestTime","rateLimit","elapsed","r","buildRequestId","nanoid","signRequest","requestId","timestamp","method","accessToken","data","computeHMAC","apiRequest","options","headers","body","authenticated","retries","reqHeaders","url","fetchOptions","lastError","attempt","retryResponse","handleResponse","err","delay","message","ApiError","text","status","details","apiGet","apiPut","apiDelete","apiUpload","formData"],"mappings":"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","file":"chunk-BC2OVPRV.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport os from 'node:os'\nimport { SquidSession } from '../crypto/ssp.js'\nimport { apiPost } from '../api/client.js'\nimport { computeDeviceFingerprint } from './fingerprint.js'\nimport { loadSession, saveSession, clearSession } from './session.js'\n\nconst LOCK_FILE = path.join(os.homedir(), '.squidcloud', '.refresh.lock')\n\nfunction ensureLockDir(): void {\n const dir = path.dirname(LOCK_FILE)\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true, mode: 0o700 })\n }\n}\n\nasync function acquireLock(): Promise<() => void> {\n ensureLockDir()\n let acquired = false\n let attempts = 0\n while (!acquired && attempts < 50) {\n try {\n const fd = fs.openSync(LOCK_FILE, 'wx')\n fs.writeSync(fd, String(process.pid))\n fs.closeSync(fd)\n acquired = true\n } catch {\n const stat = fs.statSync(LOCK_FILE)\n const age = Date.now() - stat.mtimeMs\n if (age > 10000) {\n try { fs.unlinkSync(LOCK_FILE) } catch {}\n }\n await new Promise(r => setTimeout(r, 100))\n attempts++\n }\n }\n return () => {\n try { fs.unlinkSync(LOCK_FILE) } catch {}\n }\n}\n\nexport async function refreshAccessToken(): Promise<SquidSession | null> {\n const release = await acquireLock()\n try {\n const session = await loadSession()\n if (!session) return null\n\n const fingerprint = computeDeviceFingerprint()\n if (session.device_fingerprint !== fingerprint) {\n await clearSession()\n return null\n }\n\n const response = await apiPost<{ session: SquidSession }>('/api/auth/ssp/refresh', {\n refresh_token: session.refresh_token,\n refresh_token_id: session.refresh_token_id,\n device_fingerprint: fingerprint,\n })\n\n if (!response || !response.session) {\n await clearSession()\n return null\n }\n\n const newSession: SquidSession = {\n ...response.session,\n device_fingerprint: fingerprint,\n }\n await saveSession(newSession)\n return newSession\n } catch {\n await clearSession()\n return null\n } finally {\n release()\n }\n}\n","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"]}
@@ -0,0 +1,3 @@
1
+ import {f as f$1}from'./chunk-QT7R3AXE.js';import o from'chalk';import c from'ora';var p="#0A0E1A",d="#4FC3F7",f="#7C4DFF",g="#FFFFFF",u=[" \u2554\u2550\u2550\u2550\u2557 "," \u2554\u255D\u2588 \u2588\u255A\u2557 "," \u2551 \u25C9 \u2551 "," \u255A\u2557 \u2554\u255D "," \u2551 \u2566 \u2551 "," \u2554\u255D \u2551 \u255A\u2557 "," \u2551 \u2551 \u2551 "," \u255A\u2557 \u2551 \u2554\u255D "," \u255A\u2550\u2550\u2550\u255D "];function m(){return u.map((t,r)=>{let a=t.replace(/█/g,o.hex(f)("\u2588")).replace(/◉/g,o.hex(d)("\u25C9")).replace(/[╔╗╚╝═║╦]/g,l=>o.hex(g)(l));return o.bgHex(p)(a)}).join(`
2
+ `)}function n(){return !!(process.env.CI||process.env.GITHUB_ACTIONS||process.env.GITLAB_CI||process.env.CIRCLECI)}var A={dots:{spinner:"dots"},moon:{spinner:"moon"},arc:{spinner:"arc"},bounce:{spinner:"bounce"},shark:{spinner:{interval:120,frames:["\u25B8 ","\u25B8\u25B8 ","\u25B8\u25B8\u25B8 ","\u25B8\u25B8\u25B8\u25B8"," \u25B8\u25B8\u25B8\u25B8"," \u25B8\u25B8\u25B8"," \u25B8\u25B8"," \u25B8"]}}};function R(e,t="shark"){if(n()||f$1()){let r={...c({text:e,spinner:"dots"}),start:()=>(n()||console.log(e),r),stop:()=>(n()||console.log(),r),succeed:()=>(n()||console.log(`${o.green("\u2713")} ${e}`),r),fail:()=>(n()||console.log(`${o.red("\u2717")} ${e}`),r),warn:()=>(n()||console.log(`${o.hex("#FF9800")("\u26A0")} ${e}`),r),info:()=>(n()||console.log(`${o.hex("#4FC3F7")("\u2139")} ${e}`),r),stopAndPersist:()=>(n()||console.log(`${e}`),r),clear:()=>r,render:()=>r,frame:()=>" ",text:e,isSpinning:false,indent:0,color:"cyan",prefixText:"",spinner:{interval:100,frames:[""]}};return r}return c({text:e,...A[t]}).start()}export{m as a,R as b};//# sourceMappingURL=chunk-FYFPDKJM.js.map
3
+ //# sourceMappingURL=chunk-FYFPDKJM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/output/mascot.ts","../src/lib/output/index.ts","../src/lib/output/spinner.ts"],"names":["NAVY","BLUE","VIOLET","WHITE","SQUID_ART","renderMascot","line","i","colored","chalk","m","isCI","SPINNER_FRAMES","createSpinner","text","style","isJsonMode","silent","ora"],"mappings":"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","file":"chunk-FYFPDKJM.js","sourcesContent":["import chalk from 'chalk'\n\nconst NAVY = '#0A0E1A'\nconst BLUE = '#4FC3F7'\nconst VIOLET = '#7C4DFF'\nconst WHITE = '#FFFFFF'\n\nconst SQUID_ART = [\n ' ╔═══╗ ',\n ' ╔╝█ █╚╗ ',\n ' ║ ◉ ║ ',\n ' ╚╗ ╔╝ ',\n ' ║ ╦ ║ ',\n ' ╔╝ ║ ╚╗ ',\n ' ║ ║ ║ ',\n ' ╚╗ ║ ╔╝ ',\n ' ╚═══╝ ',\n]\n\nexport function renderMascot(): string {\n const lines = SQUID_ART.map((line, i) => {\n const colored = line.replace(/█/g, chalk.hex(VIOLET)('█'))\n .replace(/◉/g, chalk.hex(BLUE)('◉'))\n .replace(/[╔╗╚╝═║╦]/g, (m) => chalk.hex(WHITE)(m))\n return chalk.bgHex(NAVY)(colored)\n })\n return lines.join('\\n')\n}\n\nexport function renderBrandedMascot(): string {\n const mascot = renderMascot()\n const brand = chalk.hex(BLUE)('SQUID') + chalk.hex(VIOLET)('CLOUD')\n const tagline = chalk.hex(WHITE).dim('static sites · storage · pipelines')\n return `${mascot}\\n\\n ${brand} ${tagline}\\n`\n}\n","export { renderMascot, renderBrandedMascot } from './mascot.js'\nexport { brand, brandDim, brandLine, success, error, warn, info, muted, copied, BRAND_MARKER, SUCCESS_MARK, ERROR_MARK, WARN_MARK, INFO_MARK, PROGRESS_MARK } from './brand.js'\nexport { setJsonMode, isJsonMode, log, logSuccess, logError, logWarn, logInfo, logBrand, logRaw, logJSON, logErrorJSON, writeAudit } from './logger.js'\nexport { createSpinner } from './spinner.js'\nexport { createTable, renderTable, renderCompactTable } from './table.js'\n\nexport function isCI(): boolean {\n return !!(\n process.env.CI ||\n process.env.GITHUB_ACTIONS ||\n process.env.GITLAB_CI ||\n process.env.CIRCLECI\n )\n}\n","import ora, { Ora } from 'ora'\nimport chalk from 'chalk'\nimport { isCI, isJsonMode } from './index.js'\n\nconst SPINNER_FRAMES: Record<string, ora.Options> = {\n dots: { spinner: 'dots' },\n moon: { spinner: 'moon' },\n arc: { spinner: 'arc' },\n bounce: { spinner: 'bounce' },\n shark: { spinner: { interval: 120, frames: ['▸ ', '▸▸ ', '▸▸▸ ', '▸▸▸▸', ' ▸▸▸▸', ' ▸▸▸', ' ▸▸', ' ▸'] } },\n}\n\nexport function createSpinner(text: string, style: keyof typeof SPINNER_FRAMES = 'shark'): Ora {\n if (isCI() || isJsonMode()) {\n const silent: Ora = {\n ...ora({ text, spinner: 'dots' }),\n start: () => { if (!isCI()) console.log(text); return silent },\n stop: () => { if (!isCI()) console.log(); return silent },\n succeed: () => { if (!isCI()) console.log(`${chalk.green('✓')} ${text}`); return silent },\n fail: () => { if (!isCI()) console.log(`${chalk.red('✗')} ${text}`); return silent },\n warn: () => { if (!isCI()) console.log(`${chalk.hex('#FF9800')('⚠')} ${text}`); return silent },\n info: () => { if (!isCI()) console.log(`${chalk.hex('#4FC3F7')('ℹ')} ${text}`); return silent },\n stopAndPersist: () => { if (!isCI()) console.log(`${text}`); return silent },\n clear: () => { return silent },\n render: () => { return silent },\n frame: () => ' ',\n text,\n isSpinning: false,\n indent: 0,\n color: 'cyan',\n prefixText: '',\n spinner: { interval: 100, frames: [''] },\n } as unknown as Ora\n return silent\n }\n return ora({ text, ...SPINNER_FRAMES[style] }).start()\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export{c as ApiError,g as apiDelete,d as apiGet,e as apiPost,f as apiPut,b as apiRequest,h as apiUpload}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-4NTVRCZM.js';//# sourceMappingURL=client-RFYERFWZ.js.map
2
+ //# sourceMappingURL=client-RFYERFWZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"client-FRNT7PEB.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"client-RFYERFWZ.js"}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-NDB6KXYI.js';import {m}from'./chunk-C5KZCYJ4.js';import {WebSocket}from'ws';import e from'chalk';async function f(r){let i=await m();i||(console.error("Not authenticated"),process.exit(1));let a$1=a().replace(/^http/,"ws"),s=new WebSocket(`${a$1}/api/v1/collab/${encodeURIComponent(r)}/activity`,{headers:{Authorization:`Bearer ${i.access_token}`}});console.log(e.dim(`Streaming activity for "${r}"... (Ctrl+C to stop)`)),s.on("message",t=>{try{let o=JSON.parse(t.toString()),l=e.dim(new Date(o.timestamp).toLocaleTimeString()),p=e.hex("#4FC3F7")(o.user||"unknown"),m=o.action==="upload"?e.green("uploaded"):o.action==="delete"?e.red("deleted"):o.action==="edit"?e.yellow("edited"):o.action,d=o.file||o.path||"";console.log(`${l} ${p} ${m} ${d}`);}catch{console.log(t.toString());}}),s.on("error",t=>{console.error(e.red(`Error: ${t.message}`)),process.exit(1);}),process.on("SIGINT",()=>{s.close(),process.exit(0);});}export{f as default};//# sourceMappingURL=collab-activity-GQOGCECR.js.map
2
- //# sourceMappingURL=collab-activity-GQOGCECR.js.map
1
+ import {a}from'./chunk-NDB6KXYI.js';import {m}from'./chunk-4NTVRCZM.js';import {WebSocket}from'ws';import e from'chalk';async function f(r){let i=await m();i||(console.error("Not authenticated"),process.exit(1));let a$1=a().replace(/^http/,"ws"),s=new WebSocket(`${a$1}/api/v1/collab/${encodeURIComponent(r)}/activity`,{headers:{Authorization:`Bearer ${i.access_token}`}});console.log(e.dim(`Streaming activity for "${r}"... (Ctrl+C to stop)`)),s.on("message",t=>{try{let o=JSON.parse(t.toString()),l=e.dim(new Date(o.timestamp).toLocaleTimeString()),p=e.hex("#4FC3F7")(o.user||"unknown"),m=o.action==="upload"?e.green("uploaded"):o.action==="delete"?e.red("deleted"):o.action==="edit"?e.yellow("edited"):o.action,d=o.file||o.path||"";console.log(`${l} ${p} ${m} ${d}`);}catch{console.log(t.toString());}}),s.on("error",t=>{console.error(e.red(`Error: ${t.message}`)),process.exit(1);}),process.on("SIGINT",()=>{s.close(),process.exit(0);});}export{f as default};//# sourceMappingURL=collab-activity-5RK36CJW.js.map
2
+ //# sourceMappingURL=collab-activity-5RK36CJW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-activity.ts"],"names":["collabActivity","folder","session","loadSession","apiBase","getApiBase","ws","WebSocket","chalk","data","e","ts","user","action","file","err"],"mappings":"wHAKA,eAAOA,CAAAA,CAAsCC,CAAAA,CAA+B,CAC1E,IAAMC,CAAAA,CAAU,MAAMC,CAAAA,EAAY,CAC7BD,IAAW,OAAA,CAAQ,KAAA,CAAM,mBAAmB,CAAA,CAAG,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA,CAElE,IAAME,GAAAA,CAAUC,CAAAA,GAAa,OAAA,CAAQ,OAAA,CAAS,IAAI,CAAA,CAC5CC,CAAAA,CAAK,IAAIC,SAAAA,CAAU,CAAA,EAAGH,GAAO,CAAA,eAAA,EAAkB,kBAAA,CAAmBH,CAAM,CAAC,CAAA,SAAA,CAAA,CAAa,CAC1F,OAAA,CAAS,CAAE,aAAA,CAAe,CAAA,OAAA,EAAUC,EAAQ,YAAY,CAAA,CAAG,CAC7D,CAAC,CAAA,CAED,QAAQ,GAAA,CAAIM,CAAAA,CAAM,IAAI,CAAA,wBAAA,EAA2BP,CAAM,uBAAuB,CAAC,CAAA,CAC/EK,EAAG,EAAA,CAAG,SAAA,CAAYG,GAAiB,CACjC,GAAI,CACF,IAAMC,CAAAA,CAAI,KAAK,KAAA,CAAMD,CAAAA,CAAK,UAAU,CAAA,CAC9BE,EAAKH,CAAAA,CAAM,GAAA,CAAI,IAAI,IAAA,CAAKE,CAAAA,CAAE,SAAS,CAAA,CAAE,kBAAA,EAAoB,CAAA,CACzDE,CAAAA,CAAOJ,EAAM,GAAA,CAAI,SAAS,CAAA,CAAEE,CAAAA,CAAE,MAAQ,SAAS,CAAA,CAC/CG,EAASH,CAAAA,CAAE,MAAA,GAAW,SAAWF,CAAAA,CAAM,KAAA,CAAM,UAAU,CAAA,CAC3DE,CAAAA,CAAE,SAAW,QAAA,CAAWF,CAAAA,CAAM,IAAI,SAAS,CAAA,CAC3CE,EAAE,MAAA,GAAW,MAAA,CAASF,EAAM,MAAA,CAAO,QAAQ,EAAIE,CAAAA,CAAE,MAAA,CAC7CI,EAAOJ,CAAAA,CAAE,IAAA,EAAQA,EAAE,IAAA,EAAQ,EAAA,CACjC,QAAQ,GAAA,CAAI,CAAA,EAAGC,CAAE,CAAA,CAAA,EAAIC,CAAI,IAAIC,CAAM,CAAA,CAAA,EAAIC,CAAI,CAAA,CAAE,EAC/C,CAAA,KAAQ,CACN,QAAQ,GAAA,CAAIL,CAAAA,CAAK,UAAU,EAC7B,CACF,CAAC,CAAA,CACDH,EAAG,EAAA,CAAG,OAAA,CAAUS,GAAQ,CAAE,OAAA,CAAQ,MAAMP,CAAAA,CAAM,GAAA,CAAI,UAAUO,CAAAA,CAAI,OAAO,EAAE,CAAC,CAAA,CAAG,QAAQ,IAAA,CAAK,CAAC,EAAE,CAAC,CAAA,CAC9F,QAAQ,EAAA,CAAG,QAAA,CAAU,IAAM,CAAET,CAAAA,CAAG,OAAM,CAAG,OAAA,CAAQ,KAAK,CAAC,EAAE,CAAC,EAC5D","file":"collab-activity-GQOGCECR.js","sourcesContent":["import { WebSocket } from 'ws'\nimport chalk from 'chalk'\nimport { loadSession } from '../../lib/auth/session.js'\nimport { getApiBase } from '../../lib/api/cert-pin.js'\n\nexport default async function collabActivity(folder: string): Promise<void> {\n const session = await loadSession()\n if (!session) { console.error('Not authenticated'); process.exit(1) }\n\n const apiBase = getApiBase().replace(/^http/, 'ws')\n const ws = new WebSocket(`${apiBase}/api/v1/collab/${encodeURIComponent(folder)}/activity`, {\n headers: { Authorization: `Bearer ${session.access_token}` },\n })\n\n console.log(chalk.dim(`Streaming activity for \"${folder}\"... (Ctrl+C to stop)`))\n ws.on('message', (data: Buffer) => {\n try {\n const e = JSON.parse(data.toString())\n const ts = chalk.dim(new Date(e.timestamp).toLocaleTimeString())\n const user = chalk.hex('#4FC3F7')(e.user || 'unknown')\n const action = e.action === 'upload' ? chalk.green('uploaded') :\n e.action === 'delete' ? chalk.red('deleted') :\n e.action === 'edit' ? chalk.yellow('edited') : e.action\n const file = e.file || e.path || ''\n console.log(`${ts} ${user} ${action} ${file}`)\n } catch {\n console.log(data.toString())\n }\n })\n ws.on('error', (err) => { console.error(chalk.red(`Error: ${err.message}`)); process.exit(1) })\n process.on('SIGINT', () => { ws.close(); process.exit(0) })\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-activity.ts"],"names":["collabActivity","folder","session","loadSession","apiBase","getApiBase","ws","WebSocket","chalk","data","e","ts","user","action","file","err"],"mappings":"wHAKA,eAAOA,CAAAA,CAAsCC,CAAAA,CAA+B,CAC1E,IAAMC,CAAAA,CAAU,MAAMC,CAAAA,EAAY,CAC7BD,IAAW,OAAA,CAAQ,KAAA,CAAM,mBAAmB,CAAA,CAAG,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA,CAElE,IAAME,GAAAA,CAAUC,CAAAA,GAAa,OAAA,CAAQ,OAAA,CAAS,IAAI,CAAA,CAC5CC,CAAAA,CAAK,IAAIC,SAAAA,CAAU,CAAA,EAAGH,GAAO,CAAA,eAAA,EAAkB,kBAAA,CAAmBH,CAAM,CAAC,CAAA,SAAA,CAAA,CAAa,CAC1F,OAAA,CAAS,CAAE,aAAA,CAAe,CAAA,OAAA,EAAUC,EAAQ,YAAY,CAAA,CAAG,CAC7D,CAAC,CAAA,CAED,QAAQ,GAAA,CAAIM,CAAAA,CAAM,IAAI,CAAA,wBAAA,EAA2BP,CAAM,uBAAuB,CAAC,CAAA,CAC/EK,EAAG,EAAA,CAAG,SAAA,CAAYG,GAAiB,CACjC,GAAI,CACF,IAAMC,CAAAA,CAAI,KAAK,KAAA,CAAMD,CAAAA,CAAK,UAAU,CAAA,CAC9BE,EAAKH,CAAAA,CAAM,GAAA,CAAI,IAAI,IAAA,CAAKE,CAAAA,CAAE,SAAS,CAAA,CAAE,kBAAA,EAAoB,CAAA,CACzDE,CAAAA,CAAOJ,EAAM,GAAA,CAAI,SAAS,CAAA,CAAEE,CAAAA,CAAE,MAAQ,SAAS,CAAA,CAC/CG,EAASH,CAAAA,CAAE,MAAA,GAAW,SAAWF,CAAAA,CAAM,KAAA,CAAM,UAAU,CAAA,CAC3DE,CAAAA,CAAE,SAAW,QAAA,CAAWF,CAAAA,CAAM,IAAI,SAAS,CAAA,CAC3CE,EAAE,MAAA,GAAW,MAAA,CAASF,EAAM,MAAA,CAAO,QAAQ,EAAIE,CAAAA,CAAE,MAAA,CAC7CI,EAAOJ,CAAAA,CAAE,IAAA,EAAQA,EAAE,IAAA,EAAQ,EAAA,CACjC,QAAQ,GAAA,CAAI,CAAA,EAAGC,CAAE,CAAA,CAAA,EAAIC,CAAI,IAAIC,CAAM,CAAA,CAAA,EAAIC,CAAI,CAAA,CAAE,EAC/C,CAAA,KAAQ,CACN,QAAQ,GAAA,CAAIL,CAAAA,CAAK,UAAU,EAC7B,CACF,CAAC,CAAA,CACDH,EAAG,EAAA,CAAG,OAAA,CAAUS,GAAQ,CAAE,OAAA,CAAQ,MAAMP,CAAAA,CAAM,GAAA,CAAI,UAAUO,CAAAA,CAAI,OAAO,EAAE,CAAC,CAAA,CAAG,QAAQ,IAAA,CAAK,CAAC,EAAE,CAAC,CAAA,CAC9F,QAAQ,EAAA,CAAG,QAAA,CAAU,IAAM,CAAET,CAAAA,CAAG,OAAM,CAAG,OAAA,CAAQ,KAAK,CAAC,EAAE,CAAC,EAC5D","file":"collab-activity-5RK36CJW.js","sourcesContent":["import { WebSocket } from 'ws'\nimport chalk from 'chalk'\nimport { loadSession } from '../../lib/auth/session.js'\nimport { getApiBase } from '../../lib/api/cert-pin.js'\n\nexport default async function collabActivity(folder: string): Promise<void> {\n const session = await loadSession()\n if (!session) { console.error('Not authenticated'); process.exit(1) }\n\n const apiBase = getApiBase().replace(/^http/, 'ws')\n const ws = new WebSocket(`${apiBase}/api/v1/collab/${encodeURIComponent(folder)}/activity`, {\n headers: { Authorization: `Bearer ${session.access_token}` },\n })\n\n console.log(chalk.dim(`Streaming activity for \"${folder}\"... (Ctrl+C to stop)`))\n ws.on('message', (data: Buffer) => {\n try {\n const e = JSON.parse(data.toString())\n const ts = chalk.dim(new Date(e.timestamp).toLocaleTimeString())\n const user = chalk.hex('#4FC3F7')(e.user || 'unknown')\n const action = e.action === 'upload' ? chalk.green('uploaded') :\n e.action === 'delete' ? chalk.red('deleted') :\n e.action === 'edit' ? chalk.yellow('edited') : e.action\n const file = e.file || e.path || ''\n console.log(`${ts} ${user} ${action} ${file}`)\n } catch {\n console.log(data.toString())\n }\n })\n ws.on('error', (err) => { console.error(chalk.red(`Error: ${err.message}`)); process.exit(1) })\n process.on('SIGINT', () => { ws.close(); process.exit(0) })\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';async function m(i,e$1){let t=b(`Inviting ${e$1.email} to "${i}" as ${e$1.role}...`);t.start(),await e("/api/v1/collab/invite",{folder:i,email:e$1.email,role:e$1.role},{authenticated:true}),t.succeed(),g(`Invited ${e$1.email} to "${i}" as ${e$1.role}`);}export{m as default};//# sourceMappingURL=collab-invite-HAMMPEAQ.js.map
2
+ //# sourceMappingURL=collab-invite-HAMMPEAQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-invite.ts"],"names":["collabInvite","folder","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"4NAIA,eAAOA,CAAAA,CAAoCC,EAAgBC,GAAAA,CAAyD,CAClH,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,SAAA,EAAYF,GAAAA,CAAQ,KAAK,CAAA,KAAA,EAAQD,CAAM,CAAA,KAAA,EAAQC,GAAAA,CAAQ,IAAI,CAAA,GAAA,CAAK,CAAA,CAC9FC,CAAAA,CAAQ,OAAM,CACd,MAAME,CAAAA,CAAQ,uBAAA,CAAyB,CACrC,MAAA,CAAAJ,EACA,KAAA,CAAOC,GAAAA,CAAQ,KAAA,CACf,IAAA,CAAMA,GAAAA,CAAQ,IAChB,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC1BC,CAAAA,CAAQ,SAAQ,CAChBG,CAAAA,CAAW,CAAA,QAAA,EAAWJ,GAAAA,CAAQ,KAAK,CAAA,KAAA,EAAQD,CAAM,CAAA,KAAA,EAAQC,GAAAA,CAAQ,IAAI,CAAA,CAAE,EACzE","file":"collab-invite-HUSQYV23.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabInvite(folder: string, options: { email: string; role: string }): Promise<void> {\n const spinner = createSpinner(`Inviting ${options.email} to \"${folder}\" as ${options.role}...`)\n spinner.start()\n await apiPost('/api/v1/collab/invite', {\n folder,\n email: options.email,\n role: options.role,\n }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Invited ${options.email} to \"${folder}\" as ${options.role}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-invite.ts"],"names":["collabInvite","folder","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"gMAIA,eAAOA,CAAAA,CAAoCC,EAAgBC,GAAAA,CAAyD,CAClH,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,SAAA,EAAYF,GAAAA,CAAQ,KAAK,CAAA,KAAA,EAAQD,CAAM,CAAA,KAAA,EAAQC,GAAAA,CAAQ,IAAI,CAAA,GAAA,CAAK,CAAA,CAC9FC,CAAAA,CAAQ,OAAM,CACd,MAAME,CAAAA,CAAQ,uBAAA,CAAyB,CACrC,MAAA,CAAAJ,EACA,KAAA,CAAOC,GAAAA,CAAQ,KAAA,CACf,IAAA,CAAMA,GAAAA,CAAQ,IAChB,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC1BC,CAAAA,CAAQ,SAAQ,CAChBG,CAAAA,CAAW,CAAA,QAAA,EAAWJ,GAAAA,CAAQ,KAAK,CAAA,KAAA,EAAQD,CAAM,CAAA,KAAA,EAAQC,GAAAA,CAAQ,IAAI,CAAA,CAAE,EACzE","file":"collab-invite-HAMMPEAQ.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabInvite(folder: string, options: { email: string; role: string }): Promise<void> {\n const spinner = createSpinner(`Inviting ${options.email} to \"${folder}\" as ${options.role}...`)\n spinner.start()\n await apiPost('/api/v1/collab/invite', {\n folder,\n email: options.email,\n role: options.role,\n }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Invited ${options.email} to \"${folder}\" as ${options.role}`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import n from'inquirer';async function m(e$1){let{confirm:a}=await n.prompt([{type:"confirm",name:"confirm",message:`Remove yourself from "${e$1}"?`,default:false}]);if(!a)return;let t=b(`Leaving "${e$1}"...`);t.start(),await e("/api/v1/collab/leave",{folder:e$1},{authenticated:true}),t.succeed(),g(`You left "${e$1}"`);}export{m as default};//# sourceMappingURL=collab-leave-MTCXHQ4T.js.map
2
+ //# sourceMappingURL=collab-leave-MTCXHQ4T.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-leave.ts"],"names":["collabLeave","folder","confirm","inquirer","spinner","createSpinner","apiPost","logSuccess"],"mappings":"oPAKA,eAAOA,CAAAA,CAAmCC,GAAAA,CAA+B,CACvE,GAAM,CAAE,OAAA,CAAAC,GAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,CAAA,sBAAA,EAAyBF,GAAM,CAAA,EAAA,CAAA,CACxC,OAAA,CAAS,KACX,CAAC,CAAC,EACF,GAAI,CAACC,GAAAA,CAAS,OACd,IAAME,CAAAA,CAAUC,CAAAA,CAAc,CAAA,SAAA,EAAYJ,GAAM,CAAA,IAAA,CAAM,CAAA,CACtDG,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,MAAA,CAAAL,GAAO,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACzEG,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,UAAA,EAAaN,GAAM,GAAG,EACnC","file":"collab-leave-W2ESTT5L.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabLeave(folder: string): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: `Remove yourself from \"${folder}\"?`,\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner(`Leaving \"${folder}\"...`)\n spinner.start()\n await apiPost('/api/v1/collab/leave', { folder }, { authenticated: true })\n spinner.succeed()\n logSuccess(`You left \"${folder}\"`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-leave.ts"],"names":["collabLeave","folder","confirm","inquirer","spinner","createSpinner","apiPost","logSuccess"],"mappings":"wNAKA,eAAOA,CAAAA,CAAmCC,GAAAA,CAA+B,CACvE,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,CAAA,sBAAA,EAAyBF,GAAM,CAAA,EAAA,CAAA,CACxC,OAAA,CAAS,KACX,CAAC,CAAC,EACF,GAAI,CAACC,CAAAA,CAAS,OACd,IAAME,CAAAA,CAAUC,CAAAA,CAAc,CAAA,SAAA,EAAYJ,GAAM,CAAA,IAAA,CAAM,CAAA,CACtDG,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,MAAA,CAAAL,GAAO,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACzEG,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,UAAA,EAAaN,GAAM,GAAG,EACnC","file":"collab-leave-MTCXHQ4T.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabLeave(folder: string): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: `Remove yourself from \"${folder}\"?`,\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner(`Leaving \"${folder}\"...`)\n spinner.start()\n await apiPost('/api/v1/collab/leave', { folder }, { authenticated: true })\n spinner.succeed()\n logSuccess(`You left \"${folder}\"`)\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import t from'chalk';async function n(r){let i=((await d(`/api/v1/collab/list?folder=${encodeURIComponent(r)}`,{authenticated:true})).collaborators||[]).map(e=>({email:e.email,user:e.username,role:t.hex("#7C4DFF")(e.role),joined:c(e.joined_at),active:e.last_active?c(e.last_active):t.dim("never")}));console.log(a(i,[{key:"email",label:"Email"},{key:"user",label:"User"},{key:"role",label:"Role"},{key:"joined",label:"Joined"},{key:"active",label:"Last Active"}]));}export{n as default};//# sourceMappingURL=collab-list-722OEBJQ.js.map
2
- //# sourceMappingURL=collab-list-722OEBJQ.js.map
1
+ import {d}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import t from'chalk';async function n(r){let i=((await d(`/api/v1/collab/list?folder=${encodeURIComponent(r)}`,{authenticated:true})).collaborators||[]).map(e=>({email:e.email,user:e.username,role:t.hex("#7C4DFF")(e.role),joined:c(e.joined_at),active:e.last_active?c(e.last_active):t.dim("never")}));console.log(a(i,[{key:"email",label:"Email"},{key:"user",label:"User"},{key:"role",label:"Role"},{key:"joined",label:"Joined"},{key:"active",label:"Last Active"}]));}export{n as default};//# sourceMappingURL=collab-list-JV4ZCWLB.js.map
2
+ //# sourceMappingURL=collab-list-JV4ZCWLB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-list.ts"],"names":["collabList","folder","rows","apiGet","c","chalk","formatRelative","renderTable"],"mappings":"qNAaA,eAAOA,CAAAA,CAAkCC,EAA+B,CAEtE,IAAMC,IADO,MAAMC,CAAAA,CAA0C,8BAA8B,kBAAA,CAAmBF,CAAM,CAAC,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,GAC7H,aAAA,EAAiB,IAAI,GAAA,CAAIG,CAAAA,GAAM,CAChD,KAAA,CAAOA,CAAAA,CAAE,MACT,IAAA,CAAMA,CAAAA,CAAE,SACR,IAAA,CAAMC,CAAAA,CAAM,IAAI,SAAS,CAAA,CAAED,EAAE,IAAI,CAAA,CACjC,OAAQE,CAAAA,CAAeF,CAAAA,CAAE,SAAS,CAAA,CAClC,MAAA,CAAQA,CAAAA,CAAE,YAAcE,CAAAA,CAAeF,CAAAA,CAAE,WAAW,CAAA,CAAIC,CAAAA,CAAM,IAAI,OAAO,CAC3E,EAAE,CAAA,CACF,OAAA,CAAQ,IAAIE,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,QAAS,KAAA,CAAO,OAAQ,CAAA,CAC/B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,QAAS,CAAA,CACjC,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,aAAc,CACxC,CAAC,CAAC,EACJ","file":"collab-list-722OEBJQ.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface Collaborator {\n email: string\n username: string\n role: string\n joined_at: string\n last_active: string | null\n}\n\nexport default async function collabList(folder: string): Promise<void> {\n const data = await apiGet<{ collaborators: Collaborator[] }>(`/api/v1/collab/list?folder=${encodeURIComponent(folder)}`, { authenticated: true })\n const rows = (data.collaborators || []).map(c => ({\n email: c.email,\n user: c.username,\n role: chalk.hex('#7C4DFF')(c.role),\n joined: formatRelative(c.joined_at),\n active: c.last_active ? formatRelative(c.last_active) : chalk.dim('never'),\n }))\n console.log(renderTable(rows, [\n { key: 'email', label: 'Email' },\n { key: 'user', label: 'User' },\n { key: 'role', label: 'Role' },\n { key: 'joined', label: 'Joined' },\n { key: 'active', label: 'Last Active' },\n ]))\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-list.ts"],"names":["collabList","folder","rows","apiGet","c","chalk","formatRelative","renderTable"],"mappings":"qNAaA,eAAOA,CAAAA,CAAkCC,EAA+B,CAEtE,IAAMC,IADO,MAAMC,CAAAA,CAA0C,8BAA8B,kBAAA,CAAmBF,CAAM,CAAC,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,GAC7H,aAAA,EAAiB,IAAI,GAAA,CAAIG,CAAAA,GAAM,CAChD,KAAA,CAAOA,CAAAA,CAAE,MACT,IAAA,CAAMA,CAAAA,CAAE,SACR,IAAA,CAAMC,CAAAA,CAAM,IAAI,SAAS,CAAA,CAAED,EAAE,IAAI,CAAA,CACjC,OAAQE,CAAAA,CAAeF,CAAAA,CAAE,SAAS,CAAA,CAClC,MAAA,CAAQA,CAAAA,CAAE,YAAcE,CAAAA,CAAeF,CAAAA,CAAE,WAAW,CAAA,CAAIC,CAAAA,CAAM,IAAI,OAAO,CAC3E,EAAE,CAAA,CACF,OAAA,CAAQ,IAAIE,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,QAAS,KAAA,CAAO,OAAQ,CAAA,CAC/B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,QAAS,CAAA,CACjC,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,aAAc,CACxC,CAAC,CAAC,EACJ","file":"collab-list-JV4ZCWLB.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface Collaborator {\n email: string\n username: string\n role: string\n joined_at: string\n last_active: string | null\n}\n\nexport default async function collabList(folder: string): Promise<void> {\n const data = await apiGet<{ collaborators: Collaborator[] }>(`/api/v1/collab/list?folder=${encodeURIComponent(folder)}`, { authenticated: true })\n const rows = (data.collaborators || []).map(c => ({\n email: c.email,\n user: c.username,\n role: chalk.hex('#7C4DFF')(c.role),\n joined: formatRelative(c.joined_at),\n active: c.last_active ? formatRelative(c.last_active) : chalk.dim('never'),\n }))\n console.log(renderTable(rows, [\n { key: 'email', label: 'Email' },\n { key: 'user', label: 'User' },\n { key: 'role', label: 'Role' },\n { key: 'joined', label: 'Joined' },\n { key: 'active', label: 'Last Active' },\n ]))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';async function o(e$1,i){let m=b(`Removing ${i.email} from "${e$1}"...`);m.start(),await e("/api/v1/collab/remove",{folder:e$1,email:i.email},{authenticated:true}),m.succeed(),g(`Removed ${i.email} from "${e$1}"`);}export{o as default};//# sourceMappingURL=collab-remove-DO4BIA5R.js.map
2
+ //# sourceMappingURL=collab-remove-DO4BIA5R.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-remove.ts"],"names":["collabRemove","folder","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"4NAIA,eAAOA,EAAoCC,GAAAA,CAAgBC,CAAAA,CAA2C,CACpG,IAAMC,CAAAA,CAAUC,EAAc,CAAA,SAAA,EAAYF,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,GAAM,MAAM,CAAA,CAC7EE,CAAAA,CAAQ,OAAM,CACd,MAAME,EAAQ,uBAAA,CAAyB,CAAE,MAAA,CAAAJ,GAAAA,CAAQ,MAAOC,CAAAA,CAAQ,KAAM,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAChGC,EAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,QAAA,EAAWJ,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,GAAM,GAAG,EACxD","file":"collab-remove-ZMB22U2T.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabRemove(folder: string, options: { email: string }): Promise<void> {\n const spinner = createSpinner(`Removing ${options.email} from \"${folder}\"...`)\n spinner.start()\n await apiPost('/api/v1/collab/remove', { folder, email: options.email }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Removed ${options.email} from \"${folder}\"`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-remove.ts"],"names":["collabRemove","folder","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"gMAIA,eAAOA,EAAoCC,GAAAA,CAAgBC,CAAAA,CAA2C,CACpG,IAAMC,CAAAA,CAAUC,EAAc,CAAA,SAAA,EAAYF,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,GAAM,MAAM,CAAA,CAC7EE,CAAAA,CAAQ,OAAM,CACd,MAAME,EAAQ,uBAAA,CAAyB,CAAE,MAAA,CAAAJ,GAAAA,CAAQ,MAAOC,CAAAA,CAAQ,KAAM,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAChGC,EAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,QAAA,EAAWJ,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,GAAM,GAAG,EACxD","file":"collab-remove-DO4BIA5R.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabRemove(folder: string, options: { email: string }): Promise<void> {\n const spinner = createSpinner(`Removing ${options.email} from \"${folder}\"...`)\n spinner.start()\n await apiPost('/api/v1/collab/remove', { folder, email: options.email }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Removed ${options.email} from \"${folder}\"`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import c from'inquirer';async function m(r,t){let{confirm:a}=await c.prompt([{type:"input",name:"confirm",message:`Type "${r}" to confirm ownership transfer to ${t.to}:`,validate:s=>s===r?true:"Type the exact folder name to confirm"}]);if(a!==r)return;let e$1=b(`Transferring ownership of "${r}" to ${t.to}...`);e$1.start(),await e("/api/v1/collab/transfer",{folder:r,new_owner:t.to},{authenticated:true}),e$1.succeed(),g(`Ownership of "${r}" transferred to ${t.to}`);}export{m as default};//# sourceMappingURL=collab-transfer-6CG5PHVC.js.map
2
+ //# sourceMappingURL=collab-transfer-6CG5PHVC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/collab/collab-transfer.ts"],"names":["collabTransfer","folder","options","confirm","inquirer","v","spinner","createSpinner","apiPost","logSuccess"],"mappings":"oPAKA,eAAOA,CAAAA,CAAsCC,CAAAA,CAAgBC,EAAwC,CACnG,GAAM,CAAE,OAAA,CAAAC,GAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,OAAA,CACN,IAAA,CAAM,UACN,OAAA,CAAS,CAAA,MAAA,EAASH,CAAM,CAAA,mCAAA,EAAsCC,EAAQ,EAAE,CAAA,CAAA,CAAA,CACxE,QAAA,CAAWG,CAAAA,EAAcA,IAAMJ,CAAAA,CAAS,IAAA,CAAO,uCACjD,CAAC,CAAC,EACF,GAAIE,GAAAA,GAAYF,CAAAA,CAAQ,OAExB,IAAMK,GAAAA,CAAUC,CAAAA,CAAc,CAAA,2BAAA,EAA8BN,CAAM,QAAQC,CAAAA,CAAQ,EAAE,CAAA,GAAA,CAAK,CAAA,CACzFI,IAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,yBAAA,CAA2B,CAAE,MAAA,CAAAP,CAAAA,CAAQ,SAAA,CAAWC,CAAAA,CAAQ,EAAG,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACnGI,GAAAA,CAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,cAAA,EAAiBR,CAAM,oBAAoBC,CAAAA,CAAQ,EAAE,EAAE,EACpE","file":"collab-transfer-56MH4IT6.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabTransfer(folder: string, options: { to: string }): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'input',\n name: 'confirm',\n message: `Type \"${folder}\" to confirm ownership transfer to ${options.to}:`,\n validate: (v: string) => v === folder ? true : 'Type the exact folder name to confirm',\n }])\n if (confirm !== folder) return\n\n const spinner = createSpinner(`Transferring ownership of \"${folder}\" to ${options.to}...`)\n spinner.start()\n await apiPost('/api/v1/collab/transfer', { folder, new_owner: options.to }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Ownership of \"${folder}\" transferred to ${options.to}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/collab/collab-transfer.ts"],"names":["collabTransfer","folder","options","confirm","inquirer","v","spinner","createSpinner","apiPost","logSuccess"],"mappings":"wNAKA,eAAOA,CAAAA,CAAsCC,CAAAA,CAAgBC,EAAwC,CACnG,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,OAAA,CACN,IAAA,CAAM,UACN,OAAA,CAAS,CAAA,MAAA,EAASH,CAAM,CAAA,mCAAA,EAAsCC,EAAQ,EAAE,CAAA,CAAA,CAAA,CACxE,QAAA,CAAWG,CAAAA,EAAcA,IAAMJ,CAAAA,CAAS,IAAA,CAAO,uCACjD,CAAC,CAAC,EACF,GAAIE,CAAAA,GAAYF,CAAAA,CAAQ,OAExB,IAAMK,GAAAA,CAAUC,CAAAA,CAAc,CAAA,2BAAA,EAA8BN,CAAM,QAAQC,CAAAA,CAAQ,EAAE,CAAA,GAAA,CAAK,CAAA,CACzFI,IAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,yBAAA,CAA2B,CAAE,MAAA,CAAAP,CAAAA,CAAQ,SAAA,CAAWC,CAAAA,CAAQ,EAAG,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACnGI,GAAAA,CAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,cAAA,EAAiBR,CAAM,oBAAoBC,CAAAA,CAAQ,EAAE,EAAE,EACpE","file":"collab-transfer-6CG5PHVC.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabTransfer(folder: string, options: { to: string }): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'input',\n name: 'confirm',\n message: `Type \"${folder}\" to confirm ownership transfer to ${options.to}:`,\n validate: (v: string) => v === folder ? true : 'Type the exact folder name to confirm',\n }])\n if (confirm !== folder) return\n\n const spinner = createSpinner(`Transferring ownership of \"${folder}\" to ${options.to}...`)\n spinner.start()\n await apiPost('/api/v1/collab/transfer', { folder, new_owner: options.to }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Ownership of \"${folder}\" transferred to ${options.to}`)\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import {a}from'./chunk-MKRWNV2T.js';import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {h as h$1,i,f,m,g,c,b as b$1}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import h from'path';import P from'fs';import A from'clipboardy';import v from'chalk';import B from'cli-progress';async function F(d){let e=h.resolve(d),a=P.statSync(e);if(a.isFile())return h.extname(e).toLowerCase()===".html"?{type:"single-file",rootPath:e,hasIndexHtml:true,htmlFiles:[e],totalFiles:1}:{type:"invalid",rootPath:e,hasIndexHtml:false,htmlFiles:[],totalFiles:0};if(a.isDirectory()){let m=function(i){let u=P.readdirSync(i,{withFileTypes:true});for(let n of u){let c=h.join(i,n.name);n.isDirectory()?!n.name.startsWith(".")&&n.name!=="node_modules"&&m(c):n.isFile()&&(l++,n.name.endsWith(".html")&&t.push(c));}};let t=[],l=0;if(m(e),t.length===0)return {type:"invalid",rootPath:e,hasIndexHtml:false,htmlFiles:[],totalFiles:l};let o=t.some(i=>h.basename(i).toLowerCase()==="index.html");return {type:"codebase",rootPath:e,hasIndexHtml:o,htmlFiles:t,totalFiles:l}}return {type:"invalid",rootPath:e,hasIndexHtml:false,htmlFiles:[],totalFiles:0}}async function L(d,e$1){let a$1=d?h.resolve(d):process.cwd(),r=b("Analyzing project...");r.start();let t=await F(a$1);t.type==="invalid"&&(r.fail(),h$1(`No deployable content found at ${a$1}. Provide an HTML file or folder containing HTML files.`),process.exit(1)),t.type==="codebase"&&!t.hasIndexHtml&&(r.warn(),i("No index.html found at root. Scanning one level deep for entry point...")),r.text="Uploading files...";let l={source:a$1,type:t.type,slug:e$1?.name,environment:e$1?.env||(e$1?.preview?"preview":"production"),force:e$1?.force||false};if(t.type==="codebase"){let n=function(p){let y=P.readdirSync(p,{withFileTypes:true});for(let s of y){let f=h.join(p,s.name);s.isDirectory()?!s.name.startsWith(".")&&s.name!=="node_modules"&&n(f):s.isFile()&&(a(s.name)?i.push(f):u.push(f));}};let i=[],u=[];n(t.rootPath),!e$1?.force&&t.type==="codebase"&&(r.text="Computing diff...");let c=new B.SingleBar({format:`${v.hex("#7C4DFF")("\u25B8")} Uploading |${v.hex("#7C4DFF")("{bar}")}| {percentage}% | {value}/{total} files | {speed}`,barCompleteChar:"\u2588",barIncompleteChar:"\u2591",hideCursor:true});c.start(i.length,0);let w=new FormData,b=0;for(let p of i){let y=h.relative(t.rootPath,p),s=P.readFileSync(p),f=new Blob([s]);w.append("files",f,y),b++,c.update(b);}c.stop(),r.stop(),l.files=w;}if(t.type==="single-file"){let o=P.readFileSync(t.rootPath,"utf-8");l.htmlContent=o;}r.text="Deploying to SquidCloud...",r.start();try{let o=await e("/api/v1/deploy",l,{authenticated:!0});r.succeed();let i=o.url||`https://squidcloud.vercel.app/sites/${e$1?.name||o.deploy_id}`;try{await A.write(i);}catch{}if(f()){m(o);return}g("Deployed successfully!"),console.log(` ${v.hex("#4FC3F7")(i)} ${c("")}`),o.file_count&&console.log(` ${b$1(`${o.file_count} files \xB7 ${o.deploy_time_ms}ms`)}`);}catch(o){throw r.fail(),o}}
2
+ export{L as default};//# sourceMappingURL=deploy-X5HX7V4J.js.map
3
+ //# sourceMappingURL=deploy-X5HX7V4J.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/deploy/detector.ts","../src/commands/deploy/index.ts"],"names":["detectProject","targetPath","resolved","path","stat","fs","walk","dir","entries","entry","fullPath","totalFiles","htmlFiles","hasIndexHtml","f","deploy","target","options","deployPath","spinner","createSpinner","project","logError","logWarn","deployOptions","isAllowedFile","allowedFiles","ignoredFiles","progressBar","cliProgress","chalk","formData","uploadedCount","filePath","relativePath","content","blob","result","apiPost","siteUrl","clipboard","isJsonMode","logJSON","logSuccess","copied","muted","err"],"mappings":"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","file":"deploy-WK3VAA7D.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nexport type DeployType = 'single-file' | 'codebase' | 'invalid'\n\nexport interface DetectedProject {\n type: DeployType\n rootPath: string\n hasIndexHtml: boolean\n htmlFiles: string[]\n totalFiles: number\n}\n\nexport async function detectProject(targetPath: string): Promise<DetectedProject> {\n const resolved = path.resolve(targetPath)\n const stat = fs.statSync(resolved)\n\n if (stat.isFile()) {\n const ext = path.extname(resolved).toLowerCase()\n if (ext === '.html') {\n return {\n type: 'single-file',\n rootPath: resolved,\n hasIndexHtml: true,\n htmlFiles: [resolved],\n totalFiles: 1,\n }\n }\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n }\n\n if (stat.isDirectory()) {\n const htmlFiles: string[] = []\n let totalFiles = 0\n\n function walk(dir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n totalFiles++\n if (entry.name.endsWith('.html')) {\n htmlFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(resolved)\n\n if (htmlFiles.length === 0) {\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles }\n }\n\n const hasIndexHtml = htmlFiles.some(f => path.basename(f).toLowerCase() === 'index.html')\n\n return {\n type: 'codebase',\n rootPath: resolved,\n hasIndexHtml,\n htmlFiles,\n totalFiles,\n }\n }\n\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n}\n","import path from 'node:path'\nimport fs from 'node:fs'\nimport { detectProject, isAllowedFile } from '../../lib/deploy/index.js'\nimport { apiPost, apiUpload } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logError, logInfo, logJSON, logWarn } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes } from '../../lib/utils/format.js'\nimport clipboard from 'clipboardy'\nimport chalk from 'chalk'\nimport { copied, muted } from '../../lib/output/brand.js'\nimport cliProgress from 'cli-progress'\n\nexport default async function deploy(target?: string, options?: {\n name?: string\n env?: string\n preview?: boolean\n noWait?: boolean\n force?: boolean\n output?: string\n}): Promise<void> {\n const deployPath = target ? path.resolve(target) : process.cwd()\n\n const spinner = createSpinner('Analyzing project...')\n spinner.start()\n\n const project = await detectProject(deployPath)\n\n if (project.type === 'invalid') {\n spinner.fail()\n logError(`No deployable content found at ${deployPath}. Provide an HTML file or folder containing HTML files.`)\n process.exit(1)\n }\n\n if (project.type === 'codebase' && !project.hasIndexHtml) {\n spinner.warn()\n logWarn('No index.html found at root. Scanning one level deep for entry point...')\n }\n\n spinner.text = 'Uploading files...'\n\n const deployOptions: Record<string, unknown> = {\n source: deployPath,\n type: project.type,\n slug: options?.name,\n environment: options?.env || (options?.preview ? 'preview' : 'production'),\n force: options?.force || false,\n }\n\n if (project.type === 'codebase') {\n const files: { path: string; content: string }[] = []\n const allowedFiles: string[] = []\n const ignoredFiles: string[] = []\n\n function walk(dir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n if (isAllowedFile(entry.name)) {\n allowedFiles.push(fullPath)\n } else {\n ignoredFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(project.rootPath)\n\n if (!options?.force && project.type === 'codebase') {\n spinner.text = 'Computing diff...'\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${chalk.hex('#7C4DFF')('▸')} Uploading |${chalk.hex('#7C4DFF')('{bar}')}| {percentage}% | {value}/{total} files | {speed}`,\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n })\n\n progressBar.start(allowedFiles.length, 0)\n\n const formData = new FormData()\n let uploadedCount = 0\n\n for (const filePath of allowedFiles) {\n const relativePath = path.relative(project.rootPath, filePath)\n const content = fs.readFileSync(filePath)\n const blob = new Blob([content])\n formData.append('files', blob, relativePath)\n uploadedCount++\n progressBar.update(uploadedCount)\n }\n\n progressBar.stop()\n spinner.stop()\n\n deployOptions.files = formData\n }\n\n if (project.type === 'single-file') {\n const content = fs.readFileSync(project.rootPath, 'utf-8')\n deployOptions.htmlContent = content\n }\n\n spinner.text = 'Deploying to SquidCloud...'\n spinner.start()\n\n try {\n const result = await apiPost<{\n url: string\n deploy_id: string\n file_count: number\n deploy_time_ms: number\n }>('/api/v1/deploy', deployOptions, { authenticated: true })\n\n spinner.succeed()\n\n const siteUrl = result.url || `https://squidcloud.vercel.app/sites/${options?.name || result.deploy_id}`\n\n try {\n await clipboard.write(siteUrl)\n } catch {\n // clipboard not available\n }\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n\n logSuccess(`Deployed successfully!`)\n console.log(` ${chalk.hex('#4FC3F7')(siteUrl)} ${copied('')}`)\n if (result.file_count) {\n console.log(` ${muted(`${result.file_count} files · ${result.deploy_time_ms}ms`)}`)\n }\n } catch (err) {\n spinner.fail()\n throw err\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/deploy/detector.ts","../src/commands/deploy/index.ts"],"names":["detectProject","targetPath","resolved","path","stat","fs","walk","dir","entries","entry","fullPath","totalFiles","htmlFiles","hasIndexHtml","f","deploy","target","options","deployPath","spinner","createSpinner","project","logError","logWarn","deployOptions","isAllowedFile","allowedFiles","ignoredFiles","progressBar","cliProgress","chalk","formData","uploadedCount","filePath","relativePath","content","blob","result","apiPost","siteUrl","clipboard","isJsonMode","logJSON","logSuccess","copied","muted","err"],"mappings":"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","file":"deploy-X5HX7V4J.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nexport type DeployType = 'single-file' | 'codebase' | 'invalid'\n\nexport interface DetectedProject {\n type: DeployType\n rootPath: string\n hasIndexHtml: boolean\n htmlFiles: string[]\n totalFiles: number\n}\n\nexport async function detectProject(targetPath: string): Promise<DetectedProject> {\n const resolved = path.resolve(targetPath)\n const stat = fs.statSync(resolved)\n\n if (stat.isFile()) {\n const ext = path.extname(resolved).toLowerCase()\n if (ext === '.html') {\n return {\n type: 'single-file',\n rootPath: resolved,\n hasIndexHtml: true,\n htmlFiles: [resolved],\n totalFiles: 1,\n }\n }\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n }\n\n if (stat.isDirectory()) {\n const htmlFiles: string[] = []\n let totalFiles = 0\n\n function walk(dir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n totalFiles++\n if (entry.name.endsWith('.html')) {\n htmlFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(resolved)\n\n if (htmlFiles.length === 0) {\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles }\n }\n\n const hasIndexHtml = htmlFiles.some(f => path.basename(f).toLowerCase() === 'index.html')\n\n return {\n type: 'codebase',\n rootPath: resolved,\n hasIndexHtml,\n htmlFiles,\n totalFiles,\n }\n }\n\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n}\n","import path from 'node:path'\nimport fs from 'node:fs'\nimport { detectProject, isAllowedFile } from '../../lib/deploy/index.js'\nimport { apiPost, apiUpload } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logError, logInfo, logJSON, logWarn } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes } from '../../lib/utils/format.js'\nimport clipboard from 'clipboardy'\nimport chalk from 'chalk'\nimport { copied, muted } from '../../lib/output/brand.js'\nimport cliProgress from 'cli-progress'\n\nexport default async function deploy(target?: string, options?: {\n name?: string\n env?: string\n preview?: boolean\n noWait?: boolean\n force?: boolean\n output?: string\n}): Promise<void> {\n const deployPath = target ? path.resolve(target) : process.cwd()\n\n const spinner = createSpinner('Analyzing project...')\n spinner.start()\n\n const project = await detectProject(deployPath)\n\n if (project.type === 'invalid') {\n spinner.fail()\n logError(`No deployable content found at ${deployPath}. Provide an HTML file or folder containing HTML files.`)\n process.exit(1)\n }\n\n if (project.type === 'codebase' && !project.hasIndexHtml) {\n spinner.warn()\n logWarn('No index.html found at root. Scanning one level deep for entry point...')\n }\n\n spinner.text = 'Uploading files...'\n\n const deployOptions: Record<string, unknown> = {\n source: deployPath,\n type: project.type,\n slug: options?.name,\n environment: options?.env || (options?.preview ? 'preview' : 'production'),\n force: options?.force || false,\n }\n\n if (project.type === 'codebase') {\n const files: { path: string; content: string }[] = []\n const allowedFiles: string[] = []\n const ignoredFiles: string[] = []\n\n function walk(dir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n if (isAllowedFile(entry.name)) {\n allowedFiles.push(fullPath)\n } else {\n ignoredFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(project.rootPath)\n\n if (!options?.force && project.type === 'codebase') {\n spinner.text = 'Computing diff...'\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${chalk.hex('#7C4DFF')('▸')} Uploading |${chalk.hex('#7C4DFF')('{bar}')}| {percentage}% | {value}/{total} files | {speed}`,\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n })\n\n progressBar.start(allowedFiles.length, 0)\n\n const formData = new FormData()\n let uploadedCount = 0\n\n for (const filePath of allowedFiles) {\n const relativePath = path.relative(project.rootPath, filePath)\n const content = fs.readFileSync(filePath)\n const blob = new Blob([content])\n formData.append('files', blob, relativePath)\n uploadedCount++\n progressBar.update(uploadedCount)\n }\n\n progressBar.stop()\n spinner.stop()\n\n deployOptions.files = formData\n }\n\n if (project.type === 'single-file') {\n const content = fs.readFileSync(project.rootPath, 'utf-8')\n deployOptions.htmlContent = content\n }\n\n spinner.text = 'Deploying to SquidCloud...'\n spinner.start()\n\n try {\n const result = await apiPost<{\n url: string\n deploy_id: string\n file_count: number\n deploy_time_ms: number\n }>('/api/v1/deploy', deployOptions, { authenticated: true })\n\n spinner.succeed()\n\n const siteUrl = result.url || `https://squidcloud.vercel.app/sites/${options?.name || result.deploy_id}`\n\n try {\n await clipboard.write(siteUrl)\n } catch {\n // clipboard not available\n }\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n\n logSuccess(`Deployed successfully!`)\n console.log(` ${chalk.hex('#4FC3F7')(siteUrl)} ${copied('')}`)\n if (result.file_count) {\n console.log(` ${muted(`${result.file_count} files · ${result.deploy_time_ms}ms`)}`)\n }\n } catch (err) {\n spinner.fail()\n throw err\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {d as d$1}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {f,m as m$1,l as l$1}from'./chunk-QT7R3AXE.js';import {m,l}from'./chunk-C5KZCYJ4.js';import e from'chalk';async function d(m$2){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 m();if(o){let a=o.device_fingerprint===l();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 d$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$2?.security){t.push({name:"Device Fingerprint",status:"pass",message:l().slice(0,16)+"..."});try{let a=await d$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$1({checks:t});return}l$1(""),l$1(e.bold(" SquidCloud Diagnostics")),l$1(e.dim(" \u2500\u2500\u2500".repeat(10))),l$1("");for(let a of t){let p=a.status==="pass"?e.green("\u2713"):a.status==="warn"?e.yellow("\u26A0"):e.red("\u2717");l$1(` ${p} ${e.bold(a.name)}`),l$1(` ${e.dim(a.message)}`),l$1("");}l$1(e.bold(" Environment")),l$1(e.dim(" \u2500\u2500\u2500".repeat(10))),l$1(""),l$1(` ${e.dim("Platform:")} ${process.platform} ${process.arch}`),l$1(` ${e.dim("Node:")} ${process.version}`),l$1(` ${e.dim("CWD:")} ${process.cwd()}`),l$1("");}export{d as default};//# sourceMappingURL=doctor-C7TZGTCO.js.map
2
- //# sourceMappingURL=doctor-C7TZGTCO.js.map
1
+ import {d as d$1}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import {f,m as m$1,l as l$1}from'./chunk-QT7R3AXE.js';import {m,l}from'./chunk-4NTVRCZM.js';import e from'chalk';async function d(m$2){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 m();if(o){let a=o.device_fingerprint===l();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 d$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$2?.security){t.push({name:"Device Fingerprint",status:"pass",message:l().slice(0,16)+"..."});try{let a=await d$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$1({checks:t});return}l$1(""),l$1(e.bold(" SquidCloud Diagnostics")),l$1(e.dim(" \u2500\u2500\u2500".repeat(10))),l$1("");for(let a of t){let p=a.status==="pass"?e.green("\u2713"):a.status==="warn"?e.yellow("\u26A0"):e.red("\u2717");l$1(` ${p} ${e.bold(a.name)}`),l$1(` ${e.dim(a.message)}`),l$1("");}l$1(e.bold(" Environment")),l$1(e.dim(" \u2500\u2500\u2500".repeat(10))),l$1(""),l$1(` ${e.dim("Platform:")} ${process.platform} ${process.arch}`),l$1(` ${e.dim("Node:")} ${process.version}`),l$1(` ${e.dim("CWD:")} ${process.cwd()}`),l$1("");}export{d as default};//# sourceMappingURL=doctor-RSKBJYUX.js.map
2
+ //# sourceMappingURL=doctor-RSKBJYUX.js.map
@@ -1 +1 @@
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":"wLAQA,eAAOA,CAAAA,CAA8BC,GAAAA,CAAiD,CACpF,IAAMC,CAAAA,CAAgF,EAAC,CAGrE,SAAS,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,CAAC,EAAG,EAAE,CAAA,EACtC,EAAA,CACfA,CAAAA,CAAO,KAAK,CAAE,IAAA,CAAM,iBAAA,CAAmB,MAAA,CAAQ,OAAQ,OAAA,CAAS,CAAA,EAAG,OAAA,CAAQ,OAAO,iBAAkB,CAAC,CAAA,CAErGA,CAAAA,CAAO,IAAA,CAAK,CAAE,IAAA,CAAM,iBAAA,CAAmB,MAAA,CAAQ,MAAA,CAAQ,QAAS,CAAA,EAAG,OAAA,CAAQ,OAAO,CAAA,sBAAA,CAAoB,CAAC,CAAA,CAIzG,IAAMC,CAAAA,CAAU,MAAMC,GAAY,CAClC,GAAID,CAAAA,CAAS,CACX,IAAME,CAAAA,CAAUF,CAAAA,CAAQ,kBAAA,GAAuBG,CAAAA,GAC/CJ,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,eACN,MAAA,CAAQG,CAAAA,CAAU,MAAA,CAAS,MAAA,CAC3B,QAASA,CAAAA,CAAU,CAAA,iBAAA,EAAoBF,EAAQ,IAAA,CAAK,KAAK,GAAK,sDAChE,CAAC,EACH,CAAA,KACED,EAAO,IAAA,CAAK,CAAE,IAAA,CAAM,cAAA,CAAgB,OAAQ,MAAA,CAAQ,OAAA,CAAS,iDAA6C,CAAC,EAI7G,GAAI,CACF,MAAMK,GAAAA,CAAO,aAAa,CAAA,CAC1BL,CAAAA,CAAO,IAAA,CAAK,CAAE,KAAM,SAAA,CAAW,MAAA,CAAQ,MAAA,CAAQ,OAAA,CAAS,6BAA8B,CAAC,EACzF,CAAA,KAAQ,CACNA,EAAO,IAAA,CAAK,CAAE,IAAA,CAAM,SAAA,CAAW,OAAQ,MAAA,CAAQ,OAAA,CAAS,6BAA8B,CAAC,EACzF,CAEA,GAAID,GAAAA,EAAS,QAAA,CAAU,CACrBC,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,qBACN,MAAA,CAAQ,MAAA,CACR,OAAA,CAASI,CAAAA,GAA2B,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAAI,KACrD,CAAC,CAAA,CACD,GAAI,CACF,IAAME,CAAAA,CAAe,MAAMD,GAAAA,CAAO,8BAAA,CAAgC,CAAE,aAAA,CAAe,CAAA,CAAK,CAAC,CAAA,CACzFL,CAAAA,CAAO,KAAK,CAAE,IAAA,CAAM,iBAAA,CAAmB,MAAA,CAAQ,OAAQ,OAAA,CAAS,mBAAoB,CAAC,EACvF,MAAQ,CACNA,CAAAA,CAAO,IAAA,CAAK,CAAE,KAAM,iBAAA,CAAmB,MAAA,CAAQ,MAAA,CAAQ,OAAA,CAAS,sCAAuC,CAAC,EAC1G,CACF,CAEA,GAAIO,CAAAA,EAAW,CAAG,CAChBC,GAAAA,CAAQ,CAAE,MAAA,CAAAR,CAAO,CAAC,CAAA,CAClB,MACF,CAEAS,GAAAA,CAAO,EAAE,CAAA,CACTA,IAAOC,CAAAA,CAAM,IAAA,CAAK,0BAA0B,CAAC,EAC7CD,GAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,OAAO,EAAE,CAAC,CAAC,CAAA,CACpCD,IAAO,EAAE,CAAA,CAET,IAAA,IAAWE,CAAAA,IAASX,EAAQ,CAC1B,IAAMY,CAAAA,CAAOD,CAAAA,CAAM,SAAW,MAAA,CAASD,CAAAA,CAAM,KAAA,CAAM,QAAG,EAAIC,CAAAA,CAAM,MAAA,GAAW,MAAA,CAASD,CAAAA,CAAM,OAAO,QAAG,CAAA,CAAIA,EAAM,GAAA,CAAI,QAAG,EACrHD,GAAAA,CAAO,CAAA,EAAA,EAAKG,CAAI,CAAA,EAAA,EAAKF,EAAM,IAAA,CAAKC,CAAAA,CAAM,IAAI,CAAC,EAAE,CAAA,CAC7CF,GAAAA,CAAO,CAAA,KAAA,EAAQC,CAAAA,CAAM,IAAIC,CAAAA,CAAM,OAAO,CAAC,CAAA,CAAE,EACzCF,GAAAA,CAAO,EAAE,EACX,CAEAA,IAAOC,CAAAA,CAAM,IAAA,CAAK,eAAe,CAAC,EAClCD,GAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,OAAO,EAAE,CAAC,CAAC,CAAA,CACpCD,IAAO,EAAE,CAAA,CACTA,GAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,GAAA,CAAI,WAAW,CAAC,CAAA,EAAA,EAAK,QAAQ,QAAQ,CAAA,CAAA,EAAI,OAAA,CAAQ,IAAI,EAAE,CAAA,CACzED,GAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAI,OAAO,CAAC,CAAA,MAAA,EAAS,OAAA,CAAQ,OAAO,CAAA,CAAE,CAAA,CACxDD,GAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,GAAA,CAAI,MAAM,CAAC,CAAA,OAAA,EAAU,QAAQ,GAAA,EAAK,EAAE,CAAA,CACtDD,GAAAA,CAAO,EAAE,EACX","file":"doctor-C7TZGTCO.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"]}
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-RSKBJYUX.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"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-FYFPDKJM.js';import {g}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g as g$1}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import n from'inquirer';async function m(o){let{confirm:t}=await n.prompt([{type:"confirm",name:"confirm",message:"Delete ALL submissions for this file request? This cannot be undone.",default:false}]);if(!t)return;let e=b("Clearing submissions...");e.start(),await g(`/api/v1/forms/${o}/submissions`,{authenticated:true}),e.succeed(),g$1("All submissions cleared");}export{m as default};//# sourceMappingURL=forms-clear-UJ23UHUN.js.map
2
+ //# sourceMappingURL=forms-clear-UJ23UHUN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/forms/forms-clear.ts"],"names":["formsClear","id","confirm","inquirer","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"2PAKA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA2B,CAClE,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,EAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,sEAAA,CACT,OAAA,CAAS,KACX,CAAC,CAAC,CAAA,CACF,GAAI,CAACD,CAAAA,CAAS,OACd,IAAME,CAAAA,CAAUC,CAAAA,CAAc,yBAAyB,CAAA,CACvDD,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAU,iBAAiBL,CAAE,CAAA,YAAA,CAAA,CAAgB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC1EG,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,GAAAA,CAAW,yBAAyB,EACtC","file":"forms-clear-2ERBEAEY.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 formsClear(id: string): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: 'Delete ALL submissions for this file request? This cannot be undone.',\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner('Clearing submissions...')\n spinner.start()\n await apiDelete(`/api/v1/forms/${id}/submissions`, { authenticated: true })\n spinner.succeed()\n logSuccess('All submissions cleared')\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/forms/forms-clear.ts"],"names":["formsClear","id","confirm","inquirer","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"+NAKA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA2B,CAClE,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,EAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,sEAAA,CACT,OAAA,CAAS,KACX,CAAC,CAAC,CAAA,CACF,GAAI,CAACD,CAAAA,CAAS,OACd,IAAME,CAAAA,CAAUC,CAAAA,CAAc,yBAAyB,CAAA,CACvDD,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAU,iBAAiBL,CAAE,CAAA,YAAA,CAAA,CAAgB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC1EG,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,GAAAA,CAAW,yBAAyB,EACtC","file":"forms-clear-UJ23UHUN.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 formsClear(id: string): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: 'Delete ALL submissions for this file request? This cannot be undone.',\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner('Clearing submissions...')\n spinner.start()\n await apiDelete(`/api/v1/forms/${id}/submissions`, { authenticated: true })\n spinner.succeed()\n logSuccess('All submissions cleared')\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {f,m,g}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';async function a(r,c){let e$1=b(`Creating file request "${r}"...`);e$1.start();let t=await e("/api/v1/forms",{name:r,folder:c?.folder},{authenticated:true});if(e$1.succeed(),f()){m(t);return}g(`File request "${r}" created (${t.id.slice(0,8)})`);}export{a as default};//# sourceMappingURL=forms-create-CWC7MGOJ.js.map
2
+ //# sourceMappingURL=forms-create-CWC7MGOJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/forms/forms-create.ts"],"names":["formsCreate","name","options","spinner","createSpinner","result","apiPost","isJsonMode","logJSON","logSuccess"],"mappings":"uOAKA,eAAOA,CAAAA,CAAmCC,CAAAA,CAAcC,CAAAA,CAA8C,CACpG,IAAMC,IAAUC,GAAAA,CAAc,CAAA,uBAAA,EAA0BH,CAAI,CAAA,IAAA,CAAM,CAAA,CAClEE,GAAAA,CAAQ,OAAM,CACd,IAAME,CAAAA,CAAS,MAAMC,CAAAA,CAAqC,eAAA,CAAiB,CACzE,IAAA,CAAAL,CAAAA,CACA,MAAA,CAAQC,CAAAA,EAAS,MACnB,CAAA,CAAG,CAAE,cAAe,IAAK,CAAC,CAAA,CAG1B,GAFAC,GAAAA,CAAQ,OAAA,GAEJI,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAM,CAAA,CACd,MACF,CACAI,CAAAA,CAAW,CAAA,cAAA,EAAiBR,CAAI,CAAA,WAAA,EAAcI,CAAAA,CAAO,EAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAAG,EACxE","file":"forms-create-3ONGTRQZ.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 formsCreate(name: string, options?: { folder?: string }): Promise<void> {\n const spinner = createSpinner(`Creating file request \"${name}\"...`)\n spinner.start()\n const result = await apiPost<{ id: string; url: string }>('/api/v1/forms', {\n name,\n folder: options?.folder,\n }, { authenticated: true })\n spinner.succeed()\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n logSuccess(`File request \"${name}\" created (${result.id.slice(0, 8)})`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/forms/forms-create.ts"],"names":["formsCreate","name","options","spinner","createSpinner","result","apiPost","isJsonMode","logJSON","logSuccess"],"mappings":"oMAKA,eAAOA,CAAAA,CAAmCC,CAAAA,CAAcC,CAAAA,CAA8C,CACpG,IAAMC,IAAUC,CAAAA,CAAc,CAAA,uBAAA,EAA0BH,CAAI,CAAA,IAAA,CAAM,CAAA,CAClEE,GAAAA,CAAQ,OAAM,CACd,IAAME,CAAAA,CAAS,MAAMC,CAAAA,CAAqC,eAAA,CAAiB,CACzE,IAAA,CAAAL,CAAAA,CACA,MAAA,CAAQC,CAAAA,EAAS,MACnB,CAAA,CAAG,CAAE,cAAe,IAAK,CAAC,CAAA,CAG1B,GAFAC,GAAAA,CAAQ,OAAA,GAEJI,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAM,CAAA,CACd,MACF,CACAI,CAAAA,CAAW,CAAA,cAAA,EAAiBR,CAAI,CAAA,WAAA,EAAcI,CAAAA,CAAO,EAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAAG,EACxE","file":"forms-create-CWC7MGOJ.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 formsCreate(name: string, options?: { folder?: string }): Promise<void> {\n const spinner = createSpinner(`Creating file request \"${name}\"...`)\n spinner.start()\n const result = await apiPost<{ id: string; url: string }>('/api/v1/forms', {\n name,\n folder: options?.folder,\n }, { authenticated: true })\n spinner.succeed()\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n logSuccess(`File request \"${name}\" created (${result.id.slice(0, 8)})`)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-FYFPDKJM.js';import {g}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g as g$1}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import s from'inquirer';async function p(t){let e=(await(await import('./client-RFYERFWZ.js')).apiGet(`/api/v1/forms/${t}`,{authenticated:true})).form.name,{confirm:o}=await s.prompt([{type:"input",name:"confirm",message:`Type "${e}" to permanently delete this file request and all submissions:`,validate:m=>m===e?true:"Type the exact name to confirm"}]);if(o!==e)return;let r=b("Deleting file request...");r.start(),await g(`/api/v1/forms/${t}`,{authenticated:true}),r.succeed(),g$1(`File request "${e}" deleted`);}export{p as default};//# sourceMappingURL=forms-delete-TKHTM6L5.js.map
2
+ //# sourceMappingURL=forms-delete-TKHTM6L5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/forms/forms-delete.ts"],"names":["formsDelete","id","formName","confirm","inquirer","v","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"2PAKA,eAAOA,CAAAA,CAAmCC,CAAAA,CAA2B,CAEnE,IAAMC,CAAAA,CAAAA,CADO,KAAA,CAAO,aAAa,sBAAyB,CAAA,EAAG,MAAA,CAAmC,CAAA,cAAA,EAAiBD,CAAE,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACxH,IAAA,CAAK,IAAA,CAErB,CAAE,QAAAE,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,OAAO,CAAC,CACzC,KAAM,OAAA,CACN,IAAA,CAAM,UACN,OAAA,CAAS,CAAA,MAAA,EAASF,CAAQ,CAAA,8DAAA,CAAA,CAC1B,SAAWG,CAAAA,EAAcA,CAAAA,GAAMH,CAAAA,CAAW,IAAA,CAAO,gCACnD,CAAC,CAAC,CAAA,CACF,GAAIC,IAAYD,CAAAA,CAAU,OAE1B,IAAMI,CAAAA,CAAUC,CAAAA,CAAc,0BAA0B,CAAA,CACxDD,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAU,CAAA,cAAA,EAAiBP,CAAE,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC9DK,EAAQ,OAAA,EAAQ,CAChBG,IAAW,CAAA,cAAA,EAAiBP,CAAQ,WAAW,EACjD","file":"forms-delete-CKLGD52U.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 formsDelete(id: string): Promise<void> {\n const data = await (await import('../../lib/api/client.js')).apiGet<{ form: { name: string } }>(`/api/v1/forms/${id}`, { authenticated: true })\n const formName = data.form.name\n\n const { confirm } = await inquirer.prompt([{\n type: 'input',\n name: 'confirm',\n message: `Type \"${formName}\" to permanently delete this file request and all submissions:`,\n validate: (v: string) => v === formName ? true : 'Type the exact name to confirm',\n }])\n if (confirm !== formName) return\n\n const spinner = createSpinner('Deleting file request...')\n spinner.start()\n await apiDelete(`/api/v1/forms/${id}`, { authenticated: true })\n spinner.succeed()\n logSuccess(`File request \"${formName}\" deleted`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/forms/forms-delete.ts"],"names":["formsDelete","id","formName","confirm","inquirer","v","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"+NAKA,eAAOA,CAAAA,CAAmCC,CAAAA,CAA2B,CAEnE,IAAMC,CAAAA,CAAAA,CADO,KAAA,CAAO,aAAa,sBAAyB,CAAA,EAAG,MAAA,CAAmC,CAAA,cAAA,EAAiBD,CAAE,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACxH,IAAA,CAAK,IAAA,CAErB,CAAE,QAAAE,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,OAAO,CAAC,CACzC,KAAM,OAAA,CACN,IAAA,CAAM,UACN,OAAA,CAAS,CAAA,MAAA,EAASF,CAAQ,CAAA,8DAAA,CAAA,CAC1B,SAAWG,CAAAA,EAAcA,CAAAA,GAAMH,CAAAA,CAAW,IAAA,CAAO,gCACnD,CAAC,CAAC,CAAA,CACF,GAAIC,IAAYD,CAAAA,CAAU,OAE1B,IAAMI,CAAAA,CAAUC,CAAAA,CAAc,0BAA0B,CAAA,CACxDD,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAU,CAAA,cAAA,EAAiBP,CAAE,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC9DK,EAAQ,OAAA,EAAQ,CAChBG,IAAW,CAAA,cAAA,EAAiBP,CAAQ,WAAW,EACjD","file":"forms-delete-TKHTM6L5.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 formsDelete(id: string): Promise<void> {\n const data = await (await import('../../lib/api/client.js')).apiGet<{ form: { name: string } }>(`/api/v1/forms/${id}`, { authenticated: true })\n const formName = data.form.name\n\n const { confirm } = await inquirer.prompt([{\n type: 'input',\n name: 'confirm',\n message: `Type \"${formName}\" to permanently delete this file request and all submissions:`,\n validate: (v: string) => v === formName ? true : 'Type the exact name to confirm',\n }])\n if (confirm !== formName) return\n\n const spinner = createSpinner('Deleting file request...')\n spinner.start()\n await apiDelete(`/api/v1/forms/${id}`, { authenticated: true })\n spinner.succeed()\n logSuccess(`File request \"${formName}\" deleted`)\n}\n"]}
@@ -1,3 +1,3 @@
1
- import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-C5KZCYJ4.js';import r from'chalk';import m from'clipboardy';async function a(i){let o=await d(`/api/v1/forms/${i}/embed`,{authenticated:true});try{await m.write(o.html);}catch{}console.log(o.html),console.log(r.dim(`
2
- (copied to clipboard)`));}export{a as default};//# sourceMappingURL=forms-embed-4S46VDP4.js.map
3
- //# sourceMappingURL=forms-embed-4S46VDP4.js.map
1
+ import {d}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-4NTVRCZM.js';import r from'chalk';import m from'clipboardy';async function a(i){let o=await d(`/api/v1/forms/${i}/embed`,{authenticated:true});try{await m.write(o.html);}catch{}console.log(o.html),console.log(r.dim(`
2
+ (copied to clipboard)`));}export{a as default};//# sourceMappingURL=forms-embed-FF3VMR4M.js.map
3
+ //# sourceMappingURL=forms-embed-FF3VMR4M.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/forms/forms-embed.ts"],"names":["formsEmbed","id","data","apiGet","clipboard","chalk"],"mappings":"2IAKA,eAAOA,EAAkCC,CAAAA,CAA2B,CAClE,IAAMC,CAAAA,CAAO,MAAMC,CAAAA,CAAyB,CAAA,cAAA,EAAiBF,CAAE,CAAA,MAAA,CAAA,CAAU,CAAE,cAAe,IAAK,CAAC,CAAA,CAChG,GAAI,CACF,MAAMG,CAAAA,CAAU,MAAMF,CAAAA,CAAK,IAAI,EACjC,CAAA,KAAQ,CAER,CACA,OAAA,CAAQ,IAAIA,CAAAA,CAAK,IAAI,EACrB,OAAA,CAAQ,GAAA,CAAIG,EAAM,GAAA,CAAI;AAAA,qBAAA,CAAyB,CAAC,EAClD","file":"forms-embed-4S46VDP4.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport chalk from 'chalk'\nimport clipboard from 'clipboardy'\nimport { copied } from '../../lib/output/brand.js'\n\nexport default async function formsEmbed(id: string): Promise<void> {\n const data = await apiGet<{ html: string }>(`/api/v1/forms/${id}/embed`, { authenticated: true })\n try {\n await clipboard.write(data.html)\n } catch {\n // ignore\n }\n console.log(data.html)\n console.log(chalk.dim(`\\n(copied to clipboard)`))\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/forms/forms-embed.ts"],"names":["formsEmbed","id","data","apiGet","clipboard","chalk"],"mappings":"2IAKA,eAAOA,EAAkCC,CAAAA,CAA2B,CAClE,IAAMC,CAAAA,CAAO,MAAMC,CAAAA,CAAyB,CAAA,cAAA,EAAiBF,CAAE,CAAA,MAAA,CAAA,CAAU,CAAE,cAAe,IAAK,CAAC,CAAA,CAChG,GAAI,CACF,MAAMG,CAAAA,CAAU,MAAMF,CAAAA,CAAK,IAAI,EACjC,CAAA,KAAQ,CAER,CACA,OAAA,CAAQ,IAAIA,CAAAA,CAAK,IAAI,EACrB,OAAA,CAAQ,GAAA,CAAIG,EAAM,GAAA,CAAI;AAAA,qBAAA,CAAyB,CAAC,EAClD","file":"forms-embed-FF3VMR4M.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport chalk from 'chalk'\nimport clipboard from 'clipboardy'\nimport { copied } from '../../lib/output/brand.js'\n\nexport default async function formsEmbed(id: string): Promise<void> {\n const data = await apiGet<{ html: string }>(`/api/v1/forms/${id}/embed`, { authenticated: true })\n try {\n await clipboard.write(data.html)\n } catch {\n // ignore\n }\n console.log(data.html)\n console.log(chalk.dim(`\\n(copied to clipboard)`))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-FYFPDKJM.js';import {d}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import n from'fs';import p from'path';async function m(t){let o=b("Exporting submissions...");o.start();let c=await d(`/api/v1/forms/${t}/export`,{authenticated:true});o.succeed();let s=p.join(process.cwd(),`filereq-${t.slice(0,8)}-submissions.csv`);n.writeFileSync(s,c.csv,"utf-8"),g(`Exported to ${s}`);}export{m as default};//# sourceMappingURL=forms-export-5ZNEL3V2.js.map
2
+ //# sourceMappingURL=forms-export-5ZNEL3V2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/forms/forms-export.ts"],"names":["formsExport","id","spinner","createSpinner","data","apiGet","filePath","path","fs","logSuccess"],"mappings":"kQAMA,eAAOA,CAAAA,CAAmCC,CAAAA,CAA2B,CACnE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,0BAA0B,CAAA,CACxDD,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,CAAAA,CAAO,MAAMC,CAAAA,CAAwB,CAAA,cAAA,EAAiBJ,CAAE,CAAA,OAAA,CAAA,CAAW,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAChGC,EAAQ,OAAA,EAAQ,CAChB,IAAMI,CAAAA,CAAWC,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAI,CAAG,CAAA,QAAA,EAAWN,CAAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,gBAAA,CAAkB,CAAA,CACrFO,CAAAA,CAAG,aAAA,CAAcF,CAAAA,CAAUF,CAAAA,CAAK,GAAA,CAAK,OAAO,CAAA,CAC5CK,CAAAA,CAAW,CAAA,YAAA,EAAeH,CAAQ,CAAA,CAAE,EACtC","file":"forms-export-WGHH5TBF.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function formsExport(id: string): Promise<void> {\n const spinner = createSpinner('Exporting submissions...')\n spinner.start()\n const data = await apiGet<{ csv: string }>(`/api/v1/forms/${id}/export`, { authenticated: true })\n spinner.succeed()\n const filePath = path.join(process.cwd(), `filereq-${id.slice(0, 8)}-submissions.csv`)\n fs.writeFileSync(filePath, data.csv, 'utf-8')\n logSuccess(`Exported to ${filePath}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/forms/forms-export.ts"],"names":["formsExport","id","spinner","createSpinner","data","apiGet","filePath","path","fs","logSuccess"],"mappings":"sOAMA,eAAOA,CAAAA,CAAmCC,CAAAA,CAA2B,CACnE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,0BAA0B,CAAA,CACxDD,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,CAAAA,CAAO,MAAMC,CAAAA,CAAwB,CAAA,cAAA,EAAiBJ,CAAE,CAAA,OAAA,CAAA,CAAW,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAChGC,EAAQ,OAAA,EAAQ,CAChB,IAAMI,CAAAA,CAAWC,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAI,CAAG,CAAA,QAAA,EAAWN,CAAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,gBAAA,CAAkB,CAAA,CACrFO,CAAAA,CAAG,aAAA,CAAcF,CAAAA,CAAUF,CAAAA,CAAK,GAAA,CAAK,OAAO,CAAA,CAC5CK,CAAAA,CAAW,CAAA,YAAA,EAAeH,CAAQ,CAAA,CAAE,EACtC","file":"forms-export-5ZNEL3V2.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function formsExport(id: string): Promise<void> {\n const spinner = createSpinner('Exporting submissions...')\n spinner.start()\n const data = await apiGet<{ csv: string }>(`/api/v1/forms/${id}/export`, { authenticated: true })\n spinner.succeed()\n const filePath = path.join(process.cwd(), `filereq-${id.slice(0, 8)}-submissions.csv`)\n fs.writeFileSync(filePath, data.csv, 'utf-8')\n logSuccess(`Exported to ${filePath}`)\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {f,m,l}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import o from'chalk';async function a(m$1){let i=(await d(`/api/v1/forms/${m$1}`,{authenticated:true})).form;if(f()){m(i);return}l(""),l(` ${o.bold(i.name)}`),l(o.dim(" \u2500\u2500\u2500".repeat(8))),l(` ${o.bold("ID:")} ${i.id}`),l(` ${o.bold("Folder:")} ${i.folder||o.dim("none")}`),l(` ${o.bold("Submissions:")} ${i.submission_count}`),l(` ${o.bold("Spam Protection:")} ${i.spam_protection?o.green("on"):o.dim("off")}`),l(` ${o.bold("Active:")} ${i.is_active?o.green("yes"):o.yellow("no")}`),l(` ${o.bold("Embed:")} ${o.dim(i.embed_url)}`),l("");}export{a as default};//# sourceMappingURL=forms-info-OMXUOOBT.js.map
2
- //# sourceMappingURL=forms-info-OMXUOOBT.js.map
1
+ import {d}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import {f,m,l}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import o from'chalk';async function a(m$1){let i=(await d(`/api/v1/forms/${m$1}`,{authenticated:true})).form;if(f()){m(i);return}l(""),l(` ${o.bold(i.name)}`),l(o.dim(" \u2500\u2500\u2500".repeat(8))),l(` ${o.bold("ID:")} ${i.id}`),l(` ${o.bold("Folder:")} ${i.folder||o.dim("none")}`),l(` ${o.bold("Submissions:")} ${i.submission_count}`),l(` ${o.bold("Spam Protection:")} ${i.spam_protection?o.green("on"):o.dim("off")}`),l(` ${o.bold("Active:")} ${i.is_active?o.green("yes"):o.yellow("no")}`),l(` ${o.bold("Embed:")} ${o.dim(i.embed_url)}`),l("");}export{a as default};//# sourceMappingURL=forms-info-SUST47TN.js.map
2
+ //# sourceMappingURL=forms-info-SUST47TN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/forms/forms-info.ts"],"names":["formsInfo","id","f","apiGet","isJsonMode","logJSON","logRaw","chalk"],"mappings":"yJAeA,eAAOA,CAAAA,CAAiCC,IAA2B,CAEjE,IAAMC,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAA6B,CAAA,cAAA,EAAiBF,GAAE,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC/E,IAAA,CAEf,GAAIG,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAC,CAAA,CACT,MACF,CAEAI,CAAAA,CAAO,EAAE,CAAA,CACTA,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAKL,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,CAAA,CAChCI,EAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CACnCD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,KAAK,CAAC,CAAA,cAAA,EAAiBL,CAAAA,CAAE,EAAE,EAAE,CAAA,CACpDI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,UAAA,EAAaL,EAAE,MAAA,EAAUK,CAAAA,CAAM,GAAA,CAAI,MAAM,CAAC,CAAA,CAAE,CAAA,CAC7ED,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,cAAc,CAAC,CAAA,KAAA,EAAQL,CAAAA,CAAE,gBAAgB,CAAA,CAAE,EAClEI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,kBAAkB,CAAC,CAAA,CAAA,EAAIL,CAAAA,CAAE,gBAAkBK,CAAAA,CAAM,KAAA,CAAM,IAAI,CAAA,CAAIA,CAAAA,CAAM,GAAA,CAAI,KAAK,CAAC,EAAE,CAAA,CACxGD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,UAAA,EAAaL,EAAE,SAAA,CAAYK,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,CAAAA,CAAM,MAAA,CAAO,IAAI,CAAC,CAAA,CAAE,CAAA,CACrGD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,QAAQ,CAAC,cAAcA,CAAAA,CAAM,GAAA,CAAIL,CAAAA,CAAE,SAAS,CAAC,CAAA,CAAE,CAAA,CACtEI,CAAAA,CAAO,EAAE,EACX","file":"forms-info-OMXUOOBT.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 chalk from 'chalk'\n\ninterface FormDetail {\n id: string\n name: string\n folder: string | null\n submission_count: number\n spam_protection: boolean\n is_active: boolean\n embed_url: string\n}\n\nexport default async function formsInfo(id: string): Promise<void> {\n const data = await apiGet<{ form: FormDetail }>(`/api/v1/forms/${id}`, { authenticated: true })\n const f = data.form\n\n if (isJsonMode()) {\n logJSON(f)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(f.name)}`)\n logRaw(chalk.dim(' ───'.repeat(8)))\n logRaw(` ${chalk.bold('ID:')} ${f.id}`)\n logRaw(` ${chalk.bold('Folder:')} ${f.folder || chalk.dim('none')}`)\n logRaw(` ${chalk.bold('Submissions:')} ${f.submission_count}`)\n logRaw(` ${chalk.bold('Spam Protection:')} ${f.spam_protection ? chalk.green('on') : chalk.dim('off')}`)\n logRaw(` ${chalk.bold('Active:')} ${f.is_active ? chalk.green('yes') : chalk.yellow('no')}`)\n logRaw(` ${chalk.bold('Embed:')} ${chalk.dim(f.embed_url)}`)\n logRaw('')\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/forms/forms-info.ts"],"names":["formsInfo","id","f","apiGet","isJsonMode","logJSON","logRaw","chalk"],"mappings":"yJAeA,eAAOA,CAAAA,CAAiCC,IAA2B,CAEjE,IAAMC,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAA6B,CAAA,cAAA,EAAiBF,GAAE,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC/E,IAAA,CAEf,GAAIG,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAC,CAAA,CACT,MACF,CAEAI,CAAAA,CAAO,EAAE,CAAA,CACTA,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAKL,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,CAAA,CAChCI,EAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CACnCD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,KAAK,CAAC,CAAA,cAAA,EAAiBL,CAAAA,CAAE,EAAE,EAAE,CAAA,CACpDI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,UAAA,EAAaL,EAAE,MAAA,EAAUK,CAAAA,CAAM,GAAA,CAAI,MAAM,CAAC,CAAA,CAAE,CAAA,CAC7ED,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,cAAc,CAAC,CAAA,KAAA,EAAQL,CAAAA,CAAE,gBAAgB,CAAA,CAAE,EAClEI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,kBAAkB,CAAC,CAAA,CAAA,EAAIL,CAAAA,CAAE,gBAAkBK,CAAAA,CAAM,KAAA,CAAM,IAAI,CAAA,CAAIA,CAAAA,CAAM,GAAA,CAAI,KAAK,CAAC,EAAE,CAAA,CACxGD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,UAAA,EAAaL,EAAE,SAAA,CAAYK,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,CAAAA,CAAM,MAAA,CAAO,IAAI,CAAC,CAAA,CAAE,CAAA,CACrGD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,QAAQ,CAAC,cAAcA,CAAAA,CAAM,GAAA,CAAIL,CAAAA,CAAE,SAAS,CAAC,CAAA,CAAE,CAAA,CACtEI,CAAAA,CAAO,EAAE,EACX","file":"forms-info-SUST47TN.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 chalk from 'chalk'\n\ninterface FormDetail {\n id: string\n name: string\n folder: string | null\n submission_count: number\n spam_protection: boolean\n is_active: boolean\n embed_url: string\n}\n\nexport default async function formsInfo(id: string): Promise<void> {\n const data = await apiGet<{ form: FormDetail }>(`/api/v1/forms/${id}`, { authenticated: true })\n const f = data.form\n\n if (isJsonMode()) {\n logJSON(f)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(f.name)}`)\n logRaw(chalk.dim(' ───'.repeat(8)))\n logRaw(` ${chalk.bold('ID:')} ${f.id}`)\n logRaw(` ${chalk.bold('Folder:')} ${f.folder || chalk.dim('none')}`)\n logRaw(` ${chalk.bold('Submissions:')} ${f.submission_count}`)\n logRaw(` ${chalk.bold('Spam Protection:')} ${f.spam_protection ? chalk.green('on') : chalk.dim('off')}`)\n logRaw(` ${chalk.bold('Active:')} ${f.is_active ? chalk.green('yes') : chalk.yellow('no')}`)\n logRaw(` ${chalk.bold('Embed:')} ${chalk.dim(f.embed_url)}`)\n logRaw('')\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {b}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import o from'chalk';async function s(){let r=((await d("/api/v1/forms",{authenticated:true})).forms||[]).map(e=>({id:o.dim(e.id.slice(0,8)),name:o.hex("#4FC3F7")(e.name),folder:o.dim(e.folder||"-"),submissions:String(e.submission_count),created:b(e.created_at),active:e.is_active?o.green("yes"):o.yellow("no")}));console.log(a(r,[{key:"id",label:"ID"},{key:"name",label:"Name"},{key:"folder",label:"Folder"},{key:"submissions",label:"Submissions"},{key:"created",label:"Created"},{key:"active",label:"Active"}]));}export{s as default};//# sourceMappingURL=forms-list-ZRKQXGLM.js.map
2
- //# sourceMappingURL=forms-list-ZRKQXGLM.js.map
1
+ import {d}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {b}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import o from'chalk';async function s(){let r=((await d("/api/v1/forms",{authenticated:true})).forms||[]).map(e=>({id:o.dim(e.id.slice(0,8)),name:o.hex("#4FC3F7")(e.name),folder:o.dim(e.folder||"-"),submissions:String(e.submission_count),created:b(e.created_at),active:e.is_active?o.green("yes"):o.yellow("no")}));console.log(a(r,[{key:"id",label:"ID"},{key:"name",label:"Name"},{key:"folder",label:"Folder"},{key:"submissions",label:"Submissions"},{key:"created",label:"Created"},{key:"active",label:"Active"}]));}export{s as default};//# sourceMappingURL=forms-list-W2UUPFFD.js.map
2
+ //# sourceMappingURL=forms-list-W2UUPFFD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/forms/forms-list.ts"],"names":["formsList","rows","apiGet","f","chalk","formatDate","renderTable"],"mappings":"qNAcA,eAAOA,CAAAA,EAAkD,CAEvD,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAA8B,eAAA,CAAiB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACtE,KAAA,EAAS,EAAC,EAAG,GAAA,CAAIC,CAAAA,GAAM,CACxC,EAAA,CAAIC,CAAAA,CAAM,GAAA,CAAID,CAAAA,CAAE,EAAA,CAAG,KAAA,CAAM,EAAG,CAAC,CAAC,CAAA,CAC9B,IAAA,CAAMC,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAED,CAAAA,CAAE,IAAI,CAAA,CACjC,MAAA,CAAQC,CAAAA,CAAM,IAAID,CAAAA,CAAE,MAAA,EAAU,GAAG,CAAA,CACjC,WAAA,CAAa,MAAA,CAAOA,CAAAA,CAAE,gBAAgB,CAAA,CACtC,OAAA,CAASE,CAAAA,CAAWF,CAAAA,CAAE,UAAU,CAAA,CAChC,OAAQA,CAAAA,CAAE,SAAA,CAAYC,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,EAAM,MAAA,CAAO,IAAI,CAC9D,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,IAAIE,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,IAAA,CAAM,KAAA,CAAO,IAAK,CAAA,CACzB,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,EAC7B,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,QAAS,CAAA,CACjC,CAAE,GAAA,CAAK,aAAA,CAAe,KAAA,CAAO,aAAc,CAAA,CAC3C,CAAE,IAAK,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACnC,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,QAAS,CACnC,CAAC,CAAC,EACJ","file":"forms-list-ZRKQXGLM.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatDate } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface FormInfo {\n id: string\n name: string\n folder: string\n submission_count: number\n created_at: string\n is_active: boolean\n}\n\nexport default async function formsList(): Promise<void> {\n const data = await apiGet<{ forms: FormInfo[] }>('/api/v1/forms', { authenticated: true })\n const rows = (data.forms || []).map(f => ({\n id: chalk.dim(f.id.slice(0, 8)),\n name: chalk.hex('#4FC3F7')(f.name),\n folder: chalk.dim(f.folder || '-'),\n submissions: String(f.submission_count),\n created: formatDate(f.created_at),\n active: f.is_active ? chalk.green('yes') : chalk.yellow('no'),\n }))\n console.log(renderTable(rows, [\n { key: 'id', label: 'ID' },\n { key: 'name', label: 'Name' },\n { key: 'folder', label: 'Folder' },\n { key: 'submissions', label: 'Submissions' },\n { key: 'created', label: 'Created' },\n { key: 'active', label: 'Active' },\n ]))\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/forms/forms-list.ts"],"names":["formsList","rows","apiGet","f","chalk","formatDate","renderTable"],"mappings":"qNAcA,eAAOA,CAAAA,EAAkD,CAEvD,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAA8B,eAAA,CAAiB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACtE,KAAA,EAAS,EAAC,EAAG,GAAA,CAAIC,CAAAA,GAAM,CACxC,EAAA,CAAIC,CAAAA,CAAM,GAAA,CAAID,CAAAA,CAAE,EAAA,CAAG,KAAA,CAAM,EAAG,CAAC,CAAC,CAAA,CAC9B,IAAA,CAAMC,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAED,CAAAA,CAAE,IAAI,CAAA,CACjC,MAAA,CAAQC,CAAAA,CAAM,IAAID,CAAAA,CAAE,MAAA,EAAU,GAAG,CAAA,CACjC,WAAA,CAAa,MAAA,CAAOA,CAAAA,CAAE,gBAAgB,CAAA,CACtC,OAAA,CAASE,CAAAA,CAAWF,CAAAA,CAAE,UAAU,CAAA,CAChC,OAAQA,CAAAA,CAAE,SAAA,CAAYC,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,EAAM,MAAA,CAAO,IAAI,CAC9D,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,IAAIE,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,IAAA,CAAM,KAAA,CAAO,IAAK,CAAA,CACzB,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,EAC7B,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,QAAS,CAAA,CACjC,CAAE,GAAA,CAAK,aAAA,CAAe,KAAA,CAAO,aAAc,CAAA,CAC3C,CAAE,IAAK,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACnC,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,QAAS,CACnC,CAAC,CAAC,EACJ","file":"forms-list-W2UUPFFD.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatDate } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface FormInfo {\n id: string\n name: string\n folder: string\n submission_count: number\n created_at: string\n is_active: boolean\n}\n\nexport default async function formsList(): Promise<void> {\n const data = await apiGet<{ forms: FormInfo[] }>('/api/v1/forms', { authenticated: true })\n const rows = (data.forms || []).map(f => ({\n id: chalk.dim(f.id.slice(0, 8)),\n name: chalk.hex('#4FC3F7')(f.name),\n folder: chalk.dim(f.folder || '-'),\n submissions: String(f.submission_count),\n created: formatDate(f.created_at),\n active: f.is_active ? chalk.green('yes') : chalk.yellow('no'),\n }))\n console.log(renderTable(rows, [\n { key: 'id', label: 'ID' },\n { key: 'name', label: 'Name' },\n { key: 'folder', label: 'Folder' },\n { key: 'submissions', label: 'Submissions' },\n { key: 'created', label: 'Created' },\n { key: 'active', label: 'Active' },\n ]))\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import {f,m}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import e from'chalk';async function u(n,b){let t=await d(`/api/v1/forms/${n}/submissions`,{authenticated:true});if(f()){m(t.submissions);return}let l=(t.submissions||[]).map(i=>({id:e.dim(i.id.slice(0,8)),file:i.file_name,submitted:c(i.submitted_at),name:i.submitter_name||e.dim("-"),email:i.submitter_email||e.dim("-")}));console.log(a(l,[{key:"id",label:"ID"},{key:"file",label:"File"},{key:"submitted",label:"Submitted"},{key:"name",label:"Name"},{key:"email",label:"Email"}]));}export{u as default};//# sourceMappingURL=forms-submissions-K7W7XYPR.js.map
2
- //# sourceMappingURL=forms-submissions-K7W7XYPR.js.map
1
+ import {d}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import {f,m}from'./chunk-QT7R3AXE.js';import'./chunk-4NTVRCZM.js';import e from'chalk';async function u(n,b){let t=await d(`/api/v1/forms/${n}/submissions`,{authenticated:true});if(f()){m(t.submissions);return}let l=(t.submissions||[]).map(i=>({id:e.dim(i.id.slice(0,8)),file:i.file_name,submitted:c(i.submitted_at),name:i.submitter_name||e.dim("-"),email:i.submitter_email||e.dim("-")}));console.log(a(l,[{key:"id",label:"ID"},{key:"file",label:"File"},{key:"submitted",label:"Submitted"},{key:"name",label:"Name"},{key:"email",label:"Email"}]));}export{u as default};//# sourceMappingURL=forms-submissions-UTLSYPWS.js.map
2
+ //# sourceMappingURL=forms-submissions-UTLSYPWS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/forms/forms-submissions.ts"],"names":["formsSubmissions","id","options","data","apiGet","isJsonMode","logJSON","rows","s","chalk","formatRelative","renderTable"],"mappings":"+NAgBA,eAAOA,CAAAA,CAAwCC,CAAAA,CAAYC,EAA8C,CACvG,IAAMC,CAAAA,CAAO,MAAMC,CAAAA,CAAsC,CAAA,cAAA,EAAiBH,CAAE,CAAA,YAAA,CAAA,CAAgB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACnH,GAAII,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAAA,CAAK,WAAW,EACxB,MACF,CACA,IAAMI,CAAAA,CAAAA,CAAQJ,CAAAA,CAAK,WAAA,EAAe,EAAC,EAAG,GAAA,CAAIK,CAAAA,GAAM,CAC9C,EAAA,CAAIC,CAAAA,CAAM,IAAID,CAAAA,CAAE,EAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,EAC9B,IAAA,CAAMA,CAAAA,CAAE,SAAA,CACR,SAAA,CAAWE,CAAAA,CAAeF,CAAAA,CAAE,YAAY,CAAA,CACxC,IAAA,CAAMA,CAAAA,CAAE,cAAA,EAAkBC,CAAAA,CAAM,GAAA,CAAI,GAAG,CAAA,CACvC,KAAA,CAAOD,CAAAA,CAAE,eAAA,EAAmBC,CAAAA,CAAM,GAAA,CAAI,GAAG,CAC3C,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,GAAA,CAAIE,CAAAA,CAAYJ,EAAM,CAC5B,CAAE,GAAA,CAAK,IAAA,CAAM,KAAA,CAAO,IAAK,EACzB,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,WAAA,CAAa,KAAA,CAAO,WAAY,CAAA,CACvC,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CACjC,CAAC,CAAC,EACJ","file":"forms-submissions-K7W7XYPR.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport { logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\n\ninterface Submission {\n id: string\n submitted_at: string\n file_name: string\n file_size: number\n submitter_name: string\n submitter_email: string\n}\n\nexport default async function formsSubmissions(id: string, options?: { output?: string }): Promise<void> {\n const data = await apiGet<{ submissions: Submission[] }>(`/api/v1/forms/${id}/submissions`, { authenticated: true })\n if (isJsonMode()) {\n logJSON(data.submissions)\n return\n }\n const rows = (data.submissions || []).map(s => ({\n id: chalk.dim(s.id.slice(0, 8)),\n file: s.file_name,\n submitted: formatRelative(s.submitted_at),\n name: s.submitter_name || chalk.dim('-'),\n email: s.submitter_email || chalk.dim('-'),\n }))\n console.log(renderTable(rows, [\n { key: 'id', label: 'ID' },\n { key: 'file', label: 'File' },\n { key: 'submitted', label: 'Submitted' },\n { key: 'name', label: 'Name' },\n { key: 'email', label: 'Email' },\n ]))\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/forms/forms-submissions.ts"],"names":["formsSubmissions","id","options","data","apiGet","isJsonMode","logJSON","rows","s","chalk","formatRelative","renderTable"],"mappings":"+NAgBA,eAAOA,CAAAA,CAAwCC,CAAAA,CAAYC,EAA8C,CACvG,IAAMC,CAAAA,CAAO,MAAMC,CAAAA,CAAsC,CAAA,cAAA,EAAiBH,CAAE,CAAA,YAAA,CAAA,CAAgB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACnH,GAAII,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAAA,CAAK,WAAW,EACxB,MACF,CACA,IAAMI,CAAAA,CAAAA,CAAQJ,CAAAA,CAAK,WAAA,EAAe,EAAC,EAAG,GAAA,CAAIK,CAAAA,GAAM,CAC9C,EAAA,CAAIC,CAAAA,CAAM,IAAID,CAAAA,CAAE,EAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,EAC9B,IAAA,CAAMA,CAAAA,CAAE,SAAA,CACR,SAAA,CAAWE,CAAAA,CAAeF,CAAAA,CAAE,YAAY,CAAA,CACxC,IAAA,CAAMA,CAAAA,CAAE,cAAA,EAAkBC,CAAAA,CAAM,GAAA,CAAI,GAAG,CAAA,CACvC,KAAA,CAAOD,CAAAA,CAAE,eAAA,EAAmBC,CAAAA,CAAM,GAAA,CAAI,GAAG,CAC3C,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,GAAA,CAAIE,CAAAA,CAAYJ,EAAM,CAC5B,CAAE,GAAA,CAAK,IAAA,CAAM,KAAA,CAAO,IAAK,EACzB,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,WAAA,CAAa,KAAA,CAAO,WAAY,CAAA,CACvC,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CACjC,CAAC,CAAC,EACJ","file":"forms-submissions-UTLSYPWS.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport { logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\n\ninterface Submission {\n id: string\n submitted_at: string\n file_name: string\n file_size: number\n submitter_name: string\n submitter_email: string\n}\n\nexport default async function formsSubmissions(id: string, options?: { output?: string }): Promise<void> {\n const data = await apiGet<{ submissions: Submission[] }>(`/api/v1/forms/${id}/submissions`, { authenticated: true })\n if (isJsonMode()) {\n logJSON(data.submissions)\n return\n }\n const rows = (data.submissions || []).map(s => ({\n id: chalk.dim(s.id.slice(0, 8)),\n file: s.file_name,\n submitted: formatRelative(s.submitted_at),\n name: s.submitter_name || chalk.dim('-'),\n email: s.submitter_email || chalk.dim('-'),\n }))\n console.log(renderTable(rows, [\n { key: 'id', label: 'ID' },\n { key: 'file', label: 'File' },\n { key: 'submitted', label: 'Submitted' },\n { key: 'name', label: 'Name' },\n { key: 'email', label: 'Email' },\n ]))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {b,a}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-BC2OVPRV.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {j,k,a as a$1,g}from'./chunk-QT7R3AXE.js';import {m,a as a$2,b as b$1,c as c$1,j as j$1,k as k$1,d,h,e as e$1,f as f$1,g as g$1,n}from'./chunk-4NTVRCZM.js';import C from'inquirer';import f from'os';import {blake3}from'@noble/hashes/blake3';function c(r){r.fill(0);}var M=process.env.SQUIDCLOUD_SERVER_PUB_KEY||"",l=null,i=null,t=null,p=null;async function N(r,u){let{pub:s,priv:e$2}=a$2();l=e$2,i=s,t=b$1(),p=c$1(u,r);let d$1=j$1(blake3(f.hostname()+f.platform()+f.arch())),g=Date.now(),o=await e("/api/auth/ssp/hello",{email:r,password_proof:j$1(p),client_ephemeral_pub:j$1(i),client_nonce:j$1(t),device_fingerprint:d$1,timestamp:g}),S=k$1(o.server_nonce),F=k$1(o.server_ephemeral_pub),H=k$1(o.server_signature),v=k$1(M);if(v.length>0){let j=d(t,S,i,g);if(!await h(H,j,v))throw I(),new Error("Connection rejected \u2014 server identity could not be verified")}let V=e$1(F,l),$=f$1(V,t,S),D=k$1(o.encrypted_session),O=k$1(o.session_iv),Y=k$1(o.session_tag),m=g$1(D,O,Y,$);return m.device_fingerprint=d$1,await n(m),I(),m}function I(){l&&c(l),i&&c(i),t&&c(t),p&&c(p),l=null,i=null,t=null,p=null;}async function Q(){let r=await m();if(r){j(`Already authenticated as ${r.user.email}`);let{force:e}=await C.prompt([{type:"confirm",name:"force",message:"Re-authenticate?",default:false}]);if(!e)return}let u=await C.prompt([{type:"input",name:"email",message:"Email:",validate:e=>e.includes("@")?true:"Please enter a valid email"},{type:"password",name:"password",message:"Password:",mask:"*"}]),s=b("Authenticating with SquidCloud...");s.start();try{let e=await N(u.email,u.password);s.succeed(),console.log(a()),k(`Welcome to SquidCloud, ${a$1(e.user.username)}!`),g(`Authenticated as ${e.user.email} (${e.user.plan})`);}catch(e){throw s.fail(),e}}export{Q as default};//# sourceMappingURL=login-SO6BZ4HE.js.map
2
+ //# sourceMappingURL=login-SO6BZ4HE.js.map