squidcloudctl 1.1.3 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth-revoke-UCNMKHTF.js +2 -0
- package/dist/{auth-revoke-B2JBJB36.js.map → auth-revoke-UCNMKHTF.js.map} +1 -1
- package/dist/auth-sessions-PIBWTIT5.js +2 -0
- package/dist/{auth-sessions-ZPMHJBIJ.js.map → auth-sessions-PIBWTIT5.js.map} +1 -1
- package/dist/auth-status-RPJVTJ4S.js +2 -0
- package/dist/{auth-status-BZGX7ZXN.js.map → auth-status-RPJVTJ4S.js.map} +1 -1
- package/dist/bin/squidcloud.js +1 -1
- package/dist/bin/squidcloud.js.map +1 -1
- package/dist/chunk-2RMLR54M.js +2 -0
- package/dist/chunk-2RMLR54M.js.map +1 -0
- package/dist/chunk-6DKUVFZF.js +2 -0
- package/dist/chunk-6DKUVFZF.js.map +1 -0
- package/dist/chunk-FZKCZRJZ.js +2 -0
- package/dist/chunk-FZKCZRJZ.js.map +1 -0
- package/dist/chunk-PSJQAIDB.js +2 -0
- package/dist/chunk-PSJQAIDB.js.map +1 -0
- package/dist/chunk-Z74H5ACJ.js +3 -0
- package/dist/chunk-Z74H5ACJ.js.map +1 -0
- package/dist/client-MCQSJIGH.js +2 -0
- package/dist/{client-RBFTHJQ4.js.map → client-MCQSJIGH.js.map} +1 -1
- package/dist/{collab-activity-LEPWGNXB.js → collab-activity-ESSL2DUE.js} +2 -2
- package/dist/{collab-activity-LEPWGNXB.js.map → collab-activity-ESSL2DUE.js.map} +1 -1
- package/dist/collab-invite-H6KXMBJ5.js +2 -0
- package/dist/{collab-invite-6QGPY7SO.js.map → collab-invite-H6KXMBJ5.js.map} +1 -1
- package/dist/collab-leave-23J42V4P.js +2 -0
- package/dist/{collab-leave-YMTEY2CZ.js.map → collab-leave-23J42V4P.js.map} +1 -1
- package/dist/collab-list-6VNDTN7W.js +2 -0
- package/dist/{collab-list-AQUFYKGI.js.map → collab-list-6VNDTN7W.js.map} +1 -1
- package/dist/collab-remove-A76ARTWG.js +2 -0
- package/dist/{collab-remove-CJSQYEUI.js.map → collab-remove-A76ARTWG.js.map} +1 -1
- package/dist/collab-transfer-S5MECG6Y.js +2 -0
- package/dist/{collab-transfer-I6O6T3AC.js.map → collab-transfer-S5MECG6Y.js.map} +1 -1
- package/dist/deploy-O7VVCVUR.js +3 -0
- package/dist/{deploy-3AMFZQ7I.js.map → deploy-O7VVCVUR.js.map} +1 -1
- package/dist/doctor-GAUV36VS.js +2 -0
- package/dist/doctor-GAUV36VS.js.map +1 -0
- package/dist/forms-clear-TSQ4YFPW.js +2 -0
- package/dist/{forms-clear-BFDMRIWW.js.map → forms-clear-TSQ4YFPW.js.map} +1 -1
- package/dist/forms-create-IJPDTTGR.js +2 -0
- package/dist/{forms-create-EWU47AIO.js.map → forms-create-IJPDTTGR.js.map} +1 -1
- package/dist/forms-delete-5Q6JVOWZ.js +2 -0
- package/dist/{forms-delete-HJISSH4G.js.map → forms-delete-5Q6JVOWZ.js.map} +1 -1
- package/dist/forms-embed-RWJ4BAPQ.js +3 -0
- package/dist/{forms-embed-GSIGC4V7.js.map → forms-embed-RWJ4BAPQ.js.map} +1 -1
- package/dist/forms-export-YGKJVRUD.js +2 -0
- package/dist/{forms-export-KLFI4NJ7.js.map → forms-export-YGKJVRUD.js.map} +1 -1
- package/dist/forms-info-NVNTIK45.js +2 -0
- package/dist/{forms-info-BRG5D5D7.js.map → forms-info-NVNTIK45.js.map} +1 -1
- package/dist/forms-list-UDYVBNX5.js +2 -0
- package/dist/{forms-list-GYBKM5YD.js.map → forms-list-UDYVBNX5.js.map} +1 -1
- package/dist/forms-submissions-LFUTUDOW.js +2 -0
- package/dist/{forms-submissions-RKNVL2FS.js.map → forms-submissions-LFUTUDOW.js.map} +1 -1
- package/dist/login-PDECY435.js +3 -0
- package/dist/login-PDECY435.js.map +1 -0
- package/dist/logout-D2GLIU2Y.js +2 -0
- package/dist/{logout-HGLROFNP.js.map → logout-D2GLIU2Y.js.map} +1 -1
- package/dist/logs-export-76WAIPNB.js +2 -0
- package/dist/{logs-export-547MGHOL.js.map → logs-export-76WAIPNB.js.map} +1 -1
- package/dist/logs-search-MA3AWP4B.js +2 -0
- package/dist/{logs-search-P52C7PUZ.js.map → logs-search-MA3AWP4B.js.map} +1 -1
- package/dist/{logs-tail-K4CWSSGP.js → logs-tail-2OMASMCD.js} +3 -3
- package/dist/{logs-tail-K4CWSSGP.js.map → logs-tail-2OMASMCD.js.map} +1 -1
- package/dist/monitor-LZ7R5C3D.js +2 -0
- package/dist/{monitor-IEQ4UD2H.js.map → monitor-LZ7R5C3D.js.map} +1 -1
- package/dist/monitor-automations-AR7MS2PL.js +2 -0
- package/dist/{monitor-automations-4UNPGIZG.js.map → monitor-automations-AR7MS2PL.js.map} +1 -1
- package/dist/monitor-pipelines-EASQLIQA.js +2 -0
- package/dist/{monitor-pipelines-FVASSAV4.js.map → monitor-pipelines-EASQLIQA.js.map} +1 -1
- package/dist/monitor-sites-2QIM4XJ3.js +2 -0
- package/dist/{monitor-sites-GN2CSO6K.js.map → monitor-sites-2QIM4XJ3.js.map} +1 -1
- package/dist/monitor-storage-SMB32J37.js +2 -0
- package/dist/{monitor-storage-XBPKQTPJ.js.map → monitor-storage-SMB32J37.js.map} +1 -1
- package/dist/scripts-cancel-CQVIDKVW.js +2 -0
- package/dist/{scripts-cancel-NOVNOP4C.js.map → scripts-cancel-CQVIDKVW.js.map} +1 -1
- package/dist/scripts-delete-TV4SX5OJ.js +2 -0
- package/dist/{scripts-delete-GDPLFXWI.js.map → scripts-delete-TV4SX5OJ.js.map} +1 -1
- package/dist/scripts-disable-IHPUGSTJ.js +2 -0
- package/dist/{scripts-disable-GQCO7Z2O.js.map → scripts-disable-IHPUGSTJ.js.map} +1 -1
- package/dist/scripts-enable-ULCXRU7W.js +2 -0
- package/dist/{scripts-enable-MEC2YFAZ.js.map → scripts-enable-ULCXRU7W.js.map} +1 -1
- package/dist/scripts-list-XWNT7242.js +2 -0
- package/dist/{scripts-list-CWCKTE6G.js.map → scripts-list-XWNT7242.js.map} +1 -1
- package/dist/scripts-logs-YBF6MTMQ.js +2 -0
- package/dist/{scripts-logs-BFI7ZBMA.js.map → scripts-logs-YBF6MTMQ.js.map} +1 -1
- package/dist/scripts-run-FQ7EOXOH.js +2 -0
- package/dist/{scripts-run-D5WQF7CD.js.map → scripts-run-FQ7EOXOH.js.map} +1 -1
- package/dist/scripts-status-XYGHYRZB.js +2 -0
- package/dist/{scripts-status-H3DZSNGH.js.map → scripts-status-XYGHYRZB.js.map} +1 -1
- package/dist/scripts-validate-T7CGIPPE.js +2 -0
- package/dist/{scripts-validate-GFEEMXGM.js.map → scripts-validate-T7CGIPPE.js.map} +1 -1
- package/dist/scripts-watch-A7HEOAOE.js +2 -0
- package/dist/{scripts-watch-YNPV5J7L.js.map → scripts-watch-A7HEOAOE.js.map} +1 -1
- package/dist/session-FBC5MGFA.js +2 -0
- package/dist/{session-TQAYXXL4.js.map → session-FBC5MGFA.js.map} +1 -1
- package/dist/sign-cancel-4YYJ2BBY.js +2 -0
- package/dist/{sign-cancel-65ENAT3A.js.map → sign-cancel-4YYJ2BBY.js.map} +1 -1
- package/dist/sign-download-VOMT2C3C.js +2 -0
- package/dist/{sign-download-DRG6AEW7.js.map → sign-download-VOMT2C3C.js.map} +1 -1
- package/dist/sign-list-SACY7XF3.js +2 -0
- package/dist/{sign-list-G5SAZIGV.js.map → sign-list-SACY7XF3.js.map} +1 -1
- package/dist/sign-request-PM7BZ56P.js +2 -0
- package/dist/{sign-request-KDWRY6NM.js.map → sign-request-PM7BZ56P.js.map} +1 -1
- package/dist/sign-status-LRQGO2UX.js +2 -0
- package/dist/{sign-status-IHMHFX4R.js.map → sign-status-LRQGO2UX.js.map} +1 -1
- package/dist/sign-verify-PQ7HBHTY.js +2 -0
- package/dist/{sign-verify-6GZYRRYD.js.map → sign-verify-PQ7HBHTY.js.map} +1 -1
- package/dist/sites-analytics-J5BMYBO5.js +2 -0
- package/dist/{sites-analytics-5U7LPRGD.js.map → sites-analytics-J5BMYBO5.js.map} +1 -1
- package/dist/sites-delete-BYUJAMSX.js +2 -0
- package/dist/{sites-delete-T5H6QHHE.js.map → sites-delete-BYUJAMSX.js.map} +1 -1
- package/dist/sites-deploys-XJQHVTET.js +2 -0
- package/dist/{sites-deploys-AGHGIVLV.js.map → sites-deploys-XJQHVTET.js.map} +1 -1
- package/dist/sites-info-JBM5C5FT.js +2 -0
- package/dist/{sites-info-55Y5G46C.js.map → sites-info-JBM5C5FT.js.map} +1 -1
- package/dist/sites-list-4AIOO76P.js +2 -0
- package/dist/{sites-list-AESG52QR.js.map → sites-list-4AIOO76P.js.map} +1 -1
- package/dist/sites-logs-GZALCIBX.js +3 -0
- package/dist/{sites-logs-CLJ35QZF.js.map → sites-logs-GZALCIBX.js.map} +1 -1
- package/dist/sites-open-QJOKIMGM.js +3 -0
- package/dist/{sites-open-6FLQLGDU.js.map → sites-open-QJOKIMGM.js.map} +1 -1
- package/dist/sites-purge-GXD673E2.js +2 -0
- package/dist/{sites-purge-3EE6M54Y.js.map → sites-purge-GXD673E2.js.map} +1 -1
- package/dist/sites-rename-BTQZRAVA.js +2 -0
- package/dist/{sites-rename-JJPIKOEV.js.map → sites-rename-BTQZRAVA.js.map} +1 -1
- package/dist/sites-rollback-LZUUU4ZU.js +2 -0
- package/dist/{sites-rollback-LG76J5XE.js.map → sites-rollback-LZUUU4ZU.js.map} +1 -1
- package/dist/sites-unpublish-IB7BTNJC.js +2 -0
- package/dist/{sites-unpublish-77EWOZI6.js.map → sites-unpublish-IB7BTNJC.js.map} +1 -1
- package/dist/sites-visibility-I7PIUX4B.js +2 -0
- package/dist/{sites-visibility-E6MDL2R5.js.map → sites-visibility-I7PIUX4B.js.map} +1 -1
- package/dist/storage-cat-CFOIZEJS.js +2 -0
- package/dist/{storage-cat-NMDWAEM4.js.map → storage-cat-CFOIZEJS.js.map} +1 -1
- package/dist/storage-clean-6EN2KMOC.js +2 -0
- package/dist/{storage-clean-6S5GP2AR.js.map → storage-clean-6EN2KMOC.js.map} +1 -1
- package/dist/storage-cp-SCF3CFS2.js +2 -0
- package/dist/{storage-cp-XM6KPPDU.js.map → storage-cp-SCF3CFS2.js.map} +1 -1
- package/dist/storage-diff-MYW5AM3C.js +2 -0
- package/dist/{storage-diff-2UTHBORN.js.map → storage-diff-MYW5AM3C.js.map} +1 -1
- package/dist/storage-download-6EQJJ7SO.js +3 -0
- package/dist/{storage-download-6OZCB7M4.js.map → storage-download-6EQJJ7SO.js.map} +1 -1
- package/dist/storage-info-BV7VXGTF.js +2 -0
- package/dist/{storage-info-ZD6LDRFG.js.map → storage-info-BV7VXGTF.js.map} +1 -1
- package/dist/storage-ls-HIVJWOV6.js +3 -0
- package/dist/storage-ls-HIVJWOV6.js.map +1 -0
- package/dist/storage-mkdir-GRKUOWAJ.js +2 -0
- package/dist/{storage-mkdir-YR6DI3T6.js.map → storage-mkdir-GRKUOWAJ.js.map} +1 -1
- package/dist/storage-mv-RYW5TXAH.js +2 -0
- package/dist/{storage-mv-3NQNRFPE.js.map → storage-mv-RYW5TXAH.js.map} +1 -1
- package/dist/storage-rm-PLBQC4ED.js +2 -0
- package/dist/{storage-rm-EF36YTVT.js.map → storage-rm-PLBQC4ED.js.map} +1 -1
- package/dist/storage-search-EKYRVCY2.js +2 -0
- package/dist/{storage-search-73OT4DNB.js.map → storage-search-EKYRVCY2.js.map} +1 -1
- package/dist/storage-share-OENZM4QY.js +2 -0
- package/dist/{storage-share-VK5Z3IRP.js.map → storage-share-OENZM4QY.js.map} +1 -1
- package/dist/storage-tag-7XTICDCD.js +2 -0
- package/dist/{storage-tag-VMF6QLSU.js.map → storage-tag-7XTICDCD.js.map} +1 -1
- package/dist/storage-unshare-6G6YPRPN.js +2 -0
- package/dist/{storage-unshare-NAVNQCKH.js.map → storage-unshare-6G6YPRPN.js.map} +1 -1
- package/dist/storage-upload-HW4QAENK.js +2 -0
- package/dist/{storage-upload-LA2VFTEN.js.map → storage-upload-HW4QAENK.js.map} +1 -1
- package/dist/time-list-HUWDZZ27.js +2 -0
- package/dist/{time-list-4FAFRADD.js.map → time-list-HUWDZZ27.js.map} +1 -1
- package/dist/time-lock-MZ6C6DMR.js +2 -0
- package/dist/{time-lock-L4PL43SC.js.map → time-lock-MZ6C6DMR.js.map} +1 -1
- package/dist/time-proof-G6IX5SMS.js +2 -0
- package/dist/{time-proof-ZOOUFIKS.js.map → time-proof-G6IX5SMS.js.map} +1 -1
- package/dist/time-status-UJ3XY3R5.js +2 -0
- package/dist/{time-status-M4QX6GTM.js.map → time-status-UJ3XY3R5.js.map} +1 -1
- package/dist/time-unlock-3TUR2KVC.js +2 -0
- package/dist/{time-unlock-UPHP5V74.js.map → time-unlock-3TUR2KVC.js.map} +1 -1
- package/dist/{update-XJQSXSFU.js → update-DOHW47PB.js} +2 -2
- package/dist/{update-XJQSXSFU.js.map → update-DOHW47PB.js.map} +1 -1
- package/dist/whoami-C4LPZU6R.js +2 -0
- package/dist/{whoami-2ABU6JQD.js.map → whoami-C4LPZU6R.js.map} +1 -1
- package/package.json +1 -3
- package/dist/auth-revoke-B2JBJB36.js +0 -2
- package/dist/auth-sessions-ZPMHJBIJ.js +0 -2
- package/dist/auth-status-BZGX7ZXN.js +0 -2
- package/dist/chunk-E2I4VVR5.js +0 -2
- package/dist/chunk-E2I4VVR5.js.map +0 -1
- package/dist/chunk-FYFPDKJM.js +0 -3
- package/dist/chunk-FYFPDKJM.js.map +0 -1
- package/dist/chunk-G4JU7IUC.js +0 -2
- package/dist/chunk-G4JU7IUC.js.map +0 -1
- package/dist/chunk-RXARHDCW.js +0 -2
- package/dist/chunk-RXARHDCW.js.map +0 -1
- package/dist/client-RBFTHJQ4.js +0 -2
- package/dist/collab-invite-6QGPY7SO.js +0 -2
- package/dist/collab-leave-YMTEY2CZ.js +0 -2
- package/dist/collab-list-AQUFYKGI.js +0 -2
- package/dist/collab-remove-CJSQYEUI.js +0 -2
- package/dist/collab-transfer-I6O6T3AC.js +0 -2
- package/dist/deploy-3AMFZQ7I.js +0 -3
- package/dist/doctor-DAYHBLCK.js +0 -2
- package/dist/doctor-DAYHBLCK.js.map +0 -1
- package/dist/forms-clear-BFDMRIWW.js +0 -2
- package/dist/forms-create-EWU47AIO.js +0 -2
- package/dist/forms-delete-HJISSH4G.js +0 -2
- package/dist/forms-embed-GSIGC4V7.js +0 -3
- package/dist/forms-export-KLFI4NJ7.js +0 -2
- package/dist/forms-info-BRG5D5D7.js +0 -2
- package/dist/forms-list-GYBKM5YD.js +0 -2
- package/dist/forms-submissions-RKNVL2FS.js +0 -2
- package/dist/login-CG7LSZMB.js +0 -2
- package/dist/login-CG7LSZMB.js.map +0 -1
- package/dist/logout-HGLROFNP.js +0 -2
- package/dist/logs-export-547MGHOL.js +0 -2
- package/dist/logs-search-P52C7PUZ.js +0 -2
- package/dist/monitor-IEQ4UD2H.js +0 -2
- package/dist/monitor-automations-4UNPGIZG.js +0 -2
- package/dist/monitor-pipelines-FVASSAV4.js +0 -2
- package/dist/monitor-sites-GN2CSO6K.js +0 -2
- package/dist/monitor-storage-XBPKQTPJ.js +0 -2
- package/dist/scripts-cancel-NOVNOP4C.js +0 -2
- package/dist/scripts-delete-GDPLFXWI.js +0 -2
- package/dist/scripts-disable-GQCO7Z2O.js +0 -2
- package/dist/scripts-enable-MEC2YFAZ.js +0 -2
- package/dist/scripts-list-CWCKTE6G.js +0 -2
- package/dist/scripts-logs-BFI7ZBMA.js +0 -2
- package/dist/scripts-run-D5WQF7CD.js +0 -2
- package/dist/scripts-status-H3DZSNGH.js +0 -2
- package/dist/scripts-validate-GFEEMXGM.js +0 -2
- package/dist/scripts-watch-YNPV5J7L.js +0 -2
- package/dist/session-TQAYXXL4.js +0 -2
- package/dist/sign-cancel-65ENAT3A.js +0 -2
- package/dist/sign-download-DRG6AEW7.js +0 -2
- package/dist/sign-list-G5SAZIGV.js +0 -2
- package/dist/sign-request-KDWRY6NM.js +0 -2
- package/dist/sign-status-IHMHFX4R.js +0 -2
- package/dist/sign-verify-6GZYRRYD.js +0 -2
- package/dist/sites-analytics-5U7LPRGD.js +0 -2
- package/dist/sites-delete-T5H6QHHE.js +0 -2
- package/dist/sites-deploys-AGHGIVLV.js +0 -2
- package/dist/sites-info-55Y5G46C.js +0 -2
- package/dist/sites-list-AESG52QR.js +0 -2
- package/dist/sites-logs-CLJ35QZF.js +0 -3
- package/dist/sites-open-6FLQLGDU.js +0 -3
- package/dist/sites-purge-3EE6M54Y.js +0 -2
- package/dist/sites-rename-JJPIKOEV.js +0 -2
- package/dist/sites-rollback-LG76J5XE.js +0 -2
- package/dist/sites-unpublish-77EWOZI6.js +0 -2
- package/dist/sites-visibility-E6MDL2R5.js +0 -2
- package/dist/storage-cat-NMDWAEM4.js +0 -2
- package/dist/storage-clean-6S5GP2AR.js +0 -2
- package/dist/storage-cp-XM6KPPDU.js +0 -2
- package/dist/storage-diff-2UTHBORN.js +0 -2
- package/dist/storage-download-6OZCB7M4.js +0 -3
- package/dist/storage-info-ZD6LDRFG.js +0 -2
- package/dist/storage-ls-KE7UDC3I.js +0 -2
- package/dist/storage-ls-KE7UDC3I.js.map +0 -1
- package/dist/storage-mkdir-YR6DI3T6.js +0 -2
- package/dist/storage-mv-3NQNRFPE.js +0 -2
- package/dist/storage-rm-EF36YTVT.js +0 -2
- package/dist/storage-search-73OT4DNB.js +0 -2
- package/dist/storage-share-VK5Z3IRP.js +0 -2
- package/dist/storage-tag-VMF6QLSU.js +0 -2
- package/dist/storage-unshare-NAVNQCKH.js +0 -2
- package/dist/storage-upload-LA2VFTEN.js +0 -2
- package/dist/time-list-4FAFRADD.js +0 -2
- package/dist/time-lock-L4PL43SC.js +0 -2
- package/dist/time-proof-ZOOUFIKS.js +0 -2
- package/dist/time-status-M4QX6GTM.js +0 -2
- package/dist/time-unlock-UPHP5V74.js +0 -2
- package/dist/whoami-2ABU6JQD.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/storage/storage-upload.ts"],"names":["storageUpload","local","remote","options","localPath","path","remotePath","fs","stat","logInfo","spinner","createSpinner","content","formData","blob","result","apiUpload","isJsonMode","logJSON","logSuccess","formatBytes","walk","dir","baseDir","entries","entry","fullPath","relative","ig","isAllowedFile","files","ignore","logWarn","f","chalk","progressBar","cliProgress"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/commands/storage/storage-upload.ts"],"names":["storageUpload","local","remote","options","localPath","path","remotePath","fs","stat","logInfo","spinner","createSpinner","content","formData","blob","result","apiUpload","isJsonMode","logJSON","logSuccess","formatBytes","walk","dir","baseDir","entries","entry","fullPath","relative","ig","isAllowedFile","files","ignore","logWarn","f","chalk","progressBar","cliProgress"],"mappings":"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","file":"storage-upload-HW4QAENK.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiPost, apiUpload } from '../../lib/api/client.js'\nimport { isAllowedFile } from '../../lib/deploy/allowlist.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logWarn, logJSON, logInfo } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\nimport cliProgress from 'cli-progress'\nimport ignore from 'ignore'\n\nexport default async function storageUpload(local: string, remote?: string, options?: { ignore?: string; dryRun?: boolean }): Promise<void> {\n const localPath = path.resolve(local)\n const remotePath = remote || path.basename(localPath)\n\n if (!fs.existsSync(localPath)) {\n console.error(`File not found: ${localPath}`)\n process.exit(1)\n }\n\n const stat = fs.statSync(localPath)\n\n if (stat.isFile()) {\n if (options?.dryRun) {\n logInfo(`[DRY-RUN] Would upload: ${localPath} → ${remotePath}`)\n return\n }\n const spinner = createSpinner(`Uploading ${path.basename(localPath)}...`)\n spinner.start()\n const content = fs.readFileSync(localPath)\n const formData = new FormData()\n const blob = new Blob([content])\n formData.append('file', blob, path.basename(localPath))\n const result = await apiUpload(`/api/v1/storage/upload?path=${encodeURIComponent(remotePath)}`, formData, { authenticated: true })\n spinner.succeed()\n if (isJsonMode()) logJSON(result)\n else logSuccess(`Uploaded ${path.basename(localPath)} (${formatBytes(content.length)})`)\n return\n }\n\n if (stat.isDirectory()) {\n const ig = ignore()\n if (options?.ignore) {\n ig.add(options.ignore)\n }\n ig.add('.DS_Store')\n ig.add('node_modules')\n ig.add('.git')\n\n const files: { relative: string; absolute: string }[] = []\n function walk(dir: string, baseDir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n const relative = path.relative(baseDir, fullPath)\n if (ig.ignores(relative)) continue\n if (entry.isDirectory()) {\n walk(fullPath, baseDir)\n } else if (entry.isFile() && isAllowedFile(entry.name)) {\n files.push({ relative, absolute: fullPath })\n }\n }\n }\n walk(localPath, localPath)\n\n if (files.length === 0) {\n logWarn('No allowed files found to upload')\n return\n }\n\n if (options?.dryRun) {\n logInfo(`[DRY-RUN] Would upload ${files.length} files:`)\n for (const f of files) {\n console.log(chalk.dim(` ${f.relative}`))\n }\n return\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${chalk.hex('#7C4DFF')('▸')} Uploading |${chalk.hex('#7C4DFF')('{bar}')}| {percentage}% | {value}/{total} files`,\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n })\n progressBar.start(files.length, 0)\n\n const formData = new FormData()\n for (const f of files) {\n const content = fs.readFileSync(f.absolute)\n const blob = new Blob([content])\n formData.append('files', blob, f.relative)\n }\n\n const result = await apiUpload(`/api/v1/storage/upload?path=${encodeURIComponent(remotePath)}`, formData, { authenticated: true })\n progressBar.update(files.length)\n progressBar.stop()\n\n if (isJsonMode()) logJSON(result)\n else logSuccess(`Uploaded ${files.length} files to ${remotePath}`)\n }\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {c}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import {a}from'./chunk-THMWE2I6.js';import {d,b}from'./chunk-FZKCZRJZ.js';import'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import m from'chalk';async function r(){let o=((await c("/api/v1/time/list",{authenticated:true})).locked||[]).map(e=>({path:e.path,unlocks:b(e.unlock_at),remaining:e.time_remaining_ms>0?d(e.time_remaining_ms):m.green("unlocked")}));console.log(a(o,[{key:"path",label:"File"},{key:"unlocks",label:"Unlocks"},{key:"remaining",label:"Time Remaining"}]));}export{r as default};//# sourceMappingURL=time-list-HUWDZZ27.js.map
|
|
2
|
+
//# sourceMappingURL=time-list-HUWDZZ27.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/time/time-list.ts"],"names":["timeList","rows","apiGet","l","formatDate","formatCountdown","chalk","renderTable"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/commands/time/time-list.ts"],"names":["timeList","rows","apiGet","l","formatDate","formatCountdown","chalk","renderTable"],"mappings":"mPAWA,eAAOA,CAAAA,EAAiD,CAEtD,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAiC,mBAAA,CAAqB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC7E,MAAA,EAAU,EAAC,EAAG,GAAA,CAAIC,CAAAA,GAAM,CACzC,IAAA,CAAMA,EAAE,IAAA,CACR,OAAA,CAASC,CAAAA,CAAWD,CAAAA,CAAE,SAAS,CAAA,CAC/B,SAAA,CAAWA,CAAAA,CAAE,kBAAoB,CAAA,CAAIE,CAAAA,CAAgBF,CAAAA,CAAE,iBAAiB,CAAA,CAAIG,CAAAA,CAAM,KAAA,CAAM,UAAU,CACpG,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,GAAA,CAAIC,CAAAA,CAAYN,CAAAA,CAAM,CAC5B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACnC,CAAE,GAAA,CAAK,WAAA,CAAa,KAAA,CAAO,gBAAiB,CAC9C,CAAC,CAAC,EACJ","file":"time-list-HUWDZZ27.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatDate, formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface LockedFile {\n path: string\n unlock_at: string\n time_remaining_ms: number\n}\n\nexport default async function timeList(): Promise<void> {\n const data = await apiGet<{ locked: LockedFile[] }>('/api/v1/time/list', { authenticated: true })\n const rows = (data.locked || []).map(l => ({\n path: l.path,\n unlocks: formatDate(l.unlock_at),\n remaining: l.time_remaining_ms > 0 ? formatCountdown(l.time_remaining_ms) : chalk.green('unlocked'),\n }))\n console.log(renderTable(rows, [\n { key: 'path', label: 'File' },\n { key: 'unlocks', label: 'Unlocks' },\n { key: 'remaining', label: 'Time Remaining' },\n ]))\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {f,m,g}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';async function s(i,t){let n=a(`Time-locking ${i} until ${t.until}...`);n.start();let u=await d("/api/v1/time/lock",{path:i,unlock_at:t.until},{authenticated:true});if(n.succeed(),f()){m(u);return}g(`Time-locked until ${t.until}`);}export{s as default};//# sourceMappingURL=time-lock-MZ6C6DMR.js.map
|
|
2
|
+
//# sourceMappingURL=time-lock-MZ6C6DMR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/time/time-lock.ts"],"names":["timeLock","path","options","spinner","createSpinner","result","apiPost","isJsonMode","logJSON","logSuccess"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/commands/time/time-lock.ts"],"names":["timeLock","path","options","spinner","createSpinner","result","apiPost","isJsonMode","logJSON","logSuccess"],"mappings":"gOAKA,eAAOA,CAAAA,CAAgCC,EAAcC,CAAAA,CAA2C,CAC9F,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,aAAA,EAAgBH,CAAI,CAAA,OAAA,EAAUC,CAAAA,CAAQ,KAAK,CAAA,GAAA,CAAK,CAAA,CAC9EC,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,EAAS,MAAMC,CAAAA,CAAgD,mBAAA,CAAqB,CACxF,IAAA,CAAAL,CAAAA,CACA,UAAWC,CAAAA,CAAQ,KACrB,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAE1B,GADAC,CAAAA,CAAQ,OAAA,EAAQ,CACZI,CAAAA,GAAc,CAChBC,CAAAA,CAAQH,CAAM,CAAA,CACd,MACF,CACAI,EAAW,CAAA,kBAAA,EAAqBP,CAAAA,CAAQ,KAAK,CAAA,CAAE,EACjD","file":"time-lock-MZ6C6DMR.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nexport default async function timeLock(path: string, options: { until: string }): Promise<void> {\n const spinner = createSpinner(`Time-locking ${path} until ${options.until}...`)\n spinner.start()\n const result = await apiPost<{ lock_id: string; unlock_at: string }>('/api/v1/time/lock', {\n path,\n unlock_at: options.until,\n }, { authenticated: true })\n spinner.succeed()\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n logSuccess(`Time-locked until ${options.until}`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-PSJQAIDB.js';import {c}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import s from'fs';import p from'path';async function f(o){let t=a("Generating proof...");t.start();let a$1=await c(`/api/v1/time/proof?path=${encodeURIComponent(o)}`,{authenticated:true});t.succeed();let e=p.join(process.cwd(),`${p.basename(o)}.timeproof.json`);s.writeFileSync(e,JSON.stringify({proof:a$1.proof,generated_at:new Date().toISOString()},null,2)),g(`Existence proof saved to ${e}`);}export{f as default};//# sourceMappingURL=time-proof-G6IX5SMS.js.map
|
|
2
|
+
//# sourceMappingURL=time-proof-G6IX5SMS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/time/time-proof.ts"],"names":["timeProof","filePath","spinner","createSpinner","data","apiGet","proofPath","path","fs","logSuccess"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/commands/time/time-proof.ts"],"names":["timeProof","filePath","spinner","createSpinner","data","apiGet","proofPath","path","fs","logSuccess"],"mappings":"kQAMA,eAAOA,CAAAA,CAAiCC,CAAAA,CAAiC,CACvE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,qBAAqB,CAAA,CACnDD,EAAQ,KAAA,EAAM,CACd,IAAME,GAAAA,CAAO,MAAMC,CAAAA,CAA0B,CAAA,wBAAA,EAA2B,kBAAA,CAAmBJ,CAAQ,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC/HC,CAAAA,CAAQ,OAAA,GACR,IAAMI,CAAAA,CAAYC,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAI,CAAG,CAAA,EAAGA,EAAK,QAAA,CAASN,CAAQ,CAAC,CAAA,eAAA,CAAiB,EACtFO,CAAAA,CAAG,aAAA,CAAcF,CAAAA,CAAW,IAAA,CAAK,UAAU,CAAE,KAAA,CAAOF,GAAAA,CAAK,KAAA,CAAO,YAAA,CAAc,IAAI,IAAA,EAAK,CAAE,aAAc,CAAA,CAAG,IAAA,CAAM,CAAC,CAAC,CAAA,CAClHK,CAAAA,CAAW,CAAA,yBAAA,EAA4BH,CAAS,EAAE,EACpD","file":"time-proof-G6IX5SMS.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function timeProof(filePath: string): Promise<void> {\n const spinner = createSpinner('Generating proof...')\n spinner.start()\n const data = await apiGet<{ proof: string }>(`/api/v1/time/proof?path=${encodeURIComponent(filePath)}`, { authenticated: true })\n spinner.succeed()\n const proofPath = path.join(process.cwd(), `${path.basename(filePath)}.timeproof.json`)\n fs.writeFileSync(proofPath, JSON.stringify({ proof: data.proof, generated_at: new Date().toISOString() }, null, 2))\n logSuccess(`Existence proof saved to ${proofPath}`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {c}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import {d}from'./chunk-FZKCZRJZ.js';import {f,m,l}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';import t from'chalk';async function s(e){let i=(await c(`/api/v1/time/status?path=${encodeURIComponent(e)}`,{authenticated:true})).status;if(f()){m(i);return}l(""),l(` ${t.bold(e)}`),l(t.dim(" \u2500\u2500\u2500".repeat(8))),l(` ${t.bold("Locked:")} ${i.locked?t.yellow("yes"):t.green("no")}`),i.unlock_at&&l(` ${t.bold("Unlocks:")} ${i.unlock_at}`),i.time_remaining_ms!==null&&i.time_remaining_ms>0&&l(` ${t.bold("Remaining:")} ${d(i.time_remaining_ms)}`),l(` ${t.bold("Proof:")} ${t.dim(i.proof_hash?.slice(0,16)||"-")}`),l("");}export{s as default};//# sourceMappingURL=time-status-UJ3XY3R5.js.map
|
|
2
|
+
//# sourceMappingURL=time-status-UJ3XY3R5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/time/time-status.ts"],"names":["timeStatus","path","s","apiGet","isJsonMode","logJSON","logRaw","chalk","formatCountdown"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/commands/time/time-status.ts"],"names":["timeStatus","path","s","apiGet","isJsonMode","logJSON","logRaw","chalk","formatCountdown"],"mappings":"yNAaA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA6B,CAEpE,IAAMC,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAmC,CAAA,yBAAA,EAA4B,kBAAA,CAAmBF,CAAI,CAAC,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACtH,MAAA,CAEf,GAAIG,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAC,CAAA,CACT,MACF,CAEAI,CAAAA,CAAO,EAAE,CAAA,CACTA,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAKN,CAAI,CAAC,CAAA,CAAE,CAAA,CAC9BK,CAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CACnCD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,EAAA,EAAKL,CAAAA,CAAE,MAAA,CAASK,CAAAA,CAAM,MAAA,CAAO,KAAK,CAAA,CAAIA,CAAAA,CAAM,KAAA,CAAM,IAAI,CAAC,CAAA,CAAE,CAAA,CACtFL,CAAAA,CAAE,SAAA,EACJI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA,EAAIL,CAAAA,CAAE,SAAS,CAAA,CAAE,CAAA,CAEjDA,CAAAA,CAAE,iBAAA,GAAsB,IAAA,EAAQA,CAAAA,CAAE,iBAAA,CAAoB,CAAA,EACxDI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,YAAY,CAAC,CAAA,CAAA,EAAIC,CAAAA,CAAgBN,CAAAA,CAAE,iBAAiB,CAAC,CAAA,CAAE,CAAA,CAEhFI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,QAAQ,CAAC,CAAA,GAAA,EAAMA,CAAAA,CAAM,GAAA,CAAIL,CAAAA,CAAE,UAAA,EAAY,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,EAAK,GAAG,CAAC,CAAA,CAAE,CAAA,CACpFI,CAAAA,CAAO,EAAE,EACX","file":"time-status-UJ3XY3R5.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface TimeLockStatus {\n locked: boolean\n unlock_at: string | null\n time_remaining_ms: number | null\n proof_hash: string\n}\n\nexport default async function timeStatus(path: string): Promise<void> {\n const data = await apiGet<{ status: TimeLockStatus }>(`/api/v1/time/status?path=${encodeURIComponent(path)}`, { authenticated: true })\n const s = data.status\n\n if (isJsonMode()) {\n logJSON(s)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(path)}`)\n logRaw(chalk.dim(' ───'.repeat(8)))\n logRaw(` ${chalk.bold('Locked:')} ${s.locked ? chalk.yellow('yes') : chalk.green('no')}`)\n if (s.unlock_at) {\n logRaw(` ${chalk.bold('Unlocks:')} ${s.unlock_at}`)\n }\n if (s.time_remaining_ms !== null && s.time_remaining_ms > 0) {\n logRaw(` ${chalk.bold('Remaining:')} ${formatCountdown(s.time_remaining_ms)}`)\n }\n logRaw(` ${chalk.bold('Proof:')} ${chalk.dim(s.proof_hash?.slice(0, 16) || '-')}`)\n logRaw('')\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g,h}from'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';async function i(t){let o=a(`Attempting to unlock ${t}...`);o.start();try{(await d("/api/v1/time/unlock",{path:t},{authenticated:!0})).unlocked?(o.succeed(),g(`Unlocked ${t}`)):(o.fail(),h("Cannot unlock yet \u2014 lock time has not passed"),process.exit(1));}catch{throw o.fail(),new Error("Cannot unlock yet \u2014 lock time has not passed")}}export{i as default};//# sourceMappingURL=time-unlock-3TUR2KVC.js.map
|
|
2
|
+
//# sourceMappingURL=time-unlock-3TUR2KVC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/time/time-unlock.ts"],"names":["timeUnlock","path","spinner","createSpinner","apiPost","logSuccess","logError"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/commands/time/time-unlock.ts"],"names":["timeUnlock","path","spinner","createSpinner","apiPost","logSuccess","logError"],"mappings":"8NAIA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA6B,CACpE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,CAAA,qBAAA,EAAwBF,CAAI,CAAA,GAAA,CAAK,CAAA,CAC/DC,CAAAA,CAAQ,KAAA,EAAM,CACd,GAAI,CAAA,CACa,MAAME,CAAAA,CAA+B,qBAAA,CAAuB,CAAE,IAAA,CAAAH,CAAK,CAAA,CAAG,CAAE,aAAA,CAAe,CAAA,CAAK,CAAC,CAAA,EACjG,QAAA,EACTC,EAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,SAAA,EAAYJ,CAAI,CAAA,CAAE,CAAA,GAE7BC,CAAAA,CAAQ,IAAA,EAAK,CACbI,CAAAA,CAAS,mDAA8C,CAAA,CACvD,OAAA,CAAQ,KAAK,CAAC,CAAA,EAElB,CAAA,KAAQ,CACN,MAAAJ,CAAAA,CAAQ,IAAA,EAAK,CACP,IAAI,KAAA,CAAM,mDAA8C,CAChE,CACF","file":"time-unlock-3TUR2KVC.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logError } from '../../lib/output/logger.js'\n\nexport default async function timeUnlock(path: string): Promise<void> {\n const spinner = createSpinner(`Attempting to unlock ${path}...`)\n spinner.start()\n try {\n const result = await apiPost<{ unlocked: boolean }>('/api/v1/time/unlock', { path }, { authenticated: true })\n if (result.unlocked) {\n spinner.succeed()\n logSuccess(`Unlocked ${path}`)\n } else {\n spinner.fail()\n logError('Cannot unlock yet — lock time has not passed')\n process.exit(1)\n }\n } catch {\n spinner.fail()\n throw new Error('Cannot unlock yet — lock time has not passed')\n }\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//# sourceMappingURL=update-
|
|
1
|
+
import {a}from'./chunk-PSJQAIDB.js';import'./chunk-THMWE2I6.js';import {j,g,h}from'./chunk-QT7R3AXE.js';import {execSync}from'child_process';async function d(){let o=a("Checking for updates...");o.start();try{let e=execSync("npm view @squidcloud/cli version",{encoding:"utf-8"}).trim(),r={version:"1.0.0"};if(o.succeed(),e>r.version){j(`New version available: ${e} (current: ${r.version})`);let n=a("Updating...");n.start(),execSync("npm install -g @squidcloud/cli",{stdio:"pipe"}),n.succeed(),g(`Updated to v${e}`);}else g(`Already up to date (v${r.version})`);}catch{o.fail(),h("Failed to check for updates");}}export{d as default};//# sourceMappingURL=update-DOHW47PB.js.map
|
|
2
|
+
//# sourceMappingURL=update-DOHW47PB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/util/update.ts"],"names":["update","spinner","createSpinner","result","execSync","pkg","logInfo","installSpinner","logSuccess","logError"],"mappings":"6IAIA,eAAOA,CAAAA,EAA+C,CACpD,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,yBAAyB,CAAA,CACvDD,EAAQ,KAAA,EAAM,CACd,GAAI,CACF,IAAME,EAASC,QAAAA,CAAS,kCAAA,CAAoC,CAAE,QAAA,CAAU,OAAQ,CAAC,CAAA,CAAE,MAAK,CAClFC,CAAAA,CAAM,CAAE,OAAA,CAAS,OAAQ,EAE/B,GADAJ,CAAAA,CAAQ,SAAQ,CACZE,CAAAA,CAASE,EAAI,OAAA,CAAS,CACxBC,EAAQ,CAAA,uBAAA,EAA0BH,CAAM,CAAA,WAAA,EAAcE,CAAAA,CAAI,OAAO,CAAA,CAAA,CAAG,CAAA,CACpE,IAAME,CAAAA,CAAiBL,CAAAA,CAAc,aAAa,CAAA,CAClDK,CAAAA,CAAe,KAAA,EAAM,CACrBH,SAAS,gCAAA,CAAkC,CAAE,MAAO,MAAO,CAAC,EAC5DG,CAAAA,CAAe,OAAA,EAAQ,CACvBC,CAAAA,CAAW,eAAeL,CAAM,CAAA,CAAE,EACpC,CAAA,KACEK,CAAAA,CAAW,wBAAwBH,CAAAA,CAAI,OAAO,GAAG,EAErD,CAAA,KAAc,CACZJ,CAAAA,CAAQ,IAAA,GACRQ,CAAAA,CAAS,6BAA6B,EACxC,CACF","file":"update-
|
|
1
|
+
{"version":3,"sources":["../src/commands/util/update.ts"],"names":["update","spinner","createSpinner","result","execSync","pkg","logInfo","installSpinner","logSuccess","logError"],"mappings":"6IAIA,eAAOA,CAAAA,EAA+C,CACpD,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,yBAAyB,CAAA,CACvDD,EAAQ,KAAA,EAAM,CACd,GAAI,CACF,IAAME,EAASC,QAAAA,CAAS,kCAAA,CAAoC,CAAE,QAAA,CAAU,OAAQ,CAAC,CAAA,CAAE,MAAK,CAClFC,CAAAA,CAAM,CAAE,OAAA,CAAS,OAAQ,EAE/B,GADAJ,CAAAA,CAAQ,SAAQ,CACZE,CAAAA,CAASE,EAAI,OAAA,CAAS,CACxBC,EAAQ,CAAA,uBAAA,EAA0BH,CAAM,CAAA,WAAA,EAAcE,CAAAA,CAAI,OAAO,CAAA,CAAA,CAAG,CAAA,CACpE,IAAME,CAAAA,CAAiBL,CAAAA,CAAc,aAAa,CAAA,CAClDK,CAAAA,CAAe,KAAA,EAAM,CACrBH,SAAS,gCAAA,CAAkC,CAAE,MAAO,MAAO,CAAC,EAC5DG,CAAAA,CAAe,OAAA,EAAQ,CACvBC,CAAAA,CAAW,eAAeL,CAAM,CAAA,CAAE,EACpC,CAAA,KACEK,CAAAA,CAAW,wBAAwBH,CAAAA,CAAI,OAAO,GAAG,EAErD,CAAA,KAAc,CACZJ,CAAAA,CAAQ,IAAA,GACRQ,CAAAA,CAAS,6BAA6B,EACxC,CACF","file":"update-DOHW47PB.js","sourcesContent":["import { execSync } from 'node:child_process'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logError, logInfo } from '../../lib/output/logger.js'\n\nexport default async function update(): Promise<void> {\n const spinner = createSpinner('Checking for updates...')\n spinner.start()\n try {\n const result = execSync('npm view @squidcloud/cli version', { encoding: 'utf-8' }).trim()\n const pkg = { version: '1.0.0' }\n spinner.succeed()\n if (result > pkg.version) {\n logInfo(`New version available: ${result} (current: ${pkg.version})`)\n const installSpinner = createSpinner('Updating...')\n installSpinner.start()\n execSync('npm install -g @squidcloud/cli', { stdio: 'pipe' })\n installSpinner.succeed()\n logSuccess(`Updated to v${result}`)\n } else {\n logSuccess(`Already up to date (v${pkg.version})`)\n }\n } catch (err) {\n spinner.fail()\n logError('Failed to check for updates')\n }\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b as b$1}from'./chunk-THMWE2I6.js';import {d as d$1}from'./chunk-FZKCZRJZ.js';import {h,f,m}from'./chunk-QT7R3AXE.js';import {b,g}from'./chunk-2RMLR54M.js';import o from'chalk';async function d(){let e=await b();if(e||(h("Not authenticated"),process.exit(1)),f()){m({authenticated:true,user:e.user,session_id:e.session_id,expires_at:e.expires_at});return}let m$1=g(e),u=[{key:o.bold("Email"),value:e.user.email},{key:o.bold("Username"),value:e.user.username},{key:o.bold("Plan"),value:o.hex("#7C4DFF")(e.user.plan)},{key:o.bold("Session Expires"),value:d$1(m$1)}];console.log(b$1(u,[{key:"key",label:"Attribute"},{key:"value",label:"Value"}]));}export{d as default};//# sourceMappingURL=whoami-C4LPZU6R.js.map
|
|
2
|
+
//# sourceMappingURL=whoami-C4LPZU6R.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/auth/whoami.ts"],"names":["whoami","session","loadSession","logError","isJsonMode","logJSON","timeLeft","getTimeUntilExpiry","rows","chalk","formatCountdown","renderCompactTable"],"mappings":"yLAOA,eAAOA,CAAAA,EAA+C,CACpD,IAAMC,CAAAA,CAAU,MAAMC,CAAAA,EAAY,CAMlC,GALKD,CAAAA,GACHE,EAAS,mBAAmB,CAAA,CAC5B,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGZC,CAAAA,EAAW,CAAG,CAChBC,
|
|
1
|
+
{"version":3,"sources":["../src/commands/auth/whoami.ts"],"names":["whoami","session","loadSession","logError","isJsonMode","logJSON","timeLeft","getTimeUntilExpiry","rows","chalk","formatCountdown","renderCompactTable"],"mappings":"yLAOA,eAAOA,CAAAA,EAA+C,CACpD,IAAMC,CAAAA,CAAU,MAAMC,CAAAA,EAAY,CAMlC,GALKD,CAAAA,GACHE,EAAS,mBAAmB,CAAA,CAC5B,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAGZC,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQ,CACN,aAAA,CAAe,IAAA,CACf,IAAA,CAAMJ,EAAQ,IAAA,CACd,UAAA,CAAYA,CAAAA,CAAQ,UAAA,CACpB,UAAA,CAAYA,CAAAA,CAAQ,UACtB,CAAC,CAAA,CACD,MACF,CAEA,IAAMK,GAAAA,CAAWC,CAAAA,CAAmBN,CAAO,CAAA,CACrCO,CAAAA,CAAO,CACX,CAAE,GAAA,CAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAG,KAAA,CAAOR,CAAAA,CAAQ,IAAA,CAAK,KAAM,CAAA,CACtD,CAAE,GAAA,CAAKQ,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAG,KAAA,CAAOR,CAAAA,CAAQ,IAAA,CAAK,QAAS,CAAA,CAC5D,CAAE,GAAA,CAAKQ,CAAAA,CAAM,IAAA,CAAK,MAAM,CAAA,CAAG,KAAA,CAAOA,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAER,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAE,CAAA,CAC1E,CAAE,GAAA,CAAKQ,CAAAA,CAAM,KAAK,iBAAiB,CAAA,CAAG,KAAA,CAAOC,GAAAA,CAAgBJ,GAAQ,CAAE,CACzE,CAAA,CAEA,OAAA,CAAQ,GAAA,CAAIK,GAAAA,CAAmBH,CAAAA,CAAM,CACnC,CAAE,IAAK,KAAA,CAAO,KAAA,CAAO,WAAY,CAAA,CACjC,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CACjC,CAAC,CAAC,EACJ","file":"whoami-C4LPZU6R.js","sourcesContent":["import { loadSession, getTimeUntilExpiry } from '../../lib/auth/session.js'\nimport { logError, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatCountdown } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\nimport { renderCompactTable } from '../../lib/output/table.js'\n\nexport default async function whoami(): Promise<void> {\n const session = await loadSession()\n if (!session) {\n logError('Not authenticated')\n process.exit(1)\n }\n\n if (isJsonMode()) {\n logJSON({\n authenticated: true,\n user: session.user,\n session_id: session.session_id,\n expires_at: session.expires_at,\n })\n return\n }\n\n const timeLeft = getTimeUntilExpiry(session)\n const rows = [\n { key: chalk.bold('Email'), value: session.user.email },\n { key: chalk.bold('Username'), value: session.user.username },\n { key: chalk.bold('Plan'), value: chalk.hex('#7C4DFF')(session.user.plan) },\n { key: chalk.bold('Session Expires'), value: formatCountdown(timeLeft) },\n ]\n\n console.log(renderCompactTable(rows, [\n { key: 'key', label: 'Attribute' },\n { key: 'value', label: 'Value' },\n ]))\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "squidcloudctl",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.6",
|
|
4
4
|
"description": "SquidCloud CLI — deploy, storage, sites, pipelines, and more",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -31,8 +31,6 @@
|
|
|
31
31
|
"clipboardy": "^4.0.0",
|
|
32
32
|
"commander": "^13.1.0",
|
|
33
33
|
"conf": "^13.1.0",
|
|
34
|
-
"date-fns": "^4.1.0",
|
|
35
|
-
"envinfo": "^7.14.0",
|
|
36
34
|
"figlet": "^1.8.0",
|
|
37
35
|
"gradient-string": "^3.0.0",
|
|
38
36
|
"ignore": "^7.0.3",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import {o}from'./chunk-E2I4VVR5.js';import a from'inquirer';async function c(e$1){if(e$1.all){let{confirm:s}=await a.prompt([{type:"confirm",name:"confirm",message:"Revoke ALL active sessions? This will log out every device.",default:false}]);if(!s)return;let t=b("Revoking all sessions...");t.start(),await e("/api/auth/ssp/revoke-all",{},{authenticated:true}),await o(),t.succeed(),g("All sessions revoked");return}if(e$1.session){let s=b(`Revoking session ${e$1.session}...`);s.start(),await e("/api/auth/ssp/revoke",{session_id:e$1.session},{authenticated:true}),s.succeed(),g(`Session ${e$1.session} revoked`);return}console.error("Specify --session <id> or --all"),process.exit(1);}export{c as default};//# sourceMappingURL=auth-revoke-B2JBJB36.js.map
|
|
2
|
-
//# sourceMappingURL=auth-revoke-B2JBJB36.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {b,c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.js';async function s(){let i=((await d("/api/auth/ssp/sessions",{authenticated:true})).sessions||[]).map(e=>({id:e.id.slice(0,8)+"...",device:e.device_fingerprint.slice(0,12),platform:e.platform||"unknown",last_seen:c(e.last_seen),created:b(e.created_at),current:e.current?"\u25CF":""}));console.log(a(i,[{key:"id",label:"Session ID"},{key:"device",label:"Fingerprint"},{key:"platform",label:"Platform"},{key:"last_seen",label:"Last Seen"},{key:"created",label:"Created"},{key:"current",label:""}]));}export{s as default};//# sourceMappingURL=auth-sessions-ZPMHJBIJ.js.map
|
|
2
|
-
//# sourceMappingURL=auth-sessions-ZPMHJBIJ.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-G4JU7IUC.js';import {h,f,m as m$1,l as l$1}from'./chunk-QT7R3AXE.js';import {m,l,r}from'./chunk-E2I4VVR5.js';import e from'chalk';async function u(){let i=await m();i||(h("Not authenticated"),process.exit(1));let f$1=l(),t=i.device_fingerprint===f$1,o=r(i),s=o<=120*1e3;if(f()){m$1({authenticated:true,session_id:i.session_id,expires_in_ms:o,fingerprint_match:t,needs_refresh:s,user:i.user});return}l$1(""),l$1(`${e.bold("Session Health")}`),l$1(`${e.dim("\u2500\u2500\u2500".repeat(15))}`),l$1(` ${e.bold("Session ID:")} ${e.dim(i.session_id)}`),l$1(` ${e.bold("User:")} ${i.user.email} (${i.user.username})`),l$1(` ${e.bold("Plan:")} ${e.hex("#7C4DFF")(i.user.plan)}`),l$1(` ${e.bold("Expires:")} ${o>0?d(o):e.red("expired")}`),l$1(` ${e.bold("Fingerprint:")} ${t?e.green("\u2713 match"):e.red("\u2717 mismatch")}`),l$1(` ${e.bold("Refresh:")} ${s?e.yellow("needed soon"):e.green("ok")}`),l$1("");}export{u as default};//# sourceMappingURL=auth-status-BZGX7ZXN.js.map
|
|
2
|
-
//# sourceMappingURL=auth-status-BZGX7ZXN.js.map
|
package/dist/chunk-E2I4VVR5.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import s from'os';import S from'path';import a,{existsSync,readFileSync}from'fs';import {concatBytes,randomBytes}from'@noble/hashes/utils';import {sha256}from'@noble/hashes/sha256';import {hkdf}from'@noble/hashes/hkdf';import {gcm}from'@noble/ciphers/aes';import {utils,getPublicKey,verify}from'@noble/ed25519';import {x25519}from'@noble/curves/ed25519.js';import {sha512}from'@noble/hashes/sha512';import {hmac}from'@noble/hashes/hmac';import {blake3}from'@noble/hashes/blake3';import {pbkdf2Sync,createHash}from'crypto';utils.sha512Sync=(...t)=>sha512(concatBytes(...t));var I="squidcloud-session-v1";function ot(){let t=utils.randomPrivateKey();return {pub:getPublicKey(t),priv:t}}function st(){return randomBytes(32)}function at(t,r){let e=Buffer.from(r.slice(0,32).padEnd(32,"\0"));return pbkdf2Sync(t,e,1e5,32,"sha512")}function ct(t,r,e,n){let i=new Uint8Array(t.length+r.length+e.length+8);i.set(t,0),i.set(r,t.length),i.set(e,t.length+r.length);let o=new Uint8Array(8);return new DataView(o.buffer).setBigUint64(0,BigInt(n),false),i.set(o,t.length+r.length+e.length),blake3(i)}function ut(t,r){return x25519.getSharedSecret(r,t)}function pt(t,r,e){let n=new Uint8Array(r.length+e.length);return n.set(r,0),n.set(e,r.length),hkdf(sha256,t,n,I,32)}function mt(t,r,e,n){let i=new Uint8Array(t.length+e.length);i.set(t,0),i.set(e,t.length);let m=gcm(n,r).decrypt(i);return JSON.parse(new TextDecoder().decode(m))}function ft(t,r,e){return verify(t,r,e)}function yt(t,r){return Buffer.from(hmac(sha256,t,r)).toString("hex")}function c(t){return Buffer.from(t).toString("hex")}function f(t){return new Uint8Array(Buffer.from(t,"hex"))}var J=["/etc/machine-id","/var/lib/dbus/machine-id","/etc/hostid"];function L(){for(let r of J)try{if(existsSync(r))return readFileSync(r,"utf-8").trim()}catch{continue}return createHash("sha256").update(s.hostname()+s.arch()+s.platform()).digest("hex")}function l(){let e=[L(),s.hostname(),s.platform(),s.arch(),s.release()].join(":");return c(blake3(e))}var y=S.join(s.homedir(),".squidcloud"),u=S.join(y,".session");function x(){let t=l(),r=new TextEncoder().encode(t);return hkdf(sha256,r,new Uint8Array(32),"squidcloud-fallback-v1",32)}async function A(t){let r=x(),e=randomBytes(12),n=new TextEncoder().encode(t),o=gcm(r,e).encrypt(n);a.existsSync(y)||a.mkdirSync(y,{recursive:true,mode:448});let m={iv:c(e),data:c(o)};a.writeFileSync(u,JSON.stringify(m),{mode:384,encoding:"utf-8"});}async function U(){try{if(!a.existsSync(u))return null;let t=a.readFileSync(u,"utf-8"),{iv:r,data:e}=JSON.parse(t),n=x(),o=gcm(n,f(r)).decrypt(f(e));return new TextDecoder().decode(o)}catch{return null}}async function p(){try{a.existsSync(u)&&a.unlinkSync(u);}catch{}}async function It(){try{let t=await U();if(!t)return null;let r=JSON.parse(t);return !r.session_id||!r.access_token?(await p(),null):r}catch{return await p(),null}}async function Et(t){await A(JSON.stringify(t));}async function Ht(){await p();}function Kt(t){return Date.now()>=t.expires_at}function Ot(t){return t.expires_at-Date.now()<=12e4}function Jt(t){return t.expires_at-Date.now()}export{ot as a,st as b,at as c,ct as d,ut as e,pt as f,mt as g,ft as h,yt as i,c as j,f as k,l,It as m,Et as n,Ht as o,Kt as p,Ot as q,Jt as r};//# sourceMappingURL=chunk-E2I4VVR5.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-E2I4VVR5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/crypto/ssp.ts","../src/lib/auth/fingerprint.ts","../src/lib/auth/keychain.ts","../src/lib/auth/session.ts"],"names":["edUtils","msgs","sha512","concatBytes","HKDF_INFO","generateKeypair","priv","getPublicKey","generateNonce","randomBytes","hashPassword","password","email","salt","pbkdf2Sync","computeSignPayload","clientNonce","serverNonce","clientPub","timestamp","payload","tsBuf","blake3","deriveSharedSecret","pub","x25519","deriveEncryptionKey","ecdhSecret","hkdf","sha256","decryptSession","encrypted","iv","tag","key","combined","plaintext","gcm","verifyServerSignature","signature","serverPub","verify","computeHMAC","data","hmac","bytesToHex","buf","hexToBytes","hex","MACHINE_ID_PATHS","getMachineId","p","existsSync","readFileSync","createHash","os","computeDeviceFingerprint","FALLBACK_DIR","path","FALLBACK_FILE","getFallbackKey","fingerprint","ikm","storeSession","sessionJson","fs","getSession","raw","decrypted","deleteSession","loadSession","session","saveSession","clearSession","isSessionExpired","shouldRefreshToken","getTimeUntilExpiry"],"mappings":"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","file":"chunk-E2I4VVR5.js","sourcesContent":["import { getPublicKey, sign, verify, utils as edUtils } from '@noble/ed25519'\nimport { x25519 } from '@noble/curves/ed25519.js'\nimport { sha256 } from '@noble/hashes/sha256'\nimport { sha512 } from '@noble/hashes/sha512'\nimport { hmac } from '@noble/hashes/hmac'\nimport { hkdf } from '@noble/hashes/hkdf'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { randomBytes, concatBytes } from '@noble/hashes/utils'\nimport { gcm } from '@noble/ciphers/aes'\nimport { pbkdf2Sync } from 'node:crypto'\nimport { hostname, platform, arch } from 'node:os'\n\nedUtils.sha512Sync = (...msgs: Uint8Array[]) => sha512(concatBytes(...msgs))\n\nconst HKDF_INFO = 'squidcloud-session-v1'\n\nexport interface SSPHello {\n email: string\n password_proof: string\n client_ephemeral_pub: string\n client_nonce: string\n device_fingerprint: string\n timestamp: number\n}\n\nexport interface SSPResponse {\n server_nonce: string\n server_ephemeral_pub: string\n server_signature: string\n encrypted_session: string\n session_iv: string\n session_tag: string\n}\n\nexport interface SquidSession {\n session_id: string\n access_token: string\n refresh_token: string\n refresh_token_id: string\n device_fingerprint: string\n issued_at: number\n expires_at: number\n user: {\n id: string\n email: string\n username: string\n plan: 'free' | 'pro' | 'team'\n }\n}\n\nexport function generateKeypair(): { pub: Uint8Array; priv: Uint8Array } {\n const priv = edUtils.randomPrivateKey()\n const pub = getPublicKey(priv)\n return { pub, priv }\n}\n\nexport function generateNonce(): Uint8Array {\n return randomBytes(32)\n}\n\nexport function hashPassword(password: string, email: string): Buffer {\n const salt = Buffer.from(email.slice(0, 32).padEnd(32, '\\x00'))\n return pbkdf2Sync(password, salt, 100000, 32, 'sha512')\n}\n\nexport function computeDeviceFingerprint(machineId: string): string {\n const data = `${machineId}:${hostname()}:${platform()}:${arch()}`\n return Buffer.from(blake3(data)).toString('hex')\n}\n\nexport function computeSignPayload(clientNonce: Uint8Array, serverNonce: Uint8Array, clientPub: Uint8Array, timestamp: number): Uint8Array {\n const payload = new Uint8Array(clientNonce.length + serverNonce.length + clientPub.length + 8)\n payload.set(clientNonce, 0)\n payload.set(serverNonce, clientNonce.length)\n payload.set(clientPub, clientNonce.length + serverNonce.length)\n const tsBuf = new Uint8Array(8)\n new DataView(tsBuf.buffer).setBigUint64(0, BigInt(timestamp), false)\n payload.set(tsBuf, clientNonce.length + serverNonce.length + clientPub.length)\n return blake3(payload)\n}\n\nexport function deriveSharedSecret(pub: Uint8Array, priv: Uint8Array): Uint8Array {\n return x25519.getSharedSecret(priv, pub)\n}\n\nexport function deriveEncryptionKey(ecdhSecret: Uint8Array, clientNonce: Uint8Array, serverNonce: Uint8Array): Uint8Array {\n const salt = new Uint8Array(clientNonce.length + serverNonce.length)\n salt.set(clientNonce, 0)\n salt.set(serverNonce, clientNonce.length)\n return hkdf(sha256, ecdhSecret, salt, HKDF_INFO, 32)\n}\n\nexport function encryptSession(session: SquidSession, key: Uint8Array): { ciphertext: Uint8Array; iv: Uint8Array; tag: Uint8Array } {\n const iv = randomBytes(12)\n const plaintext = new TextEncoder().encode(JSON.stringify(session))\n const aes = gcm(key, iv)\n const encrypted = aes.encrypt(plaintext)\n const ciphertext = encrypted.slice(0, -16)\n const tag = encrypted.slice(-16)\n return { ciphertext, iv, tag }\n}\n\nexport function decryptSession(encrypted: Uint8Array, iv: Uint8Array, tag: Uint8Array, key: Uint8Array): SquidSession {\n const combined = new Uint8Array(encrypted.length + tag.length)\n combined.set(encrypted, 0)\n combined.set(tag, encrypted.length)\n const aes = gcm(key, iv)\n const plaintext = aes.decrypt(combined)\n return JSON.parse(new TextDecoder().decode(plaintext)) as SquidSession\n}\n\nexport function verifyServerSignature(signature: Uint8Array, payload: Uint8Array, serverPub: Uint8Array): Promise<boolean> {\n return verify(signature, payload, serverPub)\n}\n\nexport function signPayload(priv: Uint8Array, payload: Uint8Array): Promise<Uint8Array> {\n return sign(payload, priv)\n}\n\nexport function computeHMAC(key: Uint8Array, data: string): string {\n return Buffer.from(hmac(sha256, key, data)).toString('hex')\n}\n\nexport function bytesToHex(buf: Uint8Array): string {\n return Buffer.from(buf).toString('hex')\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n return new Uint8Array(Buffer.from(hex, 'hex'))\n}\n","import { createHash, randomBytes } from 'node:crypto'\nimport os from 'node:os'\nimport { readFileSync, existsSync } from 'node:fs'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { bytesToHex } from '../crypto/ssp.js'\n\nconst MACHINE_ID_PATHS = [\n '/etc/machine-id',\n '/var/lib/dbus/machine-id',\n '/etc/hostid',\n]\n\nfunction getMachineId(): string {\n for (const p of MACHINE_ID_PATHS) {\n try {\n if (existsSync(p)) {\n return readFileSync(p, 'utf-8').trim()\n }\n } catch {\n continue\n }\n }\n const h = createHash('sha256').update(os.hostname() + os.arch() + os.platform()).digest('hex')\n return h\n}\n\nexport function computeDeviceFingerprint(): string {\n const machineId = getMachineId()\n const components = [\n machineId,\n os.hostname(),\n os.platform(),\n os.arch(),\n os.release(),\n ]\n const data = components.join(':')\n return bytesToHex(blake3(data))\n}\n\nexport function generateDeviceId(): string {\n return randomBytes(32).toString('hex')\n}\n","import os from 'node:os'\nimport path from 'node:path'\nimport fs from 'node:fs'\nimport { randomBytes } from '@noble/hashes/utils'\nimport { sha256 } from '@noble/hashes/sha256'\nimport { hkdf } from '@noble/hashes/hkdf'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { gcm } from '@noble/ciphers/aes'\nimport { bytesToHex, hexToBytes } from '../crypto/ssp.js'\nimport { computeDeviceFingerprint } from './fingerprint.js'\n\nconst FALLBACK_DIR = path.join(os.homedir(), '.squidcloud')\nconst FALLBACK_FILE = path.join(FALLBACK_DIR, '.session')\n\nfunction getFallbackKey(): Uint8Array {\n const fingerprint = computeDeviceFingerprint()\n const ikm = new TextEncoder().encode(fingerprint)\n return hkdf(sha256, ikm, new Uint8Array(32), 'squidcloud-fallback-v1', 32)\n}\n\nexport async function storeSession(sessionJson: string): Promise<void> {\n const key = getFallbackKey()\n const iv = randomBytes(12)\n const plaintext = new TextEncoder().encode(sessionJson)\n const aes = gcm(key, iv)\n const encrypted = aes.encrypt(plaintext)\n if (!fs.existsSync(FALLBACK_DIR)) {\n fs.mkdirSync(FALLBACK_DIR, { recursive: true, mode: 0o700 })\n }\n const payload = {\n iv: bytesToHex(iv),\n data: bytesToHex(encrypted),\n }\n fs.writeFileSync(FALLBACK_FILE, JSON.stringify(payload), { mode: 0o600, encoding: 'utf-8' })\n}\n\nexport async function getSession(): Promise<string | null> {\n try {\n if (!fs.existsSync(FALLBACK_FILE)) return null\n const raw = fs.readFileSync(FALLBACK_FILE, 'utf-8')\n const { iv, data } = JSON.parse(raw) as { iv: string; data: string }\n const key = getFallbackKey()\n const aes = gcm(key, hexToBytes(iv))\n const decrypted = aes.decrypt(hexToBytes(data))\n return new TextDecoder().decode(decrypted)\n } catch {\n return null\n }\n}\n\nexport async function deleteSession(): Promise<void> {\n try {\n if (fs.existsSync(FALLBACK_FILE)) {\n fs.unlinkSync(FALLBACK_FILE)\n }\n } catch {\n // ignore\n }\n}\n","import { SquidSession } from '../crypto/ssp.js'\nimport { storeSession, getSession, deleteSession } from './keychain.js'\n\nexport async function loadSession(): Promise<SquidSession | null> {\n try {\n const raw = await getSession()\n if (!raw) return null\n const session = JSON.parse(raw) as SquidSession\n if (!session.session_id || !session.access_token) {\n await deleteSession()\n return null\n }\n return session\n } catch {\n await deleteSession()\n return null\n }\n}\n\nexport async function saveSession(session: SquidSession): Promise<void> {\n await storeSession(JSON.stringify(session))\n}\n\nexport async function clearSession(): Promise<void> {\n await deleteSession()\n}\n\nexport function isSessionExpired(session: SquidSession): boolean {\n return Date.now() >= session.expires_at\n}\n\nexport function shouldRefreshToken(session: SquidSession): boolean {\n const twoMinutes = 2 * 60 * 1000\n return (session.expires_at - Date.now()) <= twoMinutes\n}\n\nexport function getTimeUntilExpiry(session: SquidSession): number {\n return session.expires_at - Date.now()\n}\n"]}
|
package/dist/chunk-FYFPDKJM.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
package/dist/chunk-G4JU7IUC.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import e from'chalk';import {format,formatDistanceToNow}from'date-fns';function c(t){if(t===0)return "0 B";let r=["B","KB","MB","GB","TB"],o=1024,n=Math.floor(Math.log(t)/Math.log(o));return `${(t/Math.pow(o,n)).toFixed(n>0?1:0)} ${r[n]}`}function m(t){let r=typeof t=="string"?new Date(t):t;return format(r,"MMM d, yyyy HH:mm")}function g(t){let r=typeof t=="string"?new Date(t):t;return formatDistanceToNow(r,{addSuffix:true})}function $(t){if(t<=0)return e.red("expired");let r=Math.floor(t/36e5),o=Math.floor(t%36e5/6e4),n=Math.floor(t%6e4/1e3);return r>0?`${r}h ${o}m ${n}s`:o>0?`${o}m ${n}s`:`${n}s`}export{c as a,m as b,g as c,$ as d};//# sourceMappingURL=chunk-G4JU7IUC.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-G4JU7IUC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils/format.ts"],"names":["formatBytes","bytes","units","k","i","formatDate","date","d","dateFnsFormat","formatRelative","formatDistanceToNow","formatCountdown","ms","chalk","hours","minutes","seconds"],"mappings":"uEAGO,SAASA,EAAYC,CAAAA,CAAuB,CACjD,GAAIA,CAAAA,GAAU,EAAG,OAAO,KAAA,CACxB,IAAMC,CAAAA,CAAQ,CAAC,GAAA,CAAK,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAI,CAAA,CACpCC,CAAAA,CAAI,IAAA,CACJC,CAAAA,CAAI,KAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAIH,CAAK,EAAI,IAAA,CAAK,GAAA,CAAIE,CAAC,CAAC,EAElD,OAAO,CAAA,EAAA,CADOF,CAAAA,CAAQ,IAAA,CAAK,IAAIE,CAAAA,CAAGC,CAAC,CAAA,EACnB,OAAA,CAAQA,EAAI,CAAA,CAAI,CAAA,CAAI,CAAC,CAAC,IAAIF,CAAAA,CAAME,CAAC,CAAC,CAAA,CACpD,CAUO,SAASC,CAAAA,CAAWC,CAAAA,CAA6B,CACtD,IAAMC,CAAAA,CAAI,OAAOD,CAAAA,EAAS,QAAA,CAAW,IAAI,IAAA,CAAKA,CAAI,CAAA,CAAIA,CAAAA,CACtD,OAAOE,MAAAA,CAAcD,CAAAA,CAAG,mBAAmB,CAC7C,CAEO,SAASE,CAAAA,CAAeH,CAAAA,CAA6B,CAC1D,IAAMC,CAAAA,CAAI,OAAOD,CAAAA,EAAS,QAAA,CAAW,IAAI,IAAA,CAAKA,CAAI,CAAA,CAAIA,CAAAA,CACtD,OAAOI,mBAAAA,CAAoBH,CAAAA,CAAG,CAAE,SAAA,CAAW,IAAK,CAAC,CACnD,CAEO,SAASI,EAAgBC,CAAAA,CAAoB,CAClD,GAAIA,CAAAA,EAAM,EAAG,OAAOC,CAAAA,CAAM,GAAA,CAAI,SAAS,EACvC,IAAMC,CAAAA,CAAQ,IAAA,CAAK,KAAA,CAAMF,EAAK,IAAO,CAAA,CAC/BG,CAAAA,CAAU,IAAA,CAAK,MAAOH,CAAAA,CAAK,IAAA,CAAW,GAAK,CAAA,CAC3CI,EAAU,IAAA,CAAK,KAAA,CAAOJ,CAAAA,CAAK,GAAA,CAAS,GAAI,CAAA,CAC9C,OAAIE,CAAAA,CAAQ,CAAA,CAAU,GAAGA,CAAK,CAAA,EAAA,EAAKC,CAAO,CAAA,EAAA,EAAKC,CAAO,CAAA,CAAA,CAAA,CAClDD,CAAAA,CAAU,CAAA,CAAU,CAAA,EAAGA,CAAO,CAAA,EAAA,EAAKC,CAAO,CAAA,CAAA,CAAA,CACvC,CAAA,EAAGA,CAAO,CAAA,CAAA,CACnB","file":"chunk-G4JU7IUC.js","sourcesContent":["import chalk from 'chalk'\nimport { formatDistanceToNow, format as dateFnsFormat } from 'date-fns'\n\nexport function formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B'\n const units = ['B', 'KB', 'MB', 'GB', 'TB']\n const k = 1024\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n const value = bytes / Math.pow(k, i)\n return `${value.toFixed(i > 0 ? 1 : 0)} ${units[i]}`\n}\n\nexport function formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`\n const minutes = Math.floor(ms / 60000)\n const seconds = Math.round((ms % 60000) / 1000)\n return `${minutes}m ${seconds}s`\n}\n\nexport function formatDate(date: string | Date): string {\n const d = typeof date === 'string' ? new Date(date) : date\n return dateFnsFormat(d, 'MMM d, yyyy HH:mm')\n}\n\nexport function formatRelative(date: string | Date): string {\n const d = typeof date === 'string' ? new Date(date) : date\n return formatDistanceToNow(d, { addSuffix: true })\n}\n\nexport function formatCountdown(ms: number): string {\n if (ms <= 0) return chalk.red('expired')\n const hours = Math.floor(ms / 3600000)\n const minutes = Math.floor((ms % 3600000) / 60000)\n const seconds = Math.floor((ms % 60000) / 1000)\n if (hours > 0) return `${hours}h ${minutes}m ${seconds}s`\n if (minutes > 0) return `${minutes}m ${seconds}s`\n return `${seconds}s`\n}\n\nexport function truncate(str: string, max: number): string {\n if (str.length <= max) return str\n return str.slice(0, max - 3) + '...'\n}\n\nexport function pluralize(n: number, singular: string, plural?: string): string {\n return n === 1 ? `${n} ${singular}` : `${n} ${plural ?? singular + 's'}`\n}\n\nexport function maskEmail(email: string): string {\n const [name, domain] = email.split('@')\n if (!name || !domain) return email\n const masked = name[0] + '***' + name[name.length - 1]\n return `${masked}@${domain}`\n}\n"]}
|
package/dist/chunk-RXARHDCW.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {a}from'./chunk-NDB6KXYI.js';import {m,l,o,n,i}from'./chunk-E2I4VVR5.js';import {nanoid}from'nanoid';import u from'fs';import D from'path';import X from'os';var T=D.join(X.homedir(),".squidcloud",".refresh.lock");function L(){let t=D.dirname(T);u.existsSync(t)||u.mkdirSync(t,{recursive:true,mode:448});}async function Q(){L();let t=false,e=0;for(;!t&&e<50;)try{let n=u.openSync(T,"wx");u.writeSync(n,String(process.pid)),u.closeSync(n),t=!0;}catch{let n=u.statSync(T);if(Date.now()-n.mtimeMs>1e4)try{u.unlinkSync(T);}catch{}await new Promise(r=>setTimeout(r,100)),e++;}return ()=>{try{u.unlinkSync(T);}catch{}}}async function $(){let t=await Q();try{let e=await m();if(!e)return null;let n$1=l();if(e.device_fingerprint!==n$1)return await o(),null;let s=await A("/api/auth/ssp/refresh",{refresh_token:e.refresh_token,refresh_token_id:e.refresh_token_id,device_fingerprint:n$1});if(!s||!s.session)return await o(),null;let r={...s.session,device_fingerprint:n$1};return await n(r),r}catch{return await o(),null}finally{t();}}var F=3,M=1e3,O=1e3,C=a(),I=0;async function H(){let e=Date.now()-I;e<O&&await new Promise(n=>setTimeout(n,O-e)),I=Date.now();}function v(){return nanoid(21)}async function b(t,e,n,s,r){let f=`${t}:${e}:${n}:${s}`;return i(new TextEncoder().encode(r),f)}async function k(t,e={}){let{method:n="GET",headers:s={},body:r,authenticated:f=false,retries:h=F}=e;await H();let d=v(),m$1=Date.now(),i={"Content-Type":"application/json","X-SQC-Request-ID":d,"X-SQC-Timestamp":String(m$1),...s};if(f){let o=await m();if(o){let c=l();i["X-SQC-Fingerprint"]=c,o.access_token&&(i.Authorization=`Bearer ${o.access_token}`,i["X-SQC-Signature"]=await b(d,m$1,n,t,o.access_token));}}let g=`${C}${t}`,a={method:n,headers:i};r&&n!=="GET"&&(a.body=JSON.stringify(r));let P=null;for(let o=0;o<=h;o++)try{let c=await fetch(g,a);if(c.status===401&&f){let p=await $();if(p){i.Authorization=`Bearer ${p.access_token}`,i["X-SQC-Signature"]=await b(d,m$1,n,t,p.access_token),a.headers=i;let q=await fetch(g,a);return R(q)}}return R(c)}catch(c){if(P=c instanceof Error?c:new Error(String(c)),o<h){let p=M*Math.pow(2,o)*(.5+Math.random()*.5);await new Promise(q=>setTimeout(q,p));}}throw P||new Error(`Request failed: ${t}`)}async function R(t){if(t.status===204)return;if((t.headers.get("content-type")||"").includes("application/json")){let s=await t.json();if(!t.ok){let r=s?.error?.message||s?.message||`HTTP ${t.status}`;throw new y(r,t.status,s?.error)}return s}if(!t.ok){let s=await t.text();throw new y(s||`HTTP ${t.status}`,t.status)}return await t.text()}var y=class extends Error{constructor(n,s,r){super(n);this.status=s;this.details=r;this.name="ApiError";}status;details};async function nt(t,e){return k(t,{...e,method:"GET"})}async function A(t,e,n){return k(t,{...n,method:"POST",body:e})}async function st(t,e,n){return k(t,{...n,method:"PUT",body:e})}async function rt(t,e){return k(t,{...e,method:"DELETE"})}async function it(t,e,n){let{method:s="POST",headers:r={},authenticated:f=false}=n||{},h=v(),d=Date.now(),m$1={...r,"X-SQC-Request-ID":h,"X-SQC-Timestamp":String(d)};if(f){let a=await m();a&&(m$1["X-SQC-Fingerprint"]=l(),a.access_token&&(m$1.Authorization=`Bearer ${a.access_token}`));}let i=`${C}${t}`,g=await fetch(i,{method:s,headers:m$1,body:e});return R(g)}export{$ as a,k as b,y as c,nt as d,A as e,st as f,rt as g,it as h};//# sourceMappingURL=chunk-RXARHDCW.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-RXARHDCW.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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-RXARHDCW.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"]}
|
package/dist/client-RBFTHJQ4.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-6QGPY7SO.js.map
|
|
2
|
-
//# sourceMappingURL=collab-invite-6QGPY7SO.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-YMTEY2CZ.js.map
|
|
2
|
-
//# sourceMappingURL=collab-leave-YMTEY2CZ.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-AQUFYKGI.js.map
|
|
2
|
-
//# sourceMappingURL=collab-list-AQUFYKGI.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-CJSQYEUI.js.map
|
|
2
|
-
//# sourceMappingURL=collab-remove-CJSQYEUI.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-I6O6T3AC.js.map
|
|
2
|
-
//# sourceMappingURL=collab-transfer-I6O6T3AC.js.map
|
package/dist/deploy-3AMFZQ7I.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import {a}from'./chunk-MKRWNV2T.js';import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-RXARHDCW.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-E2I4VVR5.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-3AMFZQ7I.js.map
|
|
3
|
-
//# sourceMappingURL=deploy-3AMFZQ7I.js.map
|
package/dist/doctor-DAYHBLCK.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d as d$1}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import {f,m as m$1,l as l$1}from'./chunk-QT7R3AXE.js';import {m,l}from'./chunk-E2I4VVR5.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-DAYHBLCK.js.map
|
|
2
|
-
//# sourceMappingURL=doctor-DAYHBLCK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/util/doctor.ts"],"names":["doctor","options","checks","session","loadSession","fpMatch","computeDeviceFingerprint","apiGet","securityInfo","isJsonMode","logJSON","logRaw","chalk","check","icon"],"mappings":"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","file":"doctor-DAYHBLCK.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,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {g}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g as g$1}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-BFDMRIWW.js.map
|
|
2
|
-
//# sourceMappingURL=forms-clear-BFDMRIWW.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {f,m,g}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-EWU47AIO.js.map
|
|
2
|
-
//# sourceMappingURL=forms-create-EWU47AIO.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {g}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g as g$1}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.js';import s from'inquirer';async function p(t){let e=(await(await import('./client-RBFTHJQ4.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-HJISSH4G.js.map
|
|
2
|
-
//# sourceMappingURL=forms-delete-HJISSH4G.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-E2I4VVR5.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-GSIGC4V7.js.map
|
|
3
|
-
//# sourceMappingURL=forms-embed-GSIGC4V7.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-KLFI4NJ7.js.map
|
|
2
|
-
//# sourceMappingURL=forms-export-KLFI4NJ7.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import {f,m,l}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-BRG5D5D7.js.map
|
|
2
|
-
//# sourceMappingURL=forms-info-BRG5D5D7.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {b}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.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-GYBKM5YD.js.map
|
|
2
|
-
//# sourceMappingURL=forms-list-GYBKM5YD.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.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-E2I4VVR5.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-RKNVL2FS.js.map
|
|
2
|
-
//# sourceMappingURL=forms-submissions-RKNVL2FS.js.map
|
package/dist/login-CG7LSZMB.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b,a}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-RXARHDCW.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-E2I4VVR5.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-CG7LSZMB.js.map
|
|
2
|
-
//# sourceMappingURL=login-CG7LSZMB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/crypto/sanitize.ts","../src/lib/auth/ssp-handshake.ts","../src/commands/auth/login.ts"],"names":["zeroBuffer","buf","SERVER_PUB_KEY_HEX","clientEphemeralPriv","clientEphemeralPub","clientNonce","passwordProof","performSSPHandshake","email","password","pub","priv","generateKeypair","generateNonce","hashPassword","fingerprint","bytesToHex","blake3","os","timestamp","response","apiPost","serverNonce","hexToBytes","serverEphemeralPub","serverSignature","serverPubKey","signPayload","computeSignPayload","verifyServerSignature","cleanup","ecdhSecret","deriveSharedSecret","encryptionKey","deriveEncryptionKey","encryptedSession","sessionIv","sessionTag","session","decryptSession","saveSession","login","existing","loadSession","logInfo","force","inquirer","answers","v","spinner","createSpinner","renderMascot","logBrand","brand","logSuccess","err"],"mappings":"yXAUO,SAASA,CAAAA,CAAWC,EAAuB,CAChDA,CAAAA,CAAI,KAAK,CAAC,EACZ,CCLA,IAAMC,CAAAA,CAAqB,OAAA,CAAQ,GAAA,CAAI,2BAA6B,EAAA,CAEhEC,CAAAA,CAAyC,KACzCC,CAAAA,CAAwC,IAAA,CACxCC,EAAiC,IAAA,CACjCC,CAAAA,CAAmC,KAEvC,eAAsBC,CAAAA,CAAoBC,EAAeC,CAAAA,CAAyC,CAChG,GAAM,CAAE,GAAA,CAAAC,EAAK,IAAA,CAAAC,GAAK,CAAA,CAAIC,GAAAA,GACtBT,CAAAA,CAAsBQ,GAAAA,CACtBP,EAAqBM,CAAAA,CACrBL,CAAAA,CAAcQ,KAAc,CAC5BP,CAAAA,CAAgBQ,GAAAA,CAAaL,CAAAA,CAAUD,CAAK,CAAA,CAE5C,IAAMO,IAAcC,GAAAA,CAAWC,MAAAA,CAAOC,EAAG,QAAA,EAAS,CAAIA,CAAAA,CAAG,QAAA,GAAaA,CAAAA,CAAG,IAAA,EAAM,CAAC,CAAA,CAC1EC,EAAY,IAAA,CAAK,GAAA,GAEjBC,CAAAA,CAAW,MAAMC,EAAqB,qBAAA,CAAuB,CACjE,MAAAb,CAAAA,CACA,cAAA,CAAgBQ,IAAWV,CAAa,CAAA,CACxC,oBAAA,CAAsBU,GAAAA,CAAWZ,CAAkB,CAAA,CACnD,YAAA,CAAcY,IAAWX,CAAW,CAAA,CACpC,mBAAoBU,GAAAA,CACpB,SAAA,CAAAI,CACF,CAAC,EAEKG,CAAAA,CAAcC,GAAAA,CAAWH,EAAS,YAAY,CAAA,CAC9CI,EAAqBD,GAAAA,CAAWH,CAAAA,CAAS,oBAAoB,CAAA,CAC7DK,EAAkBF,GAAAA,CAAWH,CAAAA,CAAS,gBAAgB,CAAA,CAEtDM,CAAAA,CAAeH,IAAWrB,CAAkB,CAAA,CAClD,GAAIwB,CAAAA,CAAa,MAAA,CAAS,EAAG,CAC3B,IAAMC,EAAcC,CAAAA,CAAmBvB,CAAAA,CAAaiB,EAAalB,CAAAA,CAAoBe,CAAS,CAAA,CAE9F,GAAI,CADY,MAAMU,CAAAA,CAAsBJ,EAAiBE,CAAAA,CAAaD,CAAY,EAEpF,MAAAI,CAAAA,EAAQ,CACF,IAAI,MAAM,kEAA6D,CAEjF,CAEA,IAAMC,CAAAA,CAAaC,IAAmBR,CAAAA,CAAoBrB,CAAmB,CAAA,CACvE8B,CAAAA,CAAgBC,IAAoBH,CAAAA,CAAY1B,CAAAA,CAAaiB,CAAW,CAAA,CACxEa,CAAAA,CAAmBZ,IAAWH,CAAAA,CAAS,iBAAiB,EACxDgB,CAAAA,CAAYb,GAAAA,CAAWH,EAAS,UAAU,CAAA,CAC1CiB,EAAad,GAAAA,CAAWH,CAAAA,CAAS,WAAW,CAAA,CAE5CkB,CAAAA,CAAUC,GAAAA,CAAeJ,CAAAA,CAAkBC,EAAWC,CAAAA,CAAYJ,CAAa,EACrF,OAAAK,CAAAA,CAAQ,mBAAqBvB,GAAAA,CAE7B,MAAMyB,CAAAA,CAAYF,CAAO,EACzBR,CAAAA,EAAQ,CAEDQ,CACT,CAEA,SAASR,GAAgB,CACnB3B,CAAAA,EAAqBH,CAAAA,CAAWG,CAAmB,EACnDC,CAAAA,EAAoBJ,CAAAA,CAAWI,CAAkB,CAAA,CACjDC,CAAAA,EAAaL,EAAWK,CAAW,CAAA,CACnCC,GAAeN,CAAAA,CAAWM,CAAa,EAC3CH,CAAAA,CAAsB,IAAA,CACtBC,EAAqB,IAAA,CACrBC,CAAAA,CAAc,KACdC,CAAAA,CAAgB,KAClB,CC9DA,eAAOmC,GAA8C,CACnD,IAAMC,EAAW,MAAMC,CAAAA,GACvB,GAAID,CAAAA,CAAU,CACZE,CAAAA,CAAQ,4BAA4BF,CAAAA,CAAS,IAAA,CAAK,KAAK,CAAA,CAAE,CAAA,CACzD,GAAM,CAAE,KAAA,CAAAG,CAAM,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACvC,IAAA,CAAM,UACN,IAAA,CAAM,OAAA,CACN,QAAS,kBAAA,CACT,OAAA,CAAS,KACX,CAAC,CAAC,EACF,GAAI,CAACD,EAAO,MACd,CAEA,IAAME,CAAAA,CAAU,MAAMD,CAAAA,CAAS,MAAA,CAAO,CACpC,CACE,IAAA,CAAM,QACN,IAAA,CAAM,OAAA,CACN,OAAA,CAAS,QAAA,CACT,SAAWE,CAAAA,EAAcA,CAAAA,CAAE,SAAS,GAAG,CAAA,CAAI,KAAO,4BACpD,CAAA,CACA,CACE,IAAA,CAAM,WACN,IAAA,CAAM,UAAA,CACN,QAAS,WAAA,CACT,IAAA,CAAM,GACR,CACF,CAAC,EAEKC,CAAAA,CAAUC,CAAAA,CAAc,mCAAmC,CAAA,CACjED,CAAAA,CAAQ,OAAM,CAEd,GAAI,CACF,IAAMX,CAAAA,CAAU,MAAM/B,CAAAA,CAAoBwC,EAAQ,KAAA,CAAOA,CAAAA,CAAQ,QAAQ,CAAA,CACzEE,CAAAA,CAAQ,SAAQ,CAChB,OAAA,CAAQ,GAAA,CAAIE,CAAAA,EAAc,CAAA,CAC1BC,CAAAA,CAAS,0BAA0BC,GAAAA,CAAMf,CAAAA,CAAQ,KAAK,QAAQ,CAAC,CAAA,CAAA,CAAG,CAAA,CAClEgB,EAAW,CAAA,iBAAA,EAAoBhB,CAAAA,CAAQ,KAAK,KAAK,CAAA,EAAA,EAAKA,EAAQ,IAAA,CAAK,IAAI,GAAG,EAC5E,CAAA,MAASiB,EAAK,CACZ,MAAAN,EAAQ,IAAA,EAAK,CACPM,CACR,CACF","file":"login-CG7LSZMB.js","sourcesContent":["const ANSI_PATTERN = /[\\u001b\\u009b][[\\]()#;?]*(?:(?:(?:;[0-9a-fA-F]{1,4})*(?:;[0-9a-fA-F]{0,4})?)?[0-9A-PRZcf-nq-uy=><~])/g\n\nexport function sanitizeForTerminal(input: string): string {\n return input.replace(ANSI_PATTERN, '')\n}\n\nexport function sanitizeFilename(input: string): string {\n return input.replace(/[<>:\"/\\\\|?*\\x00-\\x1f]/g, '_').trim()\n}\n\nexport function zeroBuffer(buf: Uint8Array): void {\n buf.fill(0)\n}\n\nexport function zeroString(str: string): void {\n if (typeof str === 'string') {\n const len = str.length\n ;(str as unknown as Record<string, unknown>).valueOf = () => ''\n for (let i = 0; i < len; i++) {\n str = str[i] === str[i].charAt(0) ? '' : ''\n }\n }\n}\n","import os from 'node:os'\nimport { generateKeypair, generateNonce, hashPassword, bytesToHex, hexToBytes, computeSignPayload, deriveSharedSecret, deriveEncryptionKey, decryptSession, verifyServerSignature, SquidSession, SSPResponse } from '../crypto/ssp.js'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { saveSession } from './session.js'\nimport { apiPost } from '../api/client.js'\nimport { zeroBuffer } from '../crypto/sanitize.js'\n\nconst SERVER_PUB_KEY_HEX = process.env.SQUIDCLOUD_SERVER_PUB_KEY || ''\n\nlet clientEphemeralPriv: Uint8Array | null = null\nlet clientEphemeralPub: Uint8Array | null = null\nlet clientNonce: Uint8Array | null = null\nlet passwordProof: Uint8Array | null = null\n\nexport async function performSSPHandshake(email: string, password: string): Promise<SquidSession> {\n const { pub, priv } = generateKeypair()\n clientEphemeralPriv = priv\n clientEphemeralPub = pub\n clientNonce = generateNonce()\n passwordProof = hashPassword(password, email)\n\n const fingerprint = bytesToHex(blake3(os.hostname() + os.platform() + os.arch()))\n const timestamp = Date.now()\n\n const response = await apiPost<SSPResponse>('/api/auth/ssp/hello', {\n email,\n password_proof: bytesToHex(passwordProof),\n client_ephemeral_pub: bytesToHex(clientEphemeralPub),\n client_nonce: bytesToHex(clientNonce),\n device_fingerprint: fingerprint,\n timestamp,\n })\n\n const serverNonce = hexToBytes(response.server_nonce)\n const serverEphemeralPub = hexToBytes(response.server_ephemeral_pub)\n const serverSignature = hexToBytes(response.server_signature)\n\n const serverPubKey = hexToBytes(SERVER_PUB_KEY_HEX)\n if (serverPubKey.length > 0) {\n const signPayload = computeSignPayload(clientNonce, serverNonce, clientEphemeralPub, timestamp)\n const isValid = await verifyServerSignature(serverSignature, signPayload, serverPubKey)\n if (!isValid) {\n cleanup()\n throw new Error('Connection rejected — server identity could not be verified')\n }\n }\n\n const ecdhSecret = deriveSharedSecret(serverEphemeralPub, clientEphemeralPriv)\n const encryptionKey = deriveEncryptionKey(ecdhSecret, clientNonce, serverNonce)\n const encryptedSession = hexToBytes(response.encrypted_session)\n const sessionIv = hexToBytes(response.session_iv)\n const sessionTag = hexToBytes(response.session_tag)\n\n const session = decryptSession(encryptedSession, sessionIv, sessionTag, encryptionKey)\n session.device_fingerprint = fingerprint\n\n await saveSession(session)\n cleanup()\n\n return session\n}\n\nfunction cleanup(): void {\n if (clientEphemeralPriv) zeroBuffer(clientEphemeralPriv)\n if (clientEphemeralPub) zeroBuffer(clientEphemeralPub)\n if (clientNonce) zeroBuffer(clientNonce)\n if (passwordProof) zeroBuffer(passwordProof)\n clientEphemeralPriv = null\n clientEphemeralPub = null\n clientNonce = null\n passwordProof = null\n}\n","import inquirer from 'inquirer'\nimport { performSSPHandshake } from '../../lib/auth/ssp-handshake.js'\nimport { loadSession } from '../../lib/auth/session.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logInfo, logBrand } from '../../lib/output/logger.js'\nimport { renderMascot } from '../../lib/output/mascot.js'\nimport { brand } from '../../lib/output/brand.js'\nimport { isInteractive } from '../../lib/utils/ci-detect.js'\n\nexport default async function login(): Promise<void> {\n const existing = await loadSession()\n if (existing) {\n logInfo(`Already authenticated as ${existing.user.email}`)\n const { force } = await inquirer.prompt([{\n type: 'confirm',\n name: 'force',\n message: 'Re-authenticate?',\n default: false,\n }])\n if (!force) return\n }\n\n const answers = await inquirer.prompt([\n {\n type: 'input',\n name: 'email',\n message: 'Email:',\n validate: (v: string) => v.includes('@') ? true : 'Please enter a valid email',\n },\n {\n type: 'password',\n name: 'password',\n message: 'Password:',\n mask: '*',\n },\n ])\n\n const spinner = createSpinner('Authenticating with SquidCloud...')\n spinner.start()\n\n try {\n const session = await performSSPHandshake(answers.email, answers.password)\n spinner.succeed()\n console.log(renderMascot())\n logBrand(`Welcome to SquidCloud, ${brand(session.user.username)}!`)\n logSuccess(`Authenticated as ${session.user.email} (${session.user.plan})`)\n } catch (err) {\n spinner.fail()\n throw err\n }\n}\n"]}
|
package/dist/logout-HGLROFNP.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {e}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import {o}from'./chunk-E2I4VVR5.js';async function i(){let o$1=b("Revoking session...");o$1.start();try{await e("/api/auth/ssp/revoke",{},{authenticated:!0});}catch{}await o(),o$1.succeed(),g("Logged out successfully");}export{i as default};//# sourceMappingURL=logout-HGLROFNP.js.map
|
|
2
|
-
//# sourceMappingURL=logout-HGLROFNP.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b}from'./chunk-FYFPDKJM.js';import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.js';import n from'fs';import p from'path';async function a(){let o=b("Exporting logs...");o.start();let i=await d("/api/v1/logs/export",{authenticated:true});o.succeed();let t=p.join(process.cwd(),`squidcloud-logs-${Date.now()}.jsonl`);n.writeFileSync(t,i.jsonl,"utf-8"),g(`Exported to ${t}`);}export{a as default};//# sourceMappingURL=logs-export-547MGHOL.js.map
|
|
2
|
-
//# sourceMappingURL=logs-export-547MGHOL.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.js';import r from'chalk';async function g(i,t){let a$1=new URLSearchParams({q:i});t?.from&&a$1.set("from",t.from),t?.to&&a$1.set("to",t.to);let l=((await d(`/api/v1/logs/search?${a$1}`,{authenticated:true})).logs||[]).map(e=>({ts:c(e.timestamp),level:e.level==="error"?r.red("\u25CF"):e.level==="warn"?r.yellow("\u25CF"):r.dim("\u25CF"),type:r.dim(e.type||"-"),message:e.message?.slice(0,80)||""}));console.log(a(l,[{key:"ts",label:"Time"},{key:"level",label:""},{key:"type",label:"Type"},{key:"message",label:"Message"}]));}export{g as default};//# sourceMappingURL=logs-search-P52C7PUZ.js.map
|
|
2
|
-
//# sourceMappingURL=logs-search-P52C7PUZ.js.map
|
package/dist/monitor-IEQ4UD2H.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import {l}from'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.js';import e from'chalk';async function o(){let t=(await d("/api/v1/monitor/dashboard",{authenticated:true})).dashboard;l(""),l(e.bold(" SquidCloud Monitor Dashboard")),l(e.dim(" \u2500\u2500\u2500".repeat(12))),l(""),l(` ${e.bold("Sites")}`),l(` ${t.sites.healthy}/${t.sites.total} healthy`),t.sites.degraded>0&&l(` ${e.yellow(` ${t.sites.degraded} degraded`)}`),l(""),l(` ${e.bold("Pipelines")}`),l(` ${t.pipelines.healthy}/${t.pipelines.total} healthy`),t.pipelines.failing>0&&l(` ${e.red(` ${t.pipelines.failing} failing`)}`),l(""),l(` ${e.bold("Storage")}`),l(` ${t.storage.total_files} files`),t.storage.warnings>0&&l(` ${e.yellow(` ${t.storage.warnings} warnings`)}`),l(""),l(` ${e.bold("Automations")}`),l(` ${t.automations.healthy}/${t.automations.total} healthy`),t.automations.failing>0&&l(` ${e.red(` ${t.automations.failing} failing`)}`),l("");}export{o as default};//# sourceMappingURL=monitor-IEQ4UD2H.js.map
|
|
2
|
-
//# sourceMappingURL=monitor-IEQ4UD2H.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import {a as a$1}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.js';import a from'chalk';async function i(){let s=((await d("/api/v1/monitor/automations",{authenticated:true})).automations||[]).map(t=>({name:t.name,last:t.last_fired?c(t.last_fired):a.dim("never"),rate:`${(t.success_rate*100).toFixed(0)}%`,status:t.status==="healthy"?a.green("\u25CF"):t.status==="erroring"?a.red("\u25CF"):a.dim("\u25CB")}));console.log(a$1(s,[{key:"name",label:"Automation"},{key:"last",label:"Last Fired"},{key:"rate",label:"Success"},{key:"status",label:""}]));}export{i as default};//# sourceMappingURL=monitor-automations-4UNPGIZG.js.map
|
|
2
|
-
//# sourceMappingURL=monitor-automations-4UNPGIZG.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-RXARHDCW.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-E2I4VVR5.js';import t from'chalk';async function r(){let l=((await d("/api/v1/monitor/pipelines",{authenticated:true})).pipelines||[]).map(e=>({name:e.name,last:e.last_run?c(e.last_run):t.dim("never"),runs:String(e.runs_24h),status:e.status==="healthy"?t.green("\u25CF"):e.status==="degraded"?t.yellow("\u25CF"):t.red("\u25CF")}));console.log(a(l,[{key:"name",label:"Pipeline"},{key:"last",label:"Last Run"},{key:"runs",label:"24h Runs"},{key:"status",label:""}]));}export{r as default};//# sourceMappingURL=monitor-pipelines-FVASSAV4.js.map
|
|
2
|
-
//# sourceMappingURL=monitor-pipelines-FVASSAV4.js.map
|