squidcloudctl 1.2.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -0
- package/dist/auth-revoke-LTTGYMMO.js +2 -0
- package/dist/auth-revoke-LTTGYMMO.js.map +1 -0
- package/dist/auth-sessions-ZVZIABS6.js +2 -0
- package/dist/auth-sessions-ZVZIABS6.js.map +1 -0
- package/dist/auth-status-X4HCOXHF.js +2 -0
- package/dist/auth-status-X4HCOXHF.js.map +1 -0
- package/dist/bin/squidcloud.js +189 -3
- package/dist/bin/squidcloud.js.map +1 -1
- package/dist/chunk-2RAH2YAY.js +6 -0
- package/dist/chunk-2RAH2YAY.js.map +1 -0
- package/dist/chunk-3E23ZFCV.js +2 -0
- package/dist/chunk-3E23ZFCV.js.map +1 -0
- package/dist/chunk-3JD6INFN.js +2 -0
- package/dist/chunk-3JD6INFN.js.map +1 -0
- package/dist/chunk-3XXAN3BP.js +2 -0
- package/dist/chunk-3XXAN3BP.js.map +1 -0
- package/dist/chunk-43FK57CR.js +2 -0
- package/dist/chunk-43FK57CR.js.map +1 -0
- package/dist/chunk-4625KLCT.js +2 -0
- package/dist/chunk-4625KLCT.js.map +1 -0
- package/dist/chunk-4EBJSKII.js +2 -0
- package/dist/chunk-4EBJSKII.js.map +1 -0
- package/dist/chunk-4FZZ3I76.js +3 -0
- package/dist/chunk-4FZZ3I76.js.map +1 -0
- package/dist/chunk-4GV6L47P.js +2 -0
- package/dist/chunk-4GV6L47P.js.map +1 -0
- package/dist/chunk-4VH6P4GC.js +2 -0
- package/dist/chunk-4VH6P4GC.js.map +1 -0
- package/dist/chunk-4VMT6FXR.js +2 -0
- package/dist/chunk-4VMT6FXR.js.map +1 -0
- package/dist/chunk-5JWZKMAI.js +2 -0
- package/dist/chunk-5JWZKMAI.js.map +1 -0
- package/dist/chunk-5TYVWTHC.js +2 -0
- package/dist/chunk-5TYVWTHC.js.map +1 -0
- package/dist/chunk-5XSOEZ7F.js +2 -0
- package/dist/chunk-5XSOEZ7F.js.map +1 -0
- package/dist/chunk-632C2FZM.js +2 -0
- package/dist/chunk-632C2FZM.js.map +1 -0
- package/dist/chunk-6IXURJIU.js +2 -0
- package/dist/chunk-6IXURJIU.js.map +1 -0
- package/dist/chunk-6LLJ6P3U.js +2 -0
- package/dist/chunk-6LLJ6P3U.js.map +1 -0
- package/dist/chunk-7JVXW7C4.js +2 -0
- package/dist/chunk-7JVXW7C4.js.map +1 -0
- package/dist/chunk-7TMB3QXF.js +2 -0
- package/dist/chunk-7TMB3QXF.js.map +1 -0
- package/dist/chunk-ADVALEDT.js +2 -0
- package/dist/chunk-ADVALEDT.js.map +1 -0
- package/dist/chunk-AN6SA3TI.js +2 -0
- package/dist/chunk-AN6SA3TI.js.map +1 -0
- package/dist/chunk-AZ4774YQ.js +2 -0
- package/dist/chunk-AZ4774YQ.js.map +1 -0
- package/dist/chunk-BDRSOUY3.js +2 -0
- package/dist/chunk-BDRSOUY3.js.map +1 -0
- package/dist/chunk-BDUD2TSS.js +2 -0
- package/dist/chunk-BDUD2TSS.js.map +1 -0
- package/dist/chunk-BGOM6C6D.js +2 -0
- package/dist/chunk-BGOM6C6D.js.map +1 -0
- package/dist/chunk-BUG4O26P.js +2 -0
- package/dist/chunk-BUG4O26P.js.map +1 -0
- package/dist/chunk-BUKRJMQ5.js +2 -0
- package/dist/chunk-BUKRJMQ5.js.map +1 -0
- package/dist/chunk-C7M6KZGB.js +2 -0
- package/dist/chunk-C7M6KZGB.js.map +1 -0
- package/dist/chunk-CFZZRV3Z.js +2 -0
- package/dist/chunk-CFZZRV3Z.js.map +1 -0
- package/dist/chunk-CRT5ANG2.js +2 -0
- package/dist/chunk-CRT5ANG2.js.map +1 -0
- package/dist/chunk-E26CRSCS.js +2 -0
- package/dist/chunk-E26CRSCS.js.map +1 -0
- package/dist/chunk-E5PJTTE5.js +2 -0
- package/dist/chunk-E5PJTTE5.js.map +1 -0
- package/dist/chunk-E6UJ45WU.js +2 -0
- package/dist/chunk-E6UJ45WU.js.map +1 -0
- package/dist/chunk-EDD2NCQT.js +2 -0
- package/dist/chunk-EDD2NCQT.js.map +1 -0
- package/dist/chunk-FJ5D3ELC.js +2 -0
- package/dist/chunk-FJ5D3ELC.js.map +1 -0
- package/dist/chunk-GFTSNOCG.js +5 -0
- package/dist/chunk-GFTSNOCG.js.map +1 -0
- package/dist/chunk-GMKCZ2PB.js +2 -0
- package/dist/chunk-GMKCZ2PB.js.map +1 -0
- package/dist/chunk-GRZ7FAK4.js +2 -0
- package/dist/chunk-GRZ7FAK4.js.map +1 -0
- package/dist/chunk-GVYPGCEO.js +2 -0
- package/dist/chunk-GVYPGCEO.js.map +1 -0
- package/dist/chunk-H3FD4YYC.js +2 -0
- package/dist/chunk-H3FD4YYC.js.map +1 -0
- package/dist/chunk-I3DVKNFK.js +2 -0
- package/dist/chunk-I3DVKNFK.js.map +1 -0
- package/dist/chunk-IER3WJEG.js +2 -0
- package/dist/chunk-IER3WJEG.js.map +1 -0
- package/dist/chunk-J5MM66CO.js +2 -0
- package/dist/chunk-J5MM66CO.js.map +1 -0
- package/dist/chunk-K4UZNQFC.js +2 -0
- package/dist/chunk-K4UZNQFC.js.map +1 -0
- package/dist/chunk-KJIMUYAU.js +2 -0
- package/dist/chunk-KJIMUYAU.js.map +1 -0
- package/dist/chunk-KLPKNHXU.js +2 -0
- package/dist/chunk-KLPKNHXU.js.map +1 -0
- package/dist/chunk-KQE3YLI3.js +2 -0
- package/dist/chunk-KQE3YLI3.js.map +1 -0
- package/dist/chunk-KZ7RBLQY.js +2 -0
- package/dist/chunk-KZ7RBLQY.js.map +1 -0
- package/dist/chunk-LDYPQMLZ.js +2 -0
- package/dist/chunk-LDYPQMLZ.js.map +1 -0
- package/dist/chunk-LFPHETWG.js +2 -0
- package/dist/chunk-LFPHETWG.js.map +1 -0
- package/dist/chunk-M6RN7Y3S.js +2 -0
- package/dist/chunk-M6RN7Y3S.js.map +1 -0
- package/dist/chunk-N6QOCJDY.js +2 -0
- package/dist/chunk-N6QOCJDY.js.map +1 -0
- package/dist/chunk-NB4OO3VK.js +2 -0
- package/dist/chunk-NB4OO3VK.js.map +1 -0
- package/dist/chunk-NJC4W2S6.js +2 -0
- package/dist/chunk-NJC4W2S6.js.map +1 -0
- package/dist/chunk-NJCALUUB.js +2 -0
- package/dist/chunk-NJCALUUB.js.map +1 -0
- package/dist/chunk-NS5IBNC2.js +2 -0
- package/dist/chunk-NS5IBNC2.js.map +1 -0
- package/dist/chunk-OCDE2G25.js +2 -0
- package/dist/chunk-OCDE2G25.js.map +1 -0
- package/dist/chunk-OEURGJIH.js +2 -0
- package/dist/chunk-OEURGJIH.js.map +1 -0
- package/dist/chunk-OPZJKTOV.js +2 -0
- package/dist/chunk-OPZJKTOV.js.map +1 -0
- package/dist/{chunk-N3AD2QRA.js → chunk-OSI5H2T5.js} +2 -2
- package/dist/chunk-OSI5H2T5.js.map +1 -0
- package/dist/chunk-OXJ6DOWC.js +2 -0
- package/dist/chunk-OXJ6DOWC.js.map +1 -0
- package/dist/chunk-P42LDK4T.js +2 -0
- package/dist/chunk-P42LDK4T.js.map +1 -0
- package/dist/chunk-PGDN5F2F.js +2 -0
- package/dist/chunk-PGDN5F2F.js.map +1 -0
- package/dist/chunk-PVZ4PRGM.js +2 -0
- package/dist/chunk-PVZ4PRGM.js.map +1 -0
- package/dist/chunk-QCDCTQU5.js +2 -0
- package/dist/chunk-QCDCTQU5.js.map +1 -0
- package/dist/chunk-QEG6LP5X.js +2 -0
- package/dist/chunk-QEG6LP5X.js.map +1 -0
- package/dist/chunk-QF3NWEHO.js +2 -0
- package/dist/chunk-QF3NWEHO.js.map +1 -0
- package/dist/chunk-QLLHU2RS.js +2 -0
- package/dist/chunk-QLLHU2RS.js.map +1 -0
- package/dist/chunk-R2PV6TY4.js +2 -0
- package/dist/chunk-R2PV6TY4.js.map +1 -0
- package/dist/chunk-RREABTVT.js +2 -0
- package/dist/chunk-RREABTVT.js.map +1 -0
- package/dist/chunk-RRGGKRRS.js +2 -0
- package/dist/chunk-RRGGKRRS.js.map +1 -0
- package/dist/chunk-RYEKRFP5.js +2 -0
- package/dist/chunk-RYEKRFP5.js.map +1 -0
- package/dist/chunk-SBNM6EQO.js +2 -0
- package/dist/chunk-SBNM6EQO.js.map +1 -0
- package/dist/chunk-T6VFW2SW.js +2 -0
- package/dist/chunk-T6VFW2SW.js.map +1 -0
- package/dist/chunk-TAS2JGNI.js +2 -0
- package/dist/chunk-TAS2JGNI.js.map +1 -0
- package/dist/chunk-UO2SSIIZ.js +3 -0
- package/dist/chunk-UO2SSIIZ.js.map +1 -0
- package/dist/chunk-UYERZEPM.js +2 -0
- package/dist/chunk-UYERZEPM.js.map +1 -0
- package/dist/chunk-V3UZYH25.js +2 -0
- package/dist/chunk-V3UZYH25.js.map +1 -0
- package/dist/chunk-VBOLWWMB.js +2 -0
- package/dist/chunk-VBOLWWMB.js.map +1 -0
- package/dist/chunk-VDWSP3BD.js +3 -0
- package/dist/chunk-VDWSP3BD.js.map +1 -0
- package/dist/chunk-VPEATOB2.js +2 -0
- package/dist/chunk-VPEATOB2.js.map +1 -0
- package/dist/chunk-VXPI52BF.js +2 -0
- package/dist/chunk-VXPI52BF.js.map +1 -0
- package/dist/chunk-WOMYFCVM.js +2 -0
- package/dist/chunk-WOMYFCVM.js.map +1 -0
- package/dist/chunk-WVCLY4PF.js +2 -0
- package/dist/chunk-WVCLY4PF.js.map +1 -0
- package/dist/chunk-WVS5JOCE.js +2 -0
- package/dist/chunk-WVS5JOCE.js.map +1 -0
- package/dist/chunk-X33BC54Z.js +2 -0
- package/dist/chunk-X33BC54Z.js.map +1 -0
- package/dist/chunk-XHGWAAJS.js +2 -0
- package/dist/chunk-XHGWAAJS.js.map +1 -0
- package/dist/chunk-XJTNICPE.js +2 -0
- package/dist/chunk-XJTNICPE.js.map +1 -0
- package/dist/chunk-YBKX6Q3Q.js +2 -0
- package/dist/chunk-YBKX6Q3Q.js.map +1 -0
- package/dist/chunk-YE2FF227.js +2 -0
- package/dist/chunk-YE2FF227.js.map +1 -0
- package/dist/chunk-YMTB3NHI.js +2 -0
- package/dist/chunk-YMTB3NHI.js.map +1 -0
- package/dist/chunk-YQQMT67S.js +2 -0
- package/dist/chunk-YQQMT67S.js.map +1 -0
- package/dist/chunk-YRSMMECJ.js +2 -0
- package/dist/chunk-YRSMMECJ.js.map +1 -0
- package/dist/chunk-Z4BTW3UI.js +2 -0
- package/dist/chunk-Z4BTW3UI.js.map +1 -0
- package/dist/chunk-ZGBTOZ7M.js +2 -0
- package/dist/chunk-ZGBTOZ7M.js.map +1 -0
- package/dist/chunk-ZQ2OIVG3.js +2 -0
- package/dist/chunk-ZQ2OIVG3.js.map +1 -0
- package/dist/chunk-ZXNTK3KX.js +2 -0
- package/dist/chunk-ZXNTK3KX.js.map +1 -0
- package/dist/chunk-ZY4RVPTF.js +2 -0
- package/dist/chunk-ZY4RVPTF.js.map +1 -0
- package/dist/chunk-ZZSRCXWK.js +2 -0
- package/dist/chunk-ZZSRCXWK.js.map +1 -0
- package/dist/collab-activity-R6AYISVI.js +2 -0
- package/dist/collab-activity-R6AYISVI.js.map +1 -0
- package/dist/collab-invite-TUWJGMNS.js +2 -0
- package/dist/collab-invite-TUWJGMNS.js.map +1 -0
- package/dist/collab-leave-GRSWXTOP.js +2 -0
- package/dist/collab-leave-GRSWXTOP.js.map +1 -0
- package/dist/collab-list-ZKZTNIGX.js +2 -0
- package/dist/collab-list-ZKZTNIGX.js.map +1 -0
- package/dist/collab-remove-2HYNLLLX.js +2 -0
- package/dist/collab-remove-2HYNLLLX.js.map +1 -0
- package/dist/collab-transfer-HC5KHBV5.js +2 -0
- package/dist/collab-transfer-HC5KHBV5.js.map +1 -0
- package/dist/commands/auth/auth-status.js +29 -0
- package/dist/commands/auth/index.js +2 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/auth/login-device.js +70 -0
- package/dist/commands/auth/login-oauth.js +81 -0
- package/dist/commands/auth/logout.js +23 -0
- package/dist/commands/auth/whoami.js +21 -0
- package/dist/commands/collab/index.js +2 -0
- package/dist/commands/collab/index.js.map +1 -0
- package/dist/commands/deploy/index.js +2 -0
- package/dist/commands/deploy/index.js.map +1 -0
- package/dist/commands/filereq/client.js +37 -0
- package/dist/commands/filereq/create.js +36 -0
- package/dist/commands/filereq/delete.js +18 -0
- package/dist/commands/filereq/list.js +17 -0
- package/dist/commands/filereq/submissions.js +29 -0
- package/dist/commands/files/download.js +23 -0
- package/dist/commands/files/list.js +33 -0
- package/dist/commands/files/upload.js +57 -0
- package/dist/commands/forms/index.js +2 -0
- package/dist/commands/forms/index.js.map +1 -0
- package/dist/commands/fs/binary.js +110 -0
- package/dist/commands/fs/mount.js +46 -0
- package/dist/commands/fs/status.js +18 -0
- package/dist/commands/fs/stop.js +19 -0
- package/dist/commands/fs/webdav.js +1 -0
- package/dist/commands/health.js +20 -0
- package/dist/commands/host/api.js +186 -0
- package/dist/commands/host/keys.js +63 -0
- package/dist/commands/host/status.js +15 -0
- package/dist/commands/host/stop.js +19 -0
- package/dist/commands/logs/index.js +2 -0
- package/dist/commands/logs/index.js.map +1 -0
- package/dist/commands/monitor/index.js +2 -0
- package/dist/commands/monitor/index.js.map +1 -0
- package/dist/commands/scripts/index.js +2 -0
- package/dist/commands/scripts/index.js.map +1 -0
- package/dist/commands/secrets/list.js +14 -0
- package/dist/commands/secrets/secrets-create.js +28 -0
- package/dist/commands/secrets/secrets-delete.js +9 -0
- package/dist/commands/secrets/secrets-list.js +1 -0
- package/dist/commands/secrets/secrets-rename.js +9 -0
- package/dist/commands/secrets/secrets-verify.js +16 -0
- package/dist/commands/share/create.js +34 -0
- package/dist/commands/sign/index.js +2 -0
- package/dist/commands/sign/index.js.map +1 -0
- package/dist/commands/sites/client.js +20 -0
- package/dist/commands/sites/index.js +2 -0
- package/dist/commands/sites/index.js.map +1 -0
- package/dist/commands/sites/list.js +18 -0
- package/dist/commands/sites/open.js +12 -0
- package/dist/commands/sites/unpublish.js +32 -0
- package/dist/commands/sites/visibility.js +16 -0
- package/dist/commands/storage/commands.js +114 -0
- package/dist/commands/storage/folders-create.js +15 -0
- package/dist/commands/storage/folders-helpers.js +8 -0
- package/dist/commands/storage/folders-list.js +14 -0
- package/dist/commands/storage/index.js +2 -0
- package/dist/commands/storage/index.js.map +1 -0
- package/dist/commands/storage/storage-cp.js +1 -0
- package/dist/commands/storage/storage-download.js +1 -0
- package/dist/commands/storage/storage-info.js +1 -0
- package/dist/commands/storage/storage-ls.js +1 -0
- package/dist/commands/storage/storage-mkdir.js +15 -0
- package/dist/commands/storage/storage-mv.js +1 -0
- package/dist/commands/storage/storage-rm.js +1 -0
- package/dist/commands/storage/storage-search.js +1 -0
- package/dist/commands/storage/storage-upload.js +1 -0
- package/dist/commands/time/index.js +2 -0
- package/dist/commands/time/index.js.map +1 -0
- package/dist/commands/util/index.js +2 -0
- package/dist/commands/util/index.js.map +1 -0
- package/dist/commands/util/version.js +16 -0
- package/dist/completion-DY4JRFCG.js +2 -0
- package/dist/completion-DY4JRFCG.js.map +1 -0
- package/dist/config-GGD4POJI.js +2 -0
- package/dist/{config-PL34OPDL.js.map → config-GGD4POJI.js.map} +1 -1
- package/dist/config-delete-K42TE5KR.js +2 -0
- package/dist/config-delete-K42TE5KR.js.map +1 -0
- package/dist/config-get-7BFP6F4Q.js +2 -0
- package/dist/config-get-7BFP6F4Q.js.map +1 -0
- package/dist/config-reset-BIGP2K2H.js +2 -0
- package/dist/config-reset-BIGP2K2H.js.map +1 -0
- package/dist/config-set-C6PZ3J6Q.js +2 -0
- package/dist/config-set-C6PZ3J6Q.js.map +1 -0
- package/dist/create-G6YH4DLB.js +2 -0
- package/dist/create-G6YH4DLB.js.map +1 -0
- package/dist/create-GMSJQNJC.js +2 -0
- package/dist/create-GMSJQNJC.js.map +1 -0
- package/dist/credits-6PQPN6AJ.js +2 -0
- package/dist/credits-6PQPN6AJ.js.map +1 -0
- package/dist/doctor-WVBOVEGI.js +2 -0
- package/dist/doctor-WVBOVEGI.js.map +1 -0
- package/dist/download-C3JFSCQ4.js +2 -0
- package/dist/download-C3JFSCQ4.js.map +1 -0
- package/dist/feedback-A522XU46.js +2 -0
- package/dist/feedback-A522XU46.js.map +1 -0
- package/dist/forms-clear-OVSVO22O.js +2 -0
- package/dist/forms-clear-OVSVO22O.js.map +1 -0
- package/dist/forms-create-BLNCFEXX.js +2 -0
- package/dist/forms-create-BLNCFEXX.js.map +1 -0
- package/dist/forms-delete-DS2YSDUQ.js +2 -0
- package/dist/forms-delete-DS2YSDUQ.js.map +1 -0
- package/dist/forms-embed-WIFFAJZZ.js +2 -0
- package/dist/forms-embed-WIFFAJZZ.js.map +1 -0
- package/dist/forms-export-FQQI7SV2.js +2 -0
- package/dist/forms-export-FQQI7SV2.js.map +1 -0
- package/dist/forms-info-QXGLAQBN.js +2 -0
- package/dist/forms-info-QXGLAQBN.js.map +1 -0
- package/dist/forms-list-2CNVSPKA.js +2 -0
- package/dist/forms-list-2CNVSPKA.js.map +1 -0
- package/dist/forms-submissions-Q3FV3AC3.js +2 -0
- package/dist/forms-submissions-Q3FV3AC3.js.map +1 -0
- package/dist/health-Q5OYY2QY.js +2 -0
- package/dist/health-Q5OYY2QY.js.map +1 -0
- package/dist/lib/api/cert-pin.js +28 -0
- package/dist/lib/api/client.js +132 -0
- package/dist/lib/api/index.js +1 -0
- package/dist/lib/api/index.js.map +1 -0
- package/dist/lib/api/upload-res54.js +104 -0
- package/dist/lib/auth/constants.js +6 -0
- package/dist/lib/auth/fingerprint.js +39 -0
- package/dist/lib/auth/index.js +5 -0
- package/dist/lib/auth/index.js.map +1 -0
- package/dist/lib/auth/keychain.js +56 -0
- package/dist/lib/auth/oauth-session.js +89 -0
- package/dist/lib/auth/refresh.js +93 -0
- package/dist/lib/auth/session.js +34 -0
- package/dist/lib/auth/ssp-handshake.js +72 -0
- package/dist/lib/crypto/encrypt-file.js +64 -0
- package/dist/lib/crypto/index.js +2 -0
- package/dist/lib/crypto/index.js.map +1 -0
- package/dist/lib/crypto/sanitize.js +19 -0
- package/dist/lib/crypto/ssp.js +80 -0
- package/dist/lib/deploy/allowlist.js +16 -0
- package/dist/lib/deploy/detector.js +53 -0
- package/dist/lib/deploy/index.js +2 -0
- package/dist/lib/deploy/index.js.map +1 -0
- package/dist/lib/forms/index.js +1 -0
- package/dist/lib/host/microredis.js +191 -0
- package/dist/lib/host/security.js +142 -0
- package/dist/lib/host/server.js +240 -0
- package/dist/lib/output/banner.js +36 -0
- package/dist/lib/output/brand.js +37 -0
- package/dist/lib/output/index.js +11 -0
- package/dist/lib/output/index.js.map +1 -0
- package/dist/lib/output/logger.js +114 -0
- package/dist/lib/output/mascot.js +31 -0
- package/dist/lib/output/spinner.js +44 -0
- package/dist/lib/output/table.js +81 -0
- package/dist/lib/picker.js +71 -0
- package/dist/lib/refs-types.js +1 -0
- package/dist/lib/refs.js +81 -0
- package/dist/lib/transfer.js +168 -0
- package/dist/lib/upload/index.js +1 -0
- package/dist/lib/upload/index.js.map +1 -0
- package/dist/lib/utils/ci-detect.js +28 -0
- package/dist/lib/utils/format.js +70 -0
- package/dist/lib/utils/index.js +2 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/utils/open.js +16 -0
- package/dist/list-3P3SIMDW.js +2 -0
- package/dist/list-3P3SIMDW.js.map +1 -0
- package/dist/list-BK2B4CQI.js +4 -0
- package/dist/list-BK2B4CQI.js.map +1 -0
- package/dist/list-PVSQ7A54.js +4 -0
- package/dist/list-PVSQ7A54.js.map +1 -0
- package/dist/login-device-ATMWTABG.js +2 -0
- package/dist/login-device-ATMWTABG.js.map +1 -0
- package/dist/login-oauth-CDU3A5QB.js +2 -0
- package/dist/login-oauth-CDU3A5QB.js.map +1 -0
- package/dist/logout-AV7RCXWJ.js +2 -0
- package/dist/logout-AV7RCXWJ.js.map +1 -0
- package/dist/logs-export-M2FQFCNI.js +2 -0
- package/dist/logs-export-M2FQFCNI.js.map +1 -0
- package/dist/logs-search-JSCT3K5O.js +2 -0
- package/dist/logs-search-JSCT3K5O.js.map +1 -0
- package/dist/logs-tail-W5YO2QRG.js +2 -0
- package/dist/logs-tail-W5YO2QRG.js.map +1 -0
- package/dist/monitor-5AKUYIKP.js +2 -0
- package/dist/monitor-5AKUYIKP.js.map +1 -0
- package/dist/monitor-automations-YAAS7N6L.js +2 -0
- package/dist/monitor-automations-YAAS7N6L.js.map +1 -0
- package/dist/monitor-pipelines-JO4DQ6T4.js +2 -0
- package/dist/monitor-pipelines-JO4DQ6T4.js.map +1 -0
- package/dist/monitor-sites-5IEY3Y2F.js +2 -0
- package/dist/monitor-sites-5IEY3Y2F.js.map +1 -0
- package/dist/monitor-storage-6HG6URCV.js +2 -0
- package/dist/monitor-storage-6HG6URCV.js.map +1 -0
- package/dist/oauth-session-KBMWAOVL.js +2 -0
- package/dist/oauth-session-KBMWAOVL.js.map +1 -0
- package/dist/registry/index.js +61 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/scripts-cancel-2XO47DN7.js +2 -0
- package/dist/scripts-cancel-2XO47DN7.js.map +1 -0
- package/dist/scripts-delete-A6TXCHNO.js +2 -0
- package/dist/scripts-delete-A6TXCHNO.js.map +1 -0
- package/dist/scripts-disable-7GIY3YOK.js +2 -0
- package/dist/scripts-disable-7GIY3YOK.js.map +1 -0
- package/dist/scripts-enable-NGIS5VDP.js +2 -0
- package/dist/scripts-enable-NGIS5VDP.js.map +1 -0
- package/dist/scripts-init-J37ZGUDW.js +2 -0
- package/dist/scripts-init-J37ZGUDW.js.map +1 -0
- package/dist/scripts-list-ECFFKNOI.js +2 -0
- package/dist/scripts-list-ECFFKNOI.js.map +1 -0
- package/dist/scripts-logs-4DMITGNX.js +2 -0
- package/dist/scripts-logs-4DMITGNX.js.map +1 -0
- package/dist/scripts-run-CHHP53KW.js +2 -0
- package/dist/scripts-run-CHHP53KW.js.map +1 -0
- package/dist/scripts-status-YZTKCLMU.js +2 -0
- package/dist/scripts-status-YZTKCLMU.js.map +1 -0
- package/dist/scripts-validate-LGMQVRTC.js +2 -0
- package/dist/scripts-validate-LGMQVRTC.js.map +1 -0
- package/dist/scripts-watch-W2C4CBZZ.js +2 -0
- package/dist/scripts-watch-W2C4CBZZ.js.map +1 -0
- package/dist/secrets-audit-SZZ2RG77.js +2 -0
- package/dist/secrets-audit-SZZ2RG77.js.map +1 -0
- package/dist/secrets-create-QLUNM3JL.js +3 -0
- package/dist/secrets-create-QLUNM3JL.js.map +1 -0
- package/dist/secrets-delete-ISNVSZVL.js +2 -0
- package/dist/secrets-delete-ISNVSZVL.js.map +1 -0
- package/dist/secrets-export-R7VPKQCW.js +3 -0
- package/dist/secrets-export-R7VPKQCW.js.map +1 -0
- package/dist/secrets-init-TKIIJKCB.js +13 -0
- package/dist/secrets-init-TKIIJKCB.js.map +1 -0
- package/dist/secrets-list-YPMO7PWR.js +2 -0
- package/dist/secrets-list-YPMO7PWR.js.map +1 -0
- package/dist/secrets-rename-X7Q6PLPI.js +2 -0
- package/dist/secrets-rename-X7Q6PLPI.js.map +1 -0
- package/dist/secrets-verify-GZCFB6RI.js +2 -0
- package/dist/secrets-verify-GZCFB6RI.js.map +1 -0
- package/dist/sign-cancel-H34SAG56.js +2 -0
- package/dist/sign-cancel-H34SAG56.js.map +1 -0
- package/dist/sign-download-3MAWJ2XB.js +2 -0
- package/dist/sign-download-3MAWJ2XB.js.map +1 -0
- package/dist/sign-list-NW5WYD4V.js +2 -0
- package/dist/sign-list-NW5WYD4V.js.map +1 -0
- package/dist/sign-request-HFI3KJ2L.js +2 -0
- package/dist/sign-request-HFI3KJ2L.js.map +1 -0
- package/dist/sign-status-BD7S2FEA.js +2 -0
- package/dist/sign-status-BD7S2FEA.js.map +1 -0
- package/dist/sign-verify-OCYA4RI3.js +2 -0
- package/dist/sign-verify-OCYA4RI3.js.map +1 -0
- package/dist/sites-analytics-AJIFXZEM.js +2 -0
- package/dist/sites-analytics-AJIFXZEM.js.map +1 -0
- package/dist/sites-delete-SDBENOY6.js +2 -0
- package/dist/sites-delete-SDBENOY6.js.map +1 -0
- package/dist/sites-deploys-WHLZTAYW.js +2 -0
- package/dist/sites-deploys-WHLZTAYW.js.map +1 -0
- package/dist/sites-info-RZJNVFFP.js +2 -0
- package/dist/sites-info-RZJNVFFP.js.map +1 -0
- package/dist/sites-list-DKZWNHLM.js +2 -0
- package/dist/sites-list-DKZWNHLM.js.map +1 -0
- package/dist/sites-logs-O35RH2CT.js +2 -0
- package/dist/sites-logs-O35RH2CT.js.map +1 -0
- package/dist/sites-open-QE6RD5JB.js +2 -0
- package/dist/sites-open-QE6RD5JB.js.map +1 -0
- package/dist/sites-purge-KROBLAUK.js +2 -0
- package/dist/sites-purge-KROBLAUK.js.map +1 -0
- package/dist/sites-rename-YMZQ5C37.js +2 -0
- package/dist/sites-rename-YMZQ5C37.js.map +1 -0
- package/dist/sites-rollback-OQXR2V5A.js +2 -0
- package/dist/sites-rollback-OQXR2V5A.js.map +1 -0
- package/dist/sites-unpublish-VKEPVVOB.js +2 -0
- package/dist/sites-unpublish-VKEPVVOB.js.map +1 -0
- package/dist/sites-visibility-Q2WXPRFB.js +2 -0
- package/dist/sites-visibility-Q2WXPRFB.js.map +1 -0
- package/dist/storage-cat-Z42FIYKB.js +2 -0
- package/dist/storage-cat-Z42FIYKB.js.map +1 -0
- package/dist/storage-clean-E3ZU5JVL.js +2 -0
- package/dist/storage-clean-E3ZU5JVL.js.map +1 -0
- package/dist/storage-cp-IBCATT2F.js +2 -0
- package/dist/storage-cp-IBCATT2F.js.map +1 -0
- package/dist/storage-diff-FX4QVDH7.js +2 -0
- package/dist/storage-diff-FX4QVDH7.js.map +1 -0
- package/dist/storage-download-ULJS52LJ.js +2 -0
- package/dist/storage-download-ULJS52LJ.js.map +1 -0
- package/dist/storage-info-HRE7ORAJ.js +2 -0
- package/dist/storage-info-HRE7ORAJ.js.map +1 -0
- package/dist/storage-ls-Z555BXZI.js +2 -0
- package/dist/storage-ls-Z555BXZI.js.map +1 -0
- package/dist/storage-mkdir-PODYCT7K.js +2 -0
- package/dist/storage-mkdir-PODYCT7K.js.map +1 -0
- package/dist/storage-mv-KHOZW76V.js +2 -0
- package/dist/storage-mv-KHOZW76V.js.map +1 -0
- package/dist/storage-rm-XJME2PBW.js +2 -0
- package/dist/storage-rm-XJME2PBW.js.map +1 -0
- package/dist/storage-search-2M3QMF4E.js +2 -0
- package/dist/storage-search-2M3QMF4E.js.map +1 -0
- package/dist/storage-share-6DANEN4S.js +2 -0
- package/dist/storage-share-6DANEN4S.js.map +1 -0
- package/dist/storage-tag-QGPV7RX3.js +2 -0
- package/dist/storage-tag-QGPV7RX3.js.map +1 -0
- package/dist/storage-unshare-DJCEMHE3.js +2 -0
- package/dist/storage-unshare-DJCEMHE3.js.map +1 -0
- package/dist/storage-upload-UKQYASCU.js +2 -0
- package/dist/storage-upload-UKQYASCU.js.map +1 -0
- package/dist/time-list-32LQSLS3.js +2 -0
- package/dist/time-list-32LQSLS3.js.map +1 -0
- package/dist/time-lock-5RHHTCYW.js +2 -0
- package/dist/time-lock-5RHHTCYW.js.map +1 -0
- package/dist/time-proof-7F7MGTC7.js +2 -0
- package/dist/time-proof-7F7MGTC7.js.map +1 -0
- package/dist/time-status-OC5Y5DI5.js +2 -0
- package/dist/time-status-OC5Y5DI5.js.map +1 -0
- package/dist/time-unlock-23PW3U3H.js +2 -0
- package/dist/time-unlock-23PW3U3H.js.map +1 -0
- package/dist/update-VAIGKTAJ.js +2 -0
- package/dist/update-VAIGKTAJ.js.map +1 -0
- package/dist/upload-ME5JGLCS.js +2 -0
- package/dist/upload-ME5JGLCS.js.map +1 -0
- package/dist/usage-HWFCDFQQ.js +2 -0
- package/dist/usage-HWFCDFQQ.js.map +1 -0
- package/dist/version-TFYCABEC.js +2 -0
- package/dist/version-TFYCABEC.js.map +1 -0
- package/dist/whoami-A65QZCK3.js +2 -0
- package/dist/whoami-A65QZCK3.js.map +1 -0
- package/package.json +30 -43
- package/dist/auth-revoke-DWV3OFW6.js +0 -2
- package/dist/auth-revoke-DWV3OFW6.js.map +0 -1
- package/dist/auth-sessions-D4RWXFPE.js +0 -2
- package/dist/auth-sessions-D4RWXFPE.js.map +0 -1
- package/dist/auth-status-EPQU6F63.js +0 -2
- package/dist/auth-status-EPQU6F63.js.map +0 -1
- package/dist/chunk-CHBVIZF5.js +0 -2
- package/dist/chunk-CHBVIZF5.js.map +0 -1
- package/dist/chunk-EMRHLWPD.js +0 -3
- package/dist/chunk-EMRHLWPD.js.map +0 -1
- package/dist/chunk-EPDVSZII.js +0 -2
- package/dist/chunk-EPDVSZII.js.map +0 -1
- package/dist/chunk-FNCZD2QB.js +0 -2
- package/dist/chunk-FNCZD2QB.js.map +0 -1
- package/dist/chunk-MKRWNV2T.js +0 -2
- package/dist/chunk-MKRWNV2T.js.map +0 -1
- package/dist/chunk-N3AD2QRA.js.map +0 -1
- package/dist/chunk-NDB6KXYI.js +0 -3
- package/dist/chunk-NDB6KXYI.js.map +0 -1
- package/dist/chunk-Q3A4IBGC.js +0 -2
- package/dist/chunk-Q3A4IBGC.js.map +0 -1
- package/dist/chunk-SCKQAF44.js +0 -2
- package/dist/chunk-SCKQAF44.js.map +0 -1
- package/dist/chunk-ULVQ53OO.js +0 -3
- package/dist/chunk-ULVQ53OO.js.map +0 -1
- package/dist/chunk-UNA5CAPX.js +0 -2
- package/dist/chunk-UNA5CAPX.js.map +0 -1
- package/dist/client-IR7OHGEQ.js +0 -2
- package/dist/client-IR7OHGEQ.js.map +0 -1
- package/dist/collab-activity-YOEJEJTQ.js +0 -2
- package/dist/collab-activity-YOEJEJTQ.js.map +0 -1
- package/dist/collab-invite-VDDBCLSH.js +0 -2
- package/dist/collab-invite-VDDBCLSH.js.map +0 -1
- package/dist/collab-leave-2AEIFR47.js +0 -2
- package/dist/collab-leave-2AEIFR47.js.map +0 -1
- package/dist/collab-list-MTJYXE53.js +0 -2
- package/dist/collab-list-MTJYXE53.js.map +0 -1
- package/dist/collab-remove-I3FKGFOF.js +0 -2
- package/dist/collab-remove-I3FKGFOF.js.map +0 -1
- package/dist/collab-transfer-VVHH6B2J.js +0 -2
- package/dist/collab-transfer-VVHH6B2J.js.map +0 -1
- package/dist/completion-IF3NB7PB.js +0 -44
- package/dist/completion-IF3NB7PB.js.map +0 -1
- package/dist/config-PL34OPDL.js +0 -2
- package/dist/config-delete-4UN7BFBI.js +0 -2
- package/dist/config-delete-4UN7BFBI.js.map +0 -1
- package/dist/config-get-XOS7EWEQ.js +0 -2
- package/dist/config-get-XOS7EWEQ.js.map +0 -1
- package/dist/config-reset-NIOGYFA5.js +0 -2
- package/dist/config-reset-NIOGYFA5.js.map +0 -1
- package/dist/config-set-DRTRWWAA.js +0 -2
- package/dist/config-set-DRTRWWAA.js.map +0 -1
- package/dist/deploy-UOPO2HHL.js +0 -3
- package/dist/deploy-UOPO2HHL.js.map +0 -1
- package/dist/doctor-B7RAWBD5.js +0 -2
- package/dist/doctor-B7RAWBD5.js.map +0 -1
- package/dist/feedback-BEX6DRXB.js +0 -3
- package/dist/feedback-BEX6DRXB.js.map +0 -1
- package/dist/forms-clear-VPH7SHJZ.js +0 -2
- package/dist/forms-clear-VPH7SHJZ.js.map +0 -1
- package/dist/forms-create-O5W7O2BI.js +0 -2
- package/dist/forms-create-O5W7O2BI.js.map +0 -1
- package/dist/forms-delete-H4RY6C64.js +0 -2
- package/dist/forms-delete-H4RY6C64.js.map +0 -1
- package/dist/forms-embed-2WBFYFUO.js +0 -3
- package/dist/forms-embed-2WBFYFUO.js.map +0 -1
- package/dist/forms-export-MDWMZ7I7.js +0 -2
- package/dist/forms-export-MDWMZ7I7.js.map +0 -1
- package/dist/forms-info-VO4FK3CS.js +0 -2
- package/dist/forms-info-VO4FK3CS.js.map +0 -1
- package/dist/forms-list-PDSDIJI7.js +0 -2
- package/dist/forms-list-PDSDIJI7.js.map +0 -1
- package/dist/forms-submissions-VJQWV7SI.js +0 -2
- package/dist/forms-submissions-VJQWV7SI.js.map +0 -1
- package/dist/login-PMDO43CL.js +0 -3
- package/dist/login-PMDO43CL.js.map +0 -1
- package/dist/logout-XIUWCA75.js +0 -2
- package/dist/logout-XIUWCA75.js.map +0 -1
- package/dist/logs-export-AU4WZDLW.js +0 -2
- package/dist/logs-export-AU4WZDLW.js.map +0 -1
- package/dist/logs-search-BHVB3BIH.js +0 -2
- package/dist/logs-search-BHVB3BIH.js.map +0 -1
- package/dist/logs-tail-YVFZLSC2.js +0 -3
- package/dist/logs-tail-YVFZLSC2.js.map +0 -1
- package/dist/monitor-KLJ762WM.js +0 -2
- package/dist/monitor-KLJ762WM.js.map +0 -1
- package/dist/monitor-automations-B2NRWSFH.js +0 -2
- package/dist/monitor-automations-B2NRWSFH.js.map +0 -1
- package/dist/monitor-pipelines-2PNBET3B.js +0 -2
- package/dist/monitor-pipelines-2PNBET3B.js.map +0 -1
- package/dist/monitor-sites-QNMTCOSH.js +0 -2
- package/dist/monitor-sites-QNMTCOSH.js.map +0 -1
- package/dist/monitor-storage-Z53C4CI2.js +0 -2
- package/dist/monitor-storage-Z53C4CI2.js.map +0 -1
- package/dist/scripts-cancel-2HWDUPFM.js +0 -2
- package/dist/scripts-cancel-2HWDUPFM.js.map +0 -1
- package/dist/scripts-delete-UI6YRWEN.js +0 -2
- package/dist/scripts-delete-UI6YRWEN.js.map +0 -1
- package/dist/scripts-disable-7IXFGWWG.js +0 -2
- package/dist/scripts-disable-7IXFGWWG.js.map +0 -1
- package/dist/scripts-enable-DNEVMHLS.js +0 -2
- package/dist/scripts-enable-DNEVMHLS.js.map +0 -1
- package/dist/scripts-init-BIIEMUXV.js +0 -14
- package/dist/scripts-init-BIIEMUXV.js.map +0 -1
- package/dist/scripts-list-LYDOWRTU.js +0 -2
- package/dist/scripts-list-LYDOWRTU.js.map +0 -1
- package/dist/scripts-logs-32CWQEBA.js +0 -2
- package/dist/scripts-logs-32CWQEBA.js.map +0 -1
- package/dist/scripts-run-6AJVHB4U.js +0 -2
- package/dist/scripts-run-6AJVHB4U.js.map +0 -1
- package/dist/scripts-status-KCILW363.js +0 -2
- package/dist/scripts-status-KCILW363.js.map +0 -1
- package/dist/scripts-validate-MZP4MJZZ.js +0 -2
- package/dist/scripts-validate-MZP4MJZZ.js.map +0 -1
- package/dist/scripts-watch-3SFVPUAA.js +0 -2
- package/dist/scripts-watch-3SFVPUAA.js.map +0 -1
- package/dist/sign-cancel-KK745O7W.js +0 -2
- package/dist/sign-cancel-KK745O7W.js.map +0 -1
- package/dist/sign-download-6V3ABZG2.js +0 -2
- package/dist/sign-download-6V3ABZG2.js.map +0 -1
- package/dist/sign-list-VCNJSS6F.js +0 -2
- package/dist/sign-list-VCNJSS6F.js.map +0 -1
- package/dist/sign-request-LNRMPU2F.js +0 -2
- package/dist/sign-request-LNRMPU2F.js.map +0 -1
- package/dist/sign-status-PNAGMC7S.js +0 -2
- package/dist/sign-status-PNAGMC7S.js.map +0 -1
- package/dist/sign-verify-ZROVA7LH.js +0 -2
- package/dist/sign-verify-ZROVA7LH.js.map +0 -1
- package/dist/sites-analytics-L6KVTZNH.js +0 -2
- package/dist/sites-analytics-L6KVTZNH.js.map +0 -1
- package/dist/sites-delete-JCBOLOA7.js +0 -2
- package/dist/sites-delete-JCBOLOA7.js.map +0 -1
- package/dist/sites-deploys-XJ3NY4RQ.js +0 -2
- package/dist/sites-deploys-XJ3NY4RQ.js.map +0 -1
- package/dist/sites-info-V3R7YNPU.js +0 -2
- package/dist/sites-info-V3R7YNPU.js.map +0 -1
- package/dist/sites-list-ZQTXLHJ3.js +0 -2
- package/dist/sites-list-ZQTXLHJ3.js.map +0 -1
- package/dist/sites-logs-AYG43HQV.js +0 -3
- package/dist/sites-logs-AYG43HQV.js.map +0 -1
- package/dist/sites-open-K2JWMIWD.js +0 -3
- package/dist/sites-open-K2JWMIWD.js.map +0 -1
- package/dist/sites-purge-5Y5AQWBY.js +0 -2
- package/dist/sites-purge-5Y5AQWBY.js.map +0 -1
- package/dist/sites-rename-QH6YYXUE.js +0 -2
- package/dist/sites-rename-QH6YYXUE.js.map +0 -1
- package/dist/sites-rollback-ZQ2IHERR.js +0 -2
- package/dist/sites-rollback-ZQ2IHERR.js.map +0 -1
- package/dist/sites-unpublish-MDK4GP2C.js +0 -2
- package/dist/sites-unpublish-MDK4GP2C.js.map +0 -1
- package/dist/sites-visibility-WKPIU5OK.js +0 -2
- package/dist/sites-visibility-WKPIU5OK.js.map +0 -1
- package/dist/storage-cat-OAUEF3EE.js +0 -2
- package/dist/storage-cat-OAUEF3EE.js.map +0 -1
- package/dist/storage-clean-I7QZ5FR6.js +0 -2
- package/dist/storage-clean-I7QZ5FR6.js.map +0 -1
- package/dist/storage-cp-H36Q2ER4.js +0 -2
- package/dist/storage-cp-H36Q2ER4.js.map +0 -1
- package/dist/storage-diff-6KUEJ4DB.js +0 -2
- package/dist/storage-diff-6KUEJ4DB.js.map +0 -1
- package/dist/storage-download-32EYGI47.js +0 -3
- package/dist/storage-download-32EYGI47.js.map +0 -1
- package/dist/storage-info-2JSV56KE.js +0 -2
- package/dist/storage-info-2JSV56KE.js.map +0 -1
- package/dist/storage-ls-G33T3LMU.js +0 -3
- package/dist/storage-ls-G33T3LMU.js.map +0 -1
- package/dist/storage-mkdir-BDT3GX7A.js +0 -2
- package/dist/storage-mkdir-BDT3GX7A.js.map +0 -1
- package/dist/storage-mv-2QJZR2FL.js +0 -2
- package/dist/storage-mv-2QJZR2FL.js.map +0 -1
- package/dist/storage-rm-NRRRFG36.js +0 -2
- package/dist/storage-rm-NRRRFG36.js.map +0 -1
- package/dist/storage-search-E5BIXLSU.js +0 -2
- package/dist/storage-search-E5BIXLSU.js.map +0 -1
- package/dist/storage-share-EXSSZ6XL.js +0 -2
- package/dist/storage-share-EXSSZ6XL.js.map +0 -1
- package/dist/storage-tag-YV5GUZDV.js +0 -2
- package/dist/storage-tag-YV5GUZDV.js.map +0 -1
- package/dist/storage-unshare-MF4V2NGC.js +0 -2
- package/dist/storage-unshare-MF4V2NGC.js.map +0 -1
- package/dist/storage-upload-DYWSZ6RO.js +0 -9
- package/dist/storage-upload-DYWSZ6RO.js.map +0 -1
- package/dist/time-list-4T3FJE2I.js +0 -2
- package/dist/time-list-4T3FJE2I.js.map +0 -1
- package/dist/time-lock-O55XMYPX.js +0 -2
- package/dist/time-lock-O55XMYPX.js.map +0 -1
- package/dist/time-proof-SDANSS3D.js +0 -2
- package/dist/time-proof-SDANSS3D.js.map +0 -1
- package/dist/time-status-JFJA3MYK.js +0 -2
- package/dist/time-status-JFJA3MYK.js.map +0 -1
- package/dist/time-unlock-F7NGQ2IE.js +0 -2
- package/dist/time-unlock-F7NGQ2IE.js.map +0 -1
- package/dist/update-5PTOF5ZA.js +0 -2
- package/dist/update-5PTOF5ZA.js.map +0 -1
- package/dist/version-Y2LWIEFC.js +0 -2
- package/dist/version-Y2LWIEFC.js.map +0 -1
- package/dist/whoami-BGMVNESX.js +0 -2
- package/dist/whoami-BGMVNESX.js.map +0 -1
package/dist/lib/refs.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { apiGet } from './api/client.js';
|
|
5
|
+
import { pickInteractive } from './picker.js';
|
|
6
|
+
/* Numbered file registry — every listing caches entries locally so any file
|
|
7
|
+
can be referenced by its number (#3), a UUID, a unique id prefix, or an
|
|
8
|
+
exact name. No more pasting 36-character ids. */
|
|
9
|
+
const CACHE_DIR = path.join(os.homedir(), '.squidcloud', 'cache');
|
|
10
|
+
const CACHE_FILE = path.join(CACHE_DIR, 'files.json');
|
|
11
|
+
const CACHE_TTL_MS = 10 * 60 * 1000;
|
|
12
|
+
function readCache() {
|
|
13
|
+
try {
|
|
14
|
+
const raw = JSON.parse(fs.readFileSync(CACHE_FILE, 'utf-8'));
|
|
15
|
+
if (Array.isArray(raw.entries))
|
|
16
|
+
return raw;
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function writeCache(entries) {
|
|
24
|
+
try {
|
|
25
|
+
fs.mkdirSync(CACHE_DIR, { recursive: true, mode: 0o700 });
|
|
26
|
+
const payload = { cached_at: Date.now(), entries };
|
|
27
|
+
fs.writeFileSync(CACHE_FILE, JSON.stringify(payload), { mode: 0o600 });
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
/* cache is best-effort */
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export async function listFiles(opts = {}) {
|
|
34
|
+
const cache = readCache();
|
|
35
|
+
if (!opts.refresh && !opts.search && cache && Date.now() - cache.cached_at < CACHE_TTL_MS) {
|
|
36
|
+
return cache.entries;
|
|
37
|
+
}
|
|
38
|
+
const qs = new URLSearchParams({ per_page: '100' });
|
|
39
|
+
if (opts.search)
|
|
40
|
+
qs.set('search', opts.search);
|
|
41
|
+
const res = await apiGet(`/files?${qs.toString()}`);
|
|
42
|
+
const entries = res.files || res.data || [];
|
|
43
|
+
if (!opts.search && entries.length > 0)
|
|
44
|
+
writeCache(entries);
|
|
45
|
+
return entries;
|
|
46
|
+
}
|
|
47
|
+
const isUuid = (s) => /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s);
|
|
48
|
+
export async function resolveFileRef(ref, opts = {}) {
|
|
49
|
+
const trimmed = ref.trim().replace(/^#/, '');
|
|
50
|
+
if (/^\d+$/.test(trimmed)) {
|
|
51
|
+
const entries = await listFiles({ refresh: opts.refresh });
|
|
52
|
+
const idx = Number(trimmed) - 1;
|
|
53
|
+
if (idx < 0 || idx >= entries.length) {
|
|
54
|
+
throw new Error(`#${trimmed} is out of range — the current listing has ${entries.length} files. Run \`squidcloudctl files ls\`.`);
|
|
55
|
+
}
|
|
56
|
+
return { entry: entries[idx], how: 'number' };
|
|
57
|
+
}
|
|
58
|
+
if (isUuid(trimmed)) {
|
|
59
|
+
return { entry: { id: trimmed, name: trimmed }, how: 'uuid' };
|
|
60
|
+
}
|
|
61
|
+
const entries = await listFiles({ refresh: opts.refresh });
|
|
62
|
+
const prefixMatches = entries.filter((e) => e.id.toLowerCase().startsWith(trimmed.toLowerCase()));
|
|
63
|
+
if (prefixMatches.length === 1)
|
|
64
|
+
return { entry: prefixMatches[0], how: 'prefix' };
|
|
65
|
+
const nameMatches = entries.filter((e) => e.name === ref.trim());
|
|
66
|
+
if (nameMatches.length === 1)
|
|
67
|
+
return { entry: nameMatches[0], how: 'name' };
|
|
68
|
+
const partial = entries.filter((e) => e.name.toLowerCase().includes(trimmed.toLowerCase()));
|
|
69
|
+
if (partial.length > 1) {
|
|
70
|
+
const picked = await pickInteractive(partial, ref);
|
|
71
|
+
if (picked)
|
|
72
|
+
return { entry: picked, how: 'picked' };
|
|
73
|
+
throw new Error(`"${ref}" matched ${partial.length} files. Be more specific or use a #number from \`files ls\`.`);
|
|
74
|
+
}
|
|
75
|
+
if (partial.length === 1)
|
|
76
|
+
return { entry: partial[0], how: 'name' };
|
|
77
|
+
const searched = await listFiles({ search: ref, refresh: true });
|
|
78
|
+
if (searched.length === 1)
|
|
79
|
+
return { entry: searched[0], how: 'name' };
|
|
80
|
+
throw new Error(`No file matches "${ref}". Run \`squidcloudctl files ls\` and use a #number, an id prefix, or an exact name.`);
|
|
81
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { Readable } from 'node:stream';
|
|
4
|
+
import { pipeline } from 'node:stream/promises';
|
|
5
|
+
import { apiRaw, apiPost } from './api/client.js';
|
|
6
|
+
const CONCURRENCY = 4;
|
|
7
|
+
const CHUNK_RETRIES = 3;
|
|
8
|
+
function humanBytes(n) {
|
|
9
|
+
if (!Number.isFinite(n))
|
|
10
|
+
return '—';
|
|
11
|
+
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
12
|
+
let v = n;
|
|
13
|
+
let u = 0;
|
|
14
|
+
while (v >= 1024 && u < units.length - 1) {
|
|
15
|
+
v /= 1024;
|
|
16
|
+
u++;
|
|
17
|
+
}
|
|
18
|
+
return `${v.toFixed(v >= 100 || u === 0 ? 0 : 1)}${units[u]}`;
|
|
19
|
+
}
|
|
20
|
+
export function renderProgressBar(current, total, width = 26) {
|
|
21
|
+
if (total <= 0)
|
|
22
|
+
return '░'.repeat(width);
|
|
23
|
+
const filled = Math.round((current / total) * width);
|
|
24
|
+
return '█'.repeat(filled) + '░'.repeat(Math.max(0, width - filled));
|
|
25
|
+
}
|
|
26
|
+
/** Single-line live progress renderer for TTYs. */
|
|
27
|
+
export class TransferProgress {
|
|
28
|
+
label;
|
|
29
|
+
totalBytes;
|
|
30
|
+
enabled;
|
|
31
|
+
startedAt = Date.now();
|
|
32
|
+
lastLine = '';
|
|
33
|
+
constructor(label, totalBytes, enabled) {
|
|
34
|
+
this.label = label;
|
|
35
|
+
this.totalBytes = totalBytes;
|
|
36
|
+
this.enabled = enabled;
|
|
37
|
+
}
|
|
38
|
+
update(currentBytes, extra = '') {
|
|
39
|
+
if (!this.enabled)
|
|
40
|
+
return;
|
|
41
|
+
const pct = this.totalBytes > 0 ? Math.min(100, (currentBytes / this.totalBytes) * 100) : 0;
|
|
42
|
+
const elapsed = (Date.now() - this.startedAt) / 1000;
|
|
43
|
+
const bps = elapsed > 0 ? currentBytes / elapsed : 0;
|
|
44
|
+
const eta = bps > 0 && currentBytes > 0 ? (this.totalBytes - currentBytes) / bps : Infinity;
|
|
45
|
+
const etaText = Number.isFinite(eta)
|
|
46
|
+
? eta > 90 ? `${Math.round(eta / 60)}m` : `${Math.round(eta)}s`
|
|
47
|
+
: '—';
|
|
48
|
+
const line = `${this.label} ${renderProgressBar(currentBytes, this.totalBytes)} ${pct.toFixed(0)}% ${humanBytes(currentBytes)}/${humanBytes(this.totalBytes)} ${humanBytes(bps)}/s eta ${etaText}${extra ? ` ${extra}` : ''}`;
|
|
49
|
+
if (line !== this.lastLine) {
|
|
50
|
+
process.stdout.write(`\r\x1b[2K${line}`);
|
|
51
|
+
this.lastLine = line;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
finish(ok) {
|
|
55
|
+
if (this.enabled)
|
|
56
|
+
process.stdout.write('\r\x1b[2K');
|
|
57
|
+
if (!ok && !this.enabled)
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export async function uploadFile(filePath, opts = {}) {
|
|
62
|
+
const stat = fs.statSync(filePath);
|
|
63
|
+
if (!stat.isFile())
|
|
64
|
+
throw new Error(`Not a file: ${filePath}`);
|
|
65
|
+
if (stat.size === 0)
|
|
66
|
+
throw new Error(`File is empty: ${filePath}`);
|
|
67
|
+
const name = path.basename(filePath);
|
|
68
|
+
const type = guessMime(name);
|
|
69
|
+
const progress = new TransferProgress('upload', stat.size, process.stdout.isTTY && !opts.quiet);
|
|
70
|
+
const init = await apiPost('/upload', {
|
|
71
|
+
name,
|
|
72
|
+
type,
|
|
73
|
+
size: stat.size,
|
|
74
|
+
...(opts.folderId ? { folder_id: opts.folderId } : {}),
|
|
75
|
+
});
|
|
76
|
+
if (!init?.success || !Array.isArray(init.urls))
|
|
77
|
+
throw new Error('Server refused the upload session');
|
|
78
|
+
const data = await fs.promises.readFile(filePath);
|
|
79
|
+
const chunkSize = init.chunk_size || 512 * 1024;
|
|
80
|
+
const totalChunks = Math.max(1, Math.ceil(data.length / chunkSize));
|
|
81
|
+
let completedBytes = 0;
|
|
82
|
+
// Parallel chunk PUTs against signed cluster URLs — same dispatch shape as the web app.
|
|
83
|
+
const urlByIndex = new Map(init.urls.map((u) => [u.index, u]));
|
|
84
|
+
const queue = Array.from({ length: totalChunks }, (_, i) => i);
|
|
85
|
+
let done = 0;
|
|
86
|
+
const worker = async () => {
|
|
87
|
+
while (queue.length > 0) {
|
|
88
|
+
const idx = queue.shift();
|
|
89
|
+
if (idx === undefined)
|
|
90
|
+
break;
|
|
91
|
+
const target = urlByIndex.get(idx);
|
|
92
|
+
if (!target?.upload_url)
|
|
93
|
+
throw new Error(`Missing upload URL for chunk ${idx}`);
|
|
94
|
+
const start = idx * chunkSize;
|
|
95
|
+
const end = Math.min(start + chunkSize, data.length);
|
|
96
|
+
const slice = data.subarray(start, end);
|
|
97
|
+
let attempt = 0;
|
|
98
|
+
for (;;) {
|
|
99
|
+
try {
|
|
100
|
+
const res = await fetch(target.upload_url, {
|
|
101
|
+
method: 'PUT',
|
|
102
|
+
headers: { 'Content-Type': 'application/octet-stream' },
|
|
103
|
+
body: new Uint8Array(slice),
|
|
104
|
+
});
|
|
105
|
+
if (!res.ok)
|
|
106
|
+
throw new Error(`Chunk ${idx} rejected (HTTP ${res.status})`);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
attempt++;
|
|
111
|
+
if (attempt >= CHUNK_RETRIES)
|
|
112
|
+
throw err;
|
|
113
|
+
await new Promise((r) => setTimeout(r, 500 * Math.pow(2, attempt)));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
done++;
|
|
117
|
+
completedBytes += slice.length;
|
|
118
|
+
opts.onProgress?.({ current: completedBytes, total: stat.size, stage: 'uploading' });
|
|
119
|
+
progress.update(completedBytes, `chunk ${done}/${totalChunks}`);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
await Promise.all(Array.from({ length: Math.min(CONCURRENCY, totalChunks) }, worker));
|
|
123
|
+
progress.finish(true);
|
|
124
|
+
const complete = await apiPost('/upload/complete', {
|
|
125
|
+
upload_id: init.upload_id,
|
|
126
|
+
chunk_size: chunkSize,
|
|
127
|
+
});
|
|
128
|
+
return {
|
|
129
|
+
id: complete?.id || complete?.file_id || init.file_id,
|
|
130
|
+
name,
|
|
131
|
+
size: stat.size,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export async function downloadFile(fileRef, destPath, onProgress) {
|
|
135
|
+
const res = await apiRaw(`/download/${fileRef.id}`);
|
|
136
|
+
if (!res.ok) {
|
|
137
|
+
const text = await res.text().catch(() => '');
|
|
138
|
+
throw new Error(text.slice(0, 300) || `Download failed (HTTP ${res.status})`);
|
|
139
|
+
}
|
|
140
|
+
const total = Number(res.headers.get('content-length')) || 0;
|
|
141
|
+
const progress = new TransferProgress('download', total, process.stdout.isTTY);
|
|
142
|
+
const nodeStream = Readable.fromWeb(res.body);
|
|
143
|
+
const header = res.headers.get('content-disposition') || '';
|
|
144
|
+
const match = header.match(/filename="?([^";]+)"?/i);
|
|
145
|
+
const fileName = match?.[1] || fileRef.name;
|
|
146
|
+
const finalPath = destPath || fileName;
|
|
147
|
+
let received = 0;
|
|
148
|
+
nodeStream.on('data', (chunk) => {
|
|
149
|
+
received += chunk.length;
|
|
150
|
+
onProgress?.({ current: received, total: total || received, stage: 'downloading' });
|
|
151
|
+
progress.update(received);
|
|
152
|
+
});
|
|
153
|
+
await pipeline(nodeStream, fs.createWriteStream(finalPath));
|
|
154
|
+
progress.finish(true);
|
|
155
|
+
return finalPath;
|
|
156
|
+
}
|
|
157
|
+
function guessMime(name) {
|
|
158
|
+
const ext = path.extname(name).toLowerCase();
|
|
159
|
+
const table = {
|
|
160
|
+
'.txt': 'text/plain', '.md': 'text/markdown', '.html': 'text/html', '.css': 'text/css',
|
|
161
|
+
'.js': 'text/javascript', '.ts': 'text/typescript', '.json': 'application/json',
|
|
162
|
+
'.pdf': 'application/pdf', '.png': 'image/png', '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg',
|
|
163
|
+
'.gif': 'image/gif', '.svg': 'image/svg+xml', '.webp': 'image/webp', '.mp3': 'audio/mpeg',
|
|
164
|
+
'.wav': 'audio/wav', '.mp4': 'video/mp4', '.webm': 'video/webm', '.zip': 'application/zip',
|
|
165
|
+
'.gz': 'application/gzip', '.tar': 'application/x-tar', '.csv': 'text/csv',
|
|
166
|
+
};
|
|
167
|
+
return table[ext] || 'application/octet-stream';
|
|
168
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/upload/index.ts"],"names":["upload_default"],"mappings":"AAAA,IAAOA,EAAQ","file":"index.js","sourcesContent":["export default {}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function isCI() {
|
|
2
|
+
return !!(process.env.CI ||
|
|
3
|
+
process.env.GITHUB_ACTIONS ||
|
|
4
|
+
process.env.GITLAB_CI ||
|
|
5
|
+
process.env.CIRCLECI ||
|
|
6
|
+
process.env.TRAVIS ||
|
|
7
|
+
process.env.JENKINS_HOME);
|
|
8
|
+
}
|
|
9
|
+
export function isInteractive() {
|
|
10
|
+
if (isCI())
|
|
11
|
+
return false;
|
|
12
|
+
return process.stdout.isTTY && process.stdin.isTTY;
|
|
13
|
+
}
|
|
14
|
+
export function getCIProvider() {
|
|
15
|
+
if (process.env.GITHUB_ACTIONS)
|
|
16
|
+
return 'github-actions';
|
|
17
|
+
if (process.env.GITLAB_CI)
|
|
18
|
+
return 'gitlab-ci';
|
|
19
|
+
if (process.env.CIRCLECI)
|
|
20
|
+
return 'circleci';
|
|
21
|
+
if (process.env.TRAVIS)
|
|
22
|
+
return 'travis';
|
|
23
|
+
if (process.env.JENKINS_HOME)
|
|
24
|
+
return 'jenkins';
|
|
25
|
+
if (process.env.CI)
|
|
26
|
+
return 'unknown-ci';
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
3
|
+
function pad(n) {
|
|
4
|
+
return n < 10 ? '0' + n : String(n);
|
|
5
|
+
}
|
|
6
|
+
export function formatBytes(bytes) {
|
|
7
|
+
if (bytes === 0)
|
|
8
|
+
return '0 B';
|
|
9
|
+
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
10
|
+
const k = 1024;
|
|
11
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
12
|
+
const value = bytes / Math.pow(k, i);
|
|
13
|
+
return `${value.toFixed(i > 0 ? 1 : 0)} ${units[i]}`;
|
|
14
|
+
}
|
|
15
|
+
export function formatDuration(ms) {
|
|
16
|
+
if (ms < 1000)
|
|
17
|
+
return `${ms}ms`;
|
|
18
|
+
if (ms < 60000)
|
|
19
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
20
|
+
const minutes = Math.floor(ms / 60000);
|
|
21
|
+
const seconds = Math.round((ms % 60000) / 1000);
|
|
22
|
+
return `${minutes}m ${seconds}s`;
|
|
23
|
+
}
|
|
24
|
+
export function formatDate(date) {
|
|
25
|
+
const d = typeof date === 'string' ? new Date(date) : date;
|
|
26
|
+
return `${MONTHS[d.getMonth()]} ${d.getDate()}, ${d.getFullYear()} ${pad(d.getHours())}:${pad(d.getMinutes())}`;
|
|
27
|
+
}
|
|
28
|
+
export function formatRelative(date) {
|
|
29
|
+
const d = typeof date === 'string' ? new Date(date) : date;
|
|
30
|
+
const now = Date.now();
|
|
31
|
+
const diff = d.getTime() - now;
|
|
32
|
+
const abs = Math.abs(diff);
|
|
33
|
+
const suffix = diff < 0 ? 'ago' : 'from now';
|
|
34
|
+
if (abs < 60000)
|
|
35
|
+
return `${Math.round(abs / 1000)}s ${suffix}`;
|
|
36
|
+
if (abs < 3600000)
|
|
37
|
+
return `${Math.round(abs / 60000)}m ${suffix}`;
|
|
38
|
+
if (abs < 86400000)
|
|
39
|
+
return `${Math.round(abs / 3600000)}h ${suffix}`;
|
|
40
|
+
if (abs < 2592000000)
|
|
41
|
+
return `${Math.round(abs / 86400000)}d ${suffix}`;
|
|
42
|
+
return `${Math.round(abs / 2592000000)}mo ${suffix}`;
|
|
43
|
+
}
|
|
44
|
+
export function formatCountdown(ms) {
|
|
45
|
+
if (ms <= 0)
|
|
46
|
+
return chalk.red('expired');
|
|
47
|
+
const hours = Math.floor(ms / 3600000);
|
|
48
|
+
const minutes = Math.floor((ms % 3600000) / 60000);
|
|
49
|
+
const seconds = Math.floor((ms % 60000) / 1000);
|
|
50
|
+
if (hours > 0)
|
|
51
|
+
return `${hours}h ${minutes}m ${seconds}s`;
|
|
52
|
+
if (minutes > 0)
|
|
53
|
+
return `${minutes}m ${seconds}s`;
|
|
54
|
+
return `${seconds}s`;
|
|
55
|
+
}
|
|
56
|
+
export function truncate(str, max) {
|
|
57
|
+
if (str.length <= max)
|
|
58
|
+
return str;
|
|
59
|
+
return str.slice(0, max - 3) + '...';
|
|
60
|
+
}
|
|
61
|
+
export function pluralize(n, singular, plural) {
|
|
62
|
+
return n === 1 ? `${n} ${singular}` : `${n} ${plural ?? singular + 's'}`;
|
|
63
|
+
}
|
|
64
|
+
export function maskEmail(email) {
|
|
65
|
+
const [name, domain] = email.split('@');
|
|
66
|
+
if (!name || !domain)
|
|
67
|
+
return email;
|
|
68
|
+
const masked = name[0] + '***' + name[name.length - 1];
|
|
69
|
+
return `${masked}@${domain}`;
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { exec } from 'node:child_process';
|
|
2
|
+
/** Open a URL in the platform default browser. Never throws. */
|
|
3
|
+
export function openBrowser(url) {
|
|
4
|
+
const cmds = {
|
|
5
|
+
darwin: `open "${url}"`,
|
|
6
|
+
win32: `start "" "${url}"`,
|
|
7
|
+
linux: `xdg-open "${url}"`,
|
|
8
|
+
};
|
|
9
|
+
const cmd = cmds[process.platform] || `xdg-open "${url}"`;
|
|
10
|
+
try {
|
|
11
|
+
exec(cmd, () => { });
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
/* user gets the printed URL instead */
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {g}from'./chunk-5JWZKMAI.js';import'./chunk-VDWSP3BD.js';import'./chunk-ZQ2OIVG3.js';import'./chunk-OEURGJIH.js';import'./chunk-WVCLY4PF.js';async function l(){try{let s=(await g.request("/shares",{method:"GET",authenticated:!0})).shares||[];if(s.length===0){console.log("No share links found.");return}console.log(`${s.length} share link(s):`),console.log("");for(let e of s){let t=e.file_name||e.id,o=e.created_at?new Date(e.created_at).toLocaleDateString():"\u2014",r=e.expires_at?` expires ${new Date(e.expires_at).toLocaleDateString()}`:"",i=e.downloads!==void 0?` \xB7 ${e.downloads} dl`:"";console.log(` ${e.id.padEnd(24)} ${t.padEnd(30)} ${o}${r}${i}`);}}catch(a){console.error("Error listing share links:",a.message),process.exit(1);}}export{l as default};//# sourceMappingURL=list-3P3SIMDW.js.map
|
|
2
|
+
//# sourceMappingURL=list-3P3SIMDW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/share/list.ts"],"names":["shareList","shares","apiClient","s","name","date","expires","downloads","err"],"mappings":"oJAgBA,eAAOA,CAAAA,EAAkD,CACvD,GAAI,CAMF,IAAMC,CAAAA,CAAAA,CALO,MAAMC,CAAAA,CAAU,OAAA,CAAwB,SAAA,CAAW,CAC9D,MAAA,CAAQ,KAAA,CACR,aAAA,CAAe,CAAA,CACjB,CAAC,CAAA,EAEmB,MAAA,EAAU,EAAC,CAC/B,GAAID,CAAAA,CAAO,MAAA,GAAW,CAAA,CAAG,CACvB,OAAA,CAAQ,GAAA,CAAI,uBAAuB,CAAA,CACnC,MACF,CAEA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAGA,CAAAA,CAAO,MAAM,CAAA,eAAA,CAAiB,CAAA,CAC7C,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA,CAEd,IAAA,IAAWE,CAAAA,IAAKF,CAAAA,CAAQ,CACtB,IAAMG,CAAAA,CAAOD,CAAAA,CAAE,SAAA,EAAaA,CAAAA,CAAE,EAAA,CACxBE,CAAAA,CAAOF,CAAAA,CAAE,UAAA,CAAa,IAAI,IAAA,CAAKA,CAAAA,CAAE,UAAU,CAAA,CAAE,oBAAmB,CAAI,QAAA,CACpEG,CAAAA,CAAUH,CAAAA,CAAE,UAAA,CAAa,CAAA,SAAA,EAAY,IAAI,IAAA,CAAKA,CAAAA,CAAE,UAAU,CAAA,CAAE,kBAAA,EAAoB,CAAA,CAAA,CAAK,EAAA,CACrFI,CAAAA,CAAYJ,CAAAA,CAAE,SAAA,GAAc,KAAA,CAAA,CAAY,CAAA,MAAA,EAAMA,CAAAA,CAAE,SAAS,CAAA,GAAA,CAAA,CAAQ,EAAA,CACvE,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAA,EAAKA,CAAAA,CAAE,EAAA,CAAG,MAAA,CAAO,EAAE,CAAC,CAAA,CAAA,EAAIC,CAAAA,CAAK,MAAA,CAAO,EAAE,CAAC,CAAA,CAAA,EAAIC,CAAI,CAAA,EAAGC,CAAO,CAAA,EAAGC,CAAS,CAAA,CAAE,EACrF,CACF,CAAA,MAASC,CAAAA,CAAU,CACjB,OAAA,CAAQ,KAAA,CAAM,4BAAA,CAA8BA,CAAAA,CAAI,OAAO,CAAA,CACvD,OAAA,CAAQ,IAAA,CAAK,CAAC,EAChB,CACF","file":"list-3P3SIMDW.js","sourcesContent":["import { apiClient } from '../../lib/api/client.js'\n\ninterface ShareLink {\n id: string\n file_name?: string\n share_url?: string\n created_at?: string\n expires_at?: string | null\n downloads?: number\n}\n\ninterface SharesResponse {\n success: boolean\n shares: ShareLink[]\n}\n\nexport default async function shareList(): Promise<void> {\n try {\n const data = await apiClient.request<SharesResponse>('/shares', {\n method: 'GET',\n authenticated: true,\n });\n\n const shares = data.shares || [];\n if (shares.length === 0) {\n console.log('No share links found.');\n return;\n }\n\n console.log(`${shares.length} share link(s):`);\n console.log('');\n\n for (const s of shares) {\n const name = s.file_name || s.id;\n const date = s.created_at ? new Date(s.created_at).toLocaleDateString() : '—';\n const expires = s.expires_at ? ` expires ${new Date(s.expires_at).toLocaleDateString()}` : '';\n const downloads = s.downloads !== undefined ? ` · ${s.downloads} dl` : '';\n console.log(` ${s.id.padEnd(24)} ${name.padEnd(30)} ${date}${expires}${downloads}`);\n }\n } catch (err: any) {\n console.error('Error listing share links:', err.message);\n process.exit(1);\n }\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import {g}from'./chunk-5JWZKMAI.js';import'./chunk-VDWSP3BD.js';import'./chunk-ZQ2OIVG3.js';import'./chunk-OEURGJIH.js';import'./chunk-WVCLY4PF.js';async function a(...r){let[e]=r;try{let o=(await g.request(e?`/files?folder_id=${encodeURIComponent(e)}`:"/files",{method:"GET",authenticated:!0})).folders||[];if(o.length===0){console.log("No folders found."),e&&console.log("(no subfolders in this parent)");return}console.log(`
|
|
2
|
+
Folders${e?` (parent: ${e})`:""}:`),console.log("");for(let n of o){let l=n.created_at?new Date(n.created_at).toLocaleDateString():"\u2014";console.log(` ${n.name.padEnd(30)} ${l}`);}console.log(`
|
|
3
|
+
${o.length} folder(s) shown.`);}catch(t){console.error("Error listing folders:",t.message),process.exit(1);}}export{a as default};//# sourceMappingURL=list-BK2B4CQI.js.map
|
|
4
|
+
//# sourceMappingURL=list-BK2B4CQI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/folders/list.ts"],"names":["foldersList","args","parentId","folders","apiClient","f","date","err"],"mappings":"oJAiBA,eAAOA,CAAAA,CAAAA,GAAsCC,EAAgC,CAC3E,GAAM,CAACC,CAAQ,CAAA,CAAID,CAAAA,CAEnB,GAAI,CAMF,IAAME,GALO,MAAMC,CAAAA,CAAU,QAAuBF,CAAAA,CAAW,CAAA,iBAAA,EAAoB,mBAAmBA,CAAQ,CAAC,CAAA,CAAA,CAAK,QAAA,CAAU,CAC5H,MAAA,CAAQ,MACR,aAAA,CAAe,CAAA,CACjB,CAAC,CAAA,EAEoB,OAAA,EAAW,EAAC,CAEjC,GAAIC,CAAAA,CAAQ,MAAA,GAAW,CAAA,CAAG,CACxB,QAAQ,GAAA,CAAI,mBAAmB,CAAA,CAC3BD,CAAAA,EACF,OAAA,CAAQ,GAAA,CAAI,gCAAgC,CAAA,CAE9C,MACF,CAEA,OAAA,CAAQ,GAAA,CAAI;AAAA,OAAA,EAAYA,EAAW,CAAA,UAAA,EAAaA,CAAQ,IAAM,EAAE,CAAA,CAAA,CAAG,EACnE,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA,CAEd,QAAWG,CAAAA,IAAKF,CAAAA,CAAS,CACvB,IAAMG,CAAAA,CAAOD,EAAE,UAAA,CAAa,IAAI,IAAA,CAAKA,CAAAA,CAAE,UAAU,CAAA,CAAE,kBAAA,GAAuB,QAAA,CAC1E,OAAA,CAAQ,IAAI,CAAA,EAAA,EAAKA,CAAAA,CAAE,KAAK,MAAA,CAAO,EAAE,CAAC,CAAA,CAAA,EAAIC,CAAI,EAAE,EAC9C,CAEA,QAAQ,GAAA,CAAI;AAAA,EAAKH,EAAQ,MAAM,CAAA,iBAAA,CAAmB,EACpD,CAAA,MAASI,EAAU,CACjB,OAAA,CAAQ,KAAA,CAAM,wBAAA,CAA0BA,EAAI,OAAO,CAAA,CACnD,QAAQ,IAAA,CAAK,CAAC,EAChB,CACF","file":"list-BK2B4CQI.js","sourcesContent":["import { apiClient } from '../../lib/api/client.js'\n\ninterface ApiFolder {\n id: string\n name: string\n parent_folder?: string | null\n created_at?: string\n}\n\ninterface FilesResponse {\n files: unknown[]\n folders: ApiFolder[]\n total_files: number\n total_folders: number\n success: boolean\n}\n\nexport default async function foldersList(...args: unknown[]): Promise<void> {\n const [parentId] = args as [string | undefined];\n\n try {\n const data = await apiClient.request<FilesResponse>(parentId ? `/files?folder_id=${encodeURIComponent(parentId)}` : '/files', {\n method: 'GET',\n authenticated: true,\n });\n\n const folders = data.folders || [];\n\n if (folders.length === 0) {\n console.log('No folders found.');\n if (parentId) {\n console.log('(no subfolders in this parent)');\n }\n return;\n }\n\n console.log(`\\nFolders${parentId ? ` (parent: ${parentId})` : ''}:`);\n console.log('');\n\n for (const f of folders) {\n const date = f.created_at ? new Date(f.created_at).toLocaleDateString() : '—';\n console.log(` ${f.name.padEnd(30)} ${date}`);\n }\n\n console.log(`\\n${folders.length} folder(s) shown.`);\n } catch (err: any) {\n console.error('Error listing folders:', err.message);\n process.exit(1);\n }\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import'./chunk-VXPI52BF.js';import {a}from'./chunk-OSI5H2T5.js';import'./chunk-CFZZRV3Z.js';import {g}from'./chunk-5JWZKMAI.js';import'./chunk-VDWSP3BD.js';import'./chunk-ZQ2OIVG3.js';import'./chunk-OEURGJIH.js';import'./chunk-WVCLY4PF.js';async function f(...a$1){let[r]=a$1;try{let o=await g.request(r?`/files?folder_id=${encodeURIComponent(r)}`:"/files",{method:"GET",authenticated:!0}),t=o.files||[],n=o.folders||[];if(n.length>0){console.log(`
|
|
2
|
+
Folders:`);for(let e of n){let s=e.created_at?new Date(e.created_at).toLocaleDateString():"\u2014";console.log(` \u{1F4C1} ${e.name.padEnd(36)} ${s}`);}console.log("");}if(t.length===0&&n.length===0){console.log("No files found.");return}console.log(`${t.length} file(s):`),console.log("");for(let e of t){let s=e.size?a(e.size):"\u2014",c=e.created_at?new Date(e.created_at).toLocaleDateString():"\u2014",d=e.is_encrypted?"\u{1F512} encrypted":"";console.log(` ${e.name.padEnd(40)} ${s.padEnd(12)} ${c} ${d}`);}console.log(`
|
|
3
|
+
${t.length} file(s) shown.`);}catch(o){console.error("Error listing files:",o.message),process.exit(1);}}export{f as default};//# sourceMappingURL=list-PVSQ7A54.js.map
|
|
4
|
+
//# sourceMappingURL=list-PVSQ7A54.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/files/list.ts"],"names":["filesList","args","folderId","data","apiClient","files","folders","f","date","size","formatBytes","encrypted","err"],"mappings":"gPAyBA,eAAOA,CAAAA,CAAAA,GAAoCC,IAAgC,CACzE,GAAM,CAACC,CAAQ,CAAA,CAAID,IAEnB,GAAI,CACF,IAAME,CAAAA,CAAO,MAAMC,EAAU,OAAA,CAAuBF,CAAAA,CAAW,oBAAoB,kBAAA,CAAmBA,CAAQ,CAAC,CAAA,CAAA,CAAK,QAAA,CAAU,CAC5H,MAAA,CAAQ,KAAA,CACR,cAAe,CAAA,CACjB,CAAC,EAEKG,CAAAA,CAAQF,CAAAA,CAAK,OAAS,EAAC,CACvBG,EAAUH,CAAAA,CAAK,OAAA,EAAW,EAAC,CAEjC,GAAIG,EAAQ,MAAA,CAAS,CAAA,CAAG,CACtB,OAAA,CAAQ,GAAA,CAAI;AAAA,QAAA,CAAY,CAAA,CACxB,IAAA,IAAWC,CAAAA,IAAKD,CAAAA,CAAS,CACvB,IAAME,CAAAA,CAAOD,CAAAA,CAAE,UAAA,CAAa,IAAI,IAAA,CAAKA,CAAAA,CAAE,UAAU,CAAA,CAAE,kBAAA,EAAmB,CAAI,QAAA,CAC1E,OAAA,CAAQ,GAAA,CAAI,eAAQA,CAAAA,CAAE,IAAA,CAAK,MAAA,CAAO,EAAE,CAAC,CAAA,CAAA,EAAIC,CAAI,CAAA,CAAE,EACjD,CACA,OAAA,CAAQ,GAAA,CAAI,EAAE,EAChB,CAEA,GAAIH,CAAAA,CAAM,MAAA,GAAW,CAAA,EAAKC,CAAAA,CAAQ,SAAW,CAAA,CAAG,CAC9C,OAAA,CAAQ,GAAA,CAAI,iBAAiB,CAAA,CAC7B,MACF,CAEA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAGD,CAAAA,CAAM,MAAM,CAAA,SAAA,CAAW,EACtC,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA,CAEd,IAAA,IAAWE,CAAAA,IAAKF,EAAO,CACrB,IAAMI,CAAAA,CAAOF,CAAAA,CAAE,IAAA,CAAOG,CAAAA,CAAYH,EAAE,IAAI,CAAA,CAAI,QAAA,CACtCC,CAAAA,CAAOD,CAAAA,CAAE,UAAA,CAAa,IAAI,IAAA,CAAKA,CAAAA,CAAE,UAAU,CAAA,CAAE,kBAAA,EAAmB,CAAI,SACpEI,CAAAA,CAAYJ,CAAAA,CAAE,YAAA,CAAe,qBAAA,CAAiB,EAAA,CACpD,OAAA,CAAQ,IAAI,CAAA,EAAA,EAAKA,CAAAA,CAAE,IAAA,CAAK,MAAA,CAAO,EAAE,CAAC,IAAIE,CAAAA,CAAK,MAAA,CAAO,EAAE,CAAC,CAAA,CAAA,EAAID,CAAI,CAAA,CAAA,EAAIG,CAAS,CAAA,CAAE,EAC9E,CAEA,OAAA,CAAQ,GAAA,CAAI;AAAA,EAAKN,EAAM,MAAM,CAAA,eAAA,CAAiB,EAChD,CAAA,MAASO,EAAU,CACjB,OAAA,CAAQ,KAAA,CAAM,sBAAA,CAAwBA,EAAI,OAAO,CAAA,CACjD,QAAQ,IAAA,CAAK,CAAC,EAChB,CACF","file":"list-PVSQ7A54.js","sourcesContent":["import { apiClient } from '../../lib/api/client.js'\nimport { formatBytes } from '../../lib/utils/index.js'\n\ninterface ApiFile {\n id: string\n name: string\n size?: number\n created_at?: string\n is_encrypted?: boolean\n}\n\ninterface ApiFolder {\n id: string\n name: string\n created_at?: string\n}\n\ninterface FilesResponse {\n files: ApiFile[]\n folders: ApiFolder[]\n total_files: number\n total_folders: number\n success: boolean\n}\n\nexport default async function filesList(...args: unknown[]): Promise<void> {\n const [folderId] = args as [string | undefined];\n\n try {\n const data = await apiClient.request<FilesResponse>(folderId ? `/files?folder_id=${encodeURIComponent(folderId)}` : '/files', {\n method: 'GET',\n authenticated: true,\n });\n\n const files = data.files || [];\n const folders = data.folders || [];\n\n if (folders.length > 0) {\n console.log(`\\nFolders:`);\n for (const f of folders) {\n const date = f.created_at ? new Date(f.created_at).toLocaleDateString() : '—';\n console.log(` 📁 ${f.name.padEnd(36)} ${date}`);\n }\n console.log('');\n }\n\n if (files.length === 0 && folders.length === 0) {\n console.log('No files found.');\n return;\n }\n\n console.log(`${files.length} file(s):`);\n console.log('');\n\n for (const f of files) {\n const size = f.size ? formatBytes(f.size) : '—';\n const date = f.created_at ? new Date(f.created_at).toLocaleDateString() : '—';\n const encrypted = f.is_encrypted ? '🔒 encrypted' : '';\n console.log(` ${f.name.padEnd(40)} ${size.padEnd(12)} ${date} ${encrypted}`);\n }\n\n console.log(`\\n${files.length} file(s) shown.`);\n } catch (err: any) {\n console.error('Error listing files:', err.message);\n process.exit(1);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"login-device-ATMWTABG.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"login-oauth-CDU3A5QB.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"logout-AV7RCXWJ.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"logs-export-M2FQFCNI.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"logs-search-JSCT3K5O.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"logs-tail-W5YO2QRG.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"monitor-5AKUYIKP.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"monitor-automations-YAAS7N6L.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"monitor-pipelines-JO4DQ6T4.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"monitor-sites-5IEY3Y2F.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"monitor-storage-6HG6URCV.js"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export{d as anonKey,a as authToken,i as clearOAuthSession,j as getCredentialsPath,h as loadOAuthSession,f as setAuthState,g as setSupaClient,e as supaClient,c as tokenExpiresAt,b as userEmail,k as writeCredentials}from'./chunk-OEURGJIH.js';//# sourceMappingURL=oauth-session-KBMWAOVL.js.map
|
|
2
|
+
//# sourceMappingURL=oauth-session-KBMWAOVL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"oauth-session-KBMWAOVL.js"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const requiresAuth = true;
|
|
2
|
+
const noAuth = false;
|
|
3
|
+
const REGISTRY = [
|
|
4
|
+
// ─── AUTH ───
|
|
5
|
+
{ name: 'login', aliases: [], description: 'Authenticate with SquidCloud OAuth (browser flow)', requiresAuth: noAuth, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/login-oauth.js') },
|
|
6
|
+
{ name: 'login device', aliases: [], description: 'Authenticate using device code flow (headless)', requiresAuth: noAuth, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/login-device.js') },
|
|
7
|
+
{ name: 'logout', aliases: [], description: 'Sign out and clear local credentials', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/logout.js') },
|
|
8
|
+
{ name: 'whoami', aliases: ['auth whoami'], description: 'Show the authenticated account', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/whoami.js') },
|
|
9
|
+
{ name: 'auth status', aliases: [], description: 'Session health check', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/auth-status.js') },
|
|
10
|
+
// ─── FILES ───
|
|
11
|
+
{ name: 'files ls', aliases: ['files list'], description: 'List files — every row gets a [#number] for later commands', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'files', handler: () => import('../commands/files/list.js') },
|
|
12
|
+
{ name: 'files up', aliases: ['files upload'], description: 'Upload files or folders (client-chunked, cluster-distributed)', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'files', handler: () => import('../commands/files/upload.js') },
|
|
13
|
+
{ name: 'files dl', aliases: ['files download'], description: 'Download a file by #number, id prefix, or name', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'files', handler: () => import('../commands/files/download.js') },
|
|
14
|
+
// ─── FOLDERS ───
|
|
15
|
+
{ name: 'folders ls', aliases: ['folders list'], description: 'List folders', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'folders', handler: () => import('../commands/storage/folders-list.js') },
|
|
16
|
+
{ name: 'folders mkdir', aliases: ['folders create'], description: 'Create a folder', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'folders', handler: () => import('../commands/storage/folders-create.js') },
|
|
17
|
+
// ─── STORAGE ───
|
|
18
|
+
{ name: 'storage ls', aliases: ['storage list'], description: 'List folders + files together', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-ls.js') },
|
|
19
|
+
{ name: 'storage upload', aliases: ['storage up'], description: 'Upload files or folders', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-upload.js') },
|
|
20
|
+
{ name: 'storage download', aliases: ['storage dl'], description: 'Download a file', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-download.js') },
|
|
21
|
+
{ name: 'storage info', aliases: [], description: 'Show full metadata for a file', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-info.js') },
|
|
22
|
+
{ name: 'storage rm', aliases: [], description: 'Delete files (recoverable from trash)', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'storage', handler: () => import('../commands/storage/storage-rm.js') },
|
|
23
|
+
{ name: 'storage mv', aliases: [], description: 'Rename a file', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'storage', handler: () => import('../commands/storage/storage-mv.js') },
|
|
24
|
+
{ name: 'storage cp', aliases: [], description: 'Duplicate a file under a new name', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-cp.js') },
|
|
25
|
+
{ name: 'storage search', aliases: [], description: 'Search storage by filename', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-search.js') },
|
|
26
|
+
{ name: 'storage mkdir', aliases: [], description: 'Create a folder', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-mkdir.js') },
|
|
27
|
+
// ─── SHARE ───
|
|
28
|
+
{ name: 'share create', aliases: [], description: 'Create a share link (--expires --max-downloads --view-only)', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'share', handler: () => import('../commands/share/create.js') },
|
|
29
|
+
// ─── SECRETS ───
|
|
30
|
+
{ name: 'secrets list', aliases: [], description: 'List stored secrets', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'secrets', handler: () => import('../commands/secrets/secrets-list.js') },
|
|
31
|
+
{ name: 'secrets create', aliases: [], description: 'Store a secret (value can arrive on stdin)', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'secrets', handler: () => import('../commands/secrets/secrets-create.js') },
|
|
32
|
+
{ name: 'secrets delete', aliases: [], description: 'Delete a secret by id', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'secrets', handler: () => import('../commands/secrets/secrets-delete.js') },
|
|
33
|
+
{ name: 'secrets rename', aliases: [], description: 'Rename a secret', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'secrets', handler: () => import('../commands/secrets/secrets-rename.js') },
|
|
34
|
+
{ name: 'secrets verify', aliases: [], description: 'Check a value against a stored secret', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'secrets', handler: () => import('../commands/secrets/secrets-verify.js') },
|
|
35
|
+
// ─── HEALTH ───
|
|
36
|
+
{ name: 'health', aliases: [], description: 'API health probe', requiresAuth: noAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'health', handler: () => import('../commands/health.js') },
|
|
37
|
+
// ─── SITES (production) ───
|
|
38
|
+
{ name: 'sites ls', aliases: ['sites list'], description: 'List published sites', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/list.js') },
|
|
39
|
+
{ name: 'sites open', aliases: [], description: 'Open a site in the browser', requiresAuth, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/open.js') },
|
|
40
|
+
{ name: 'sites unpublish', aliases: ['sites delete'], description: 'Take a site offline / remove it', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'sites', handler: () => import('../commands/sites/unpublish.js') },
|
|
41
|
+
{ name: 'sites visibility', aliases: [], description: 'Toggle a site public/private', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'sites', handler: () => import('../commands/sites/visibility.js') },
|
|
42
|
+
// ─── FILE REQUESTS (production) ───
|
|
43
|
+
{ name: 'filereq ls', aliases: ['filereq list'], description: 'List file request links', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/filereq/list.js') },
|
|
44
|
+
{ name: 'filereq create', aliases: [], description: 'Create a file request link', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/filereq/create.js') },
|
|
45
|
+
{ name: 'filereq submissions', aliases: ['filereq subs'], description: 'List submissions for a request', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/filereq/submissions.js') },
|
|
46
|
+
{ name: 'filereq delete', aliases: ['filereq rm'], description: 'Delete a file request', requiresAuth, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'forms', handler: () => import('../commands/filereq/delete.js') },
|
|
47
|
+
// ─── LOCAL API HOST ───
|
|
48
|
+
{ name: 'host api', aliases: [], description: 'Host a hardened local API server on :8065 backed by your account', requiresAuth: true, requiresProject: false, ciSafe: false, jsonSupport: true, dangerLevel: 'caution', category: 'utility', handler: () => import('../commands/host/api.js') },
|
|
49
|
+
{ name: 'host status', aliases: [], description: 'Show running local host', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/host/status.js') },
|
|
50
|
+
{ name: 'host stop', aliases: [], description: 'Stop the running local host', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/host/stop.js') },
|
|
51
|
+
{ name: 'host keys add', aliases: [], description: 'Mint another localhost API key', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'caution', category: 'utility', handler: () => import('../commands/host/keys.js').then((m) => ({ default: m.hostKeysAdd })) },
|
|
52
|
+
{ name: 'host keys list', aliases: [], description: 'List active local API keys', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/host/keys.js').then((m) => ({ default: m.hostKeysList })) },
|
|
53
|
+
{ name: 'host keys revoke', aliases: [], description: 'Revoke a local key by prefix', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'caution', category: 'utility', handler: () => import('../commands/host/keys.js').then((m) => ({ default: m.hostKeysRevoke })) },
|
|
54
|
+
// ─── SquidFS ───
|
|
55
|
+
{ name: 'fs mount', aliases: [], description: 'Mount storage as a local disk (FUSE where available)', requiresAuth, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'caution', category: 'utility', handler: () => import('../commands/fs/mount.js') },
|
|
56
|
+
{ name: 'fs webdav', aliases: [], description: 'Serve storage over WebDAV on localhost', requiresAuth, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'caution', category: 'utility', handler: () => import('../commands/fs/webdav.js') },
|
|
57
|
+
{ name: 'fs status', aliases: [], description: 'Show running SquidFS sessions', requiresAuth: noAuth, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/fs/status.js') },
|
|
58
|
+
{ name: 'fs stop', aliases: [], description: 'Stop a running SquidFS session', requiresAuth: noAuth, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/fs/stop.js') },
|
|
59
|
+
];
|
|
60
|
+
const seen = new Set();
|
|
61
|
+
export const getAllCommands = () => REGISTRY.filter((c) => (seen.has(c.name) ? false : (seen.add(c.name), true)));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"scripts-cancel-2XO47DN7.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"scripts-delete-A6TXCHNO.js"}
|