squidcloudctl 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth-revoke-OC67YCEQ.js +2 -0
- package/dist/auth-revoke-OC67YCEQ.js.map +1 -0
- package/dist/auth-sessions-XIBWY6BL.js +2 -0
- package/dist/auth-sessions-XIBWY6BL.js.map +1 -0
- package/dist/auth-status-B5VLDH27.js +2 -0
- package/dist/auth-status-B5VLDH27.js.map +1 -0
- package/dist/bin/squidcloud.js +4 -0
- package/dist/bin/squidcloud.js.map +1 -0
- package/dist/chunk-6TS5Y27A.js +6 -0
- package/dist/chunk-6TS5Y27A.js.map +1 -0
- package/dist/chunk-C5KZCYJ4.js +2 -0
- package/dist/chunk-C5KZCYJ4.js.map +1 -0
- package/dist/chunk-G4JU7IUC.js +2 -0
- package/dist/chunk-G4JU7IUC.js.map +1 -0
- package/dist/chunk-LWB2J3KU.js +2 -0
- package/dist/chunk-LWB2J3KU.js.map +1 -0
- package/dist/chunk-MKRWNV2T.js +2 -0
- package/dist/chunk-MKRWNV2T.js.map +1 -0
- package/dist/chunk-NDB6KXYI.js +3 -0
- package/dist/chunk-NDB6KXYI.js.map +1 -0
- package/dist/chunk-ON3YIMVG.js +2 -0
- package/dist/chunk-ON3YIMVG.js.map +1 -0
- package/dist/chunk-QT7R3AXE.js +3 -0
- package/dist/chunk-QT7R3AXE.js.map +1 -0
- package/dist/chunk-RWWBBPEJ.js +2 -0
- package/dist/chunk-RWWBBPEJ.js.map +1 -0
- package/dist/chunk-THMWE2I6.js +2 -0
- package/dist/chunk-THMWE2I6.js.map +1 -0
- package/dist/client-FRNT7PEB.js +2 -0
- package/dist/client-FRNT7PEB.js.map +1 -0
- package/dist/collab-activity-GQOGCECR.js +2 -0
- package/dist/collab-activity-GQOGCECR.js.map +1 -0
- package/dist/collab-invite-HUSQYV23.js +2 -0
- package/dist/collab-invite-HUSQYV23.js.map +1 -0
- package/dist/collab-leave-W2ESTT5L.js +2 -0
- package/dist/collab-leave-W2ESTT5L.js.map +1 -0
- package/dist/collab-list-722OEBJQ.js +2 -0
- package/dist/collab-list-722OEBJQ.js.map +1 -0
- package/dist/collab-remove-ZMB22U2T.js +2 -0
- package/dist/collab-remove-ZMB22U2T.js.map +1 -0
- package/dist/collab-transfer-56MH4IT6.js +2 -0
- package/dist/collab-transfer-56MH4IT6.js.map +1 -0
- package/dist/completion-IF3NB7PB.js +44 -0
- package/dist/completion-IF3NB7PB.js.map +1 -0
- package/dist/config-7G24FXQJ.js +2 -0
- package/dist/config-7G24FXQJ.js.map +1 -0
- package/dist/config-delete-VSIFFODZ.js +2 -0
- package/dist/config-delete-VSIFFODZ.js.map +1 -0
- package/dist/config-get-DDNSM5EH.js +2 -0
- package/dist/config-get-DDNSM5EH.js.map +1 -0
- package/dist/config-reset-ZFMP4J5H.js +2 -0
- package/dist/config-reset-ZFMP4J5H.js.map +1 -0
- package/dist/config-set-O6JKOGGN.js +2 -0
- package/dist/config-set-O6JKOGGN.js.map +1 -0
- package/dist/deploy-WK3VAA7D.js +3 -0
- package/dist/deploy-WK3VAA7D.js.map +1 -0
- package/dist/doctor-C7TZGTCO.js +2 -0
- package/dist/doctor-C7TZGTCO.js.map +1 -0
- package/dist/feedback-QUGQAWZB.js +3 -0
- package/dist/feedback-QUGQAWZB.js.map +1 -0
- package/dist/forms-clear-2ERBEAEY.js +2 -0
- package/dist/forms-clear-2ERBEAEY.js.map +1 -0
- package/dist/forms-create-3ONGTRQZ.js +2 -0
- package/dist/forms-create-3ONGTRQZ.js.map +1 -0
- package/dist/forms-delete-CKLGD52U.js +2 -0
- package/dist/forms-delete-CKLGD52U.js.map +1 -0
- package/dist/forms-embed-4S46VDP4.js +3 -0
- package/dist/forms-embed-4S46VDP4.js.map +1 -0
- package/dist/forms-export-WGHH5TBF.js +2 -0
- package/dist/forms-export-WGHH5TBF.js.map +1 -0
- package/dist/forms-info-OMXUOOBT.js +2 -0
- package/dist/forms-info-OMXUOOBT.js.map +1 -0
- package/dist/forms-list-ZRKQXGLM.js +2 -0
- package/dist/forms-list-ZRKQXGLM.js.map +1 -0
- package/dist/forms-submissions-K7W7XYPR.js +2 -0
- package/dist/forms-submissions-K7W7XYPR.js.map +1 -0
- package/dist/login-JJ7YHQB5.js +2 -0
- package/dist/login-JJ7YHQB5.js.map +1 -0
- package/dist/logout-PS2XK3GB.js +2 -0
- package/dist/logout-PS2XK3GB.js.map +1 -0
- package/dist/logs-export-55G3COYK.js +2 -0
- package/dist/logs-export-55G3COYK.js.map +1 -0
- package/dist/logs-search-5QCEBZ6W.js +2 -0
- package/dist/logs-search-5QCEBZ6W.js.map +1 -0
- package/dist/logs-tail-OYLJ5EOM.js +3 -0
- package/dist/logs-tail-OYLJ5EOM.js.map +1 -0
- package/dist/monitor-XUW4BMBQ.js +2 -0
- package/dist/monitor-XUW4BMBQ.js.map +1 -0
- package/dist/monitor-automations-TSO65I6U.js +2 -0
- package/dist/monitor-automations-TSO65I6U.js.map +1 -0
- package/dist/monitor-pipelines-OPCTGGRR.js +2 -0
- package/dist/monitor-pipelines-OPCTGGRR.js.map +1 -0
- package/dist/monitor-sites-OLSGE4V2.js +2 -0
- package/dist/monitor-sites-OLSGE4V2.js.map +1 -0
- package/dist/monitor-storage-CVFXC3ZS.js +2 -0
- package/dist/monitor-storage-CVFXC3ZS.js.map +1 -0
- package/dist/scripts-cancel-OR2UFFC3.js +2 -0
- package/dist/scripts-cancel-OR2UFFC3.js.map +1 -0
- package/dist/scripts-delete-HMHBIL4G.js +2 -0
- package/dist/scripts-delete-HMHBIL4G.js.map +1 -0
- package/dist/scripts-disable-ABFUD34Y.js +2 -0
- package/dist/scripts-disable-ABFUD34Y.js.map +1 -0
- package/dist/scripts-enable-VMRAPULS.js +2 -0
- package/dist/scripts-enable-VMRAPULS.js.map +1 -0
- package/dist/scripts-init-AU6WNMKB.js +14 -0
- package/dist/scripts-init-AU6WNMKB.js.map +1 -0
- package/dist/scripts-list-DV2QVLPX.js +2 -0
- package/dist/scripts-list-DV2QVLPX.js.map +1 -0
- package/dist/scripts-logs-AHTMTQ6G.js +2 -0
- package/dist/scripts-logs-AHTMTQ6G.js.map +1 -0
- package/dist/scripts-run-K2LFPFTH.js +2 -0
- package/dist/scripts-run-K2LFPFTH.js.map +1 -0
- package/dist/scripts-status-XGI5SMWL.js +2 -0
- package/dist/scripts-status-XGI5SMWL.js.map +1 -0
- package/dist/scripts-validate-7EZXPO3Q.js +2 -0
- package/dist/scripts-validate-7EZXPO3Q.js.map +1 -0
- package/dist/scripts-watch-HN23AZLJ.js +2 -0
- package/dist/scripts-watch-HN23AZLJ.js.map +1 -0
- package/dist/session-T3DZUXHP.js +2 -0
- package/dist/session-T3DZUXHP.js.map +1 -0
- package/dist/sign-cancel-R7KQFEM3.js +2 -0
- package/dist/sign-cancel-R7KQFEM3.js.map +1 -0
- package/dist/sign-download-EHPZ5FMF.js +2 -0
- package/dist/sign-download-EHPZ5FMF.js.map +1 -0
- package/dist/sign-list-6N7G36EO.js +2 -0
- package/dist/sign-list-6N7G36EO.js.map +1 -0
- package/dist/sign-request-DW6BS67P.js +2 -0
- package/dist/sign-request-DW6BS67P.js.map +1 -0
- package/dist/sign-status-L4PNMSBI.js +2 -0
- package/dist/sign-status-L4PNMSBI.js.map +1 -0
- package/dist/sign-verify-I6YPHFUW.js +2 -0
- package/dist/sign-verify-I6YPHFUW.js.map +1 -0
- package/dist/sites-analytics-JMW6DAC3.js +2 -0
- package/dist/sites-analytics-JMW6DAC3.js.map +1 -0
- package/dist/sites-delete-M4DJ3GXV.js +2 -0
- package/dist/sites-delete-M4DJ3GXV.js.map +1 -0
- package/dist/sites-deploys-2HBSXQA4.js +2 -0
- package/dist/sites-deploys-2HBSXQA4.js.map +1 -0
- package/dist/sites-info-CIDGRZRJ.js +2 -0
- package/dist/sites-info-CIDGRZRJ.js.map +1 -0
- package/dist/sites-list-L56B32PU.js +2 -0
- package/dist/sites-list-L56B32PU.js.map +1 -0
- package/dist/sites-logs-NMNQXOKI.js +3 -0
- package/dist/sites-logs-NMNQXOKI.js.map +1 -0
- package/dist/sites-open-JOJQ5PW2.js +3 -0
- package/dist/sites-open-JOJQ5PW2.js.map +1 -0
- package/dist/sites-purge-IA2673H4.js +2 -0
- package/dist/sites-purge-IA2673H4.js.map +1 -0
- package/dist/sites-rename-WFSBG4ME.js +2 -0
- package/dist/sites-rename-WFSBG4ME.js.map +1 -0
- package/dist/sites-rollback-REUDH4TZ.js +2 -0
- package/dist/sites-rollback-REUDH4TZ.js.map +1 -0
- package/dist/sites-unpublish-AS4D6N3M.js +2 -0
- package/dist/sites-unpublish-AS4D6N3M.js.map +1 -0
- package/dist/sites-visibility-S3TKH6XD.js +2 -0
- package/dist/sites-visibility-S3TKH6XD.js.map +1 -0
- package/dist/storage-cat-LZ7LYZAY.js +2 -0
- package/dist/storage-cat-LZ7LYZAY.js.map +1 -0
- package/dist/storage-clean-S57ZHSGL.js +2 -0
- package/dist/storage-clean-S57ZHSGL.js.map +1 -0
- package/dist/storage-cp-M2BVRCIL.js +2 -0
- package/dist/storage-cp-M2BVRCIL.js.map +1 -0
- package/dist/storage-diff-ZATBMPAM.js +2 -0
- package/dist/storage-diff-ZATBMPAM.js.map +1 -0
- package/dist/storage-download-PZEEX2Z3.js +3 -0
- package/dist/storage-download-PZEEX2Z3.js.map +1 -0
- package/dist/storage-info-T62YZOPK.js +2 -0
- package/dist/storage-info-T62YZOPK.js.map +1 -0
- package/dist/storage-ls-DGOI7ZXX.js +2 -0
- package/dist/storage-ls-DGOI7ZXX.js.map +1 -0
- package/dist/storage-mkdir-J4BYV3QL.js +2 -0
- package/dist/storage-mkdir-J4BYV3QL.js.map +1 -0
- package/dist/storage-mv-R73IGYOM.js +2 -0
- package/dist/storage-mv-R73IGYOM.js.map +1 -0
- package/dist/storage-rm-M3UODY5G.js +2 -0
- package/dist/storage-rm-M3UODY5G.js.map +1 -0
- package/dist/storage-search-H44Y6OKS.js +2 -0
- package/dist/storage-search-H44Y6OKS.js.map +1 -0
- package/dist/storage-share-VIJJIHBX.js +2 -0
- package/dist/storage-share-VIJJIHBX.js.map +1 -0
- package/dist/storage-tag-PAVT6GBZ.js +2 -0
- package/dist/storage-tag-PAVT6GBZ.js.map +1 -0
- package/dist/storage-unshare-O3AAJZMT.js +2 -0
- package/dist/storage-unshare-O3AAJZMT.js.map +1 -0
- package/dist/storage-upload-DRYGLH2O.js +2 -0
- package/dist/storage-upload-DRYGLH2O.js.map +1 -0
- package/dist/time-list-CW2OOCPT.js +2 -0
- package/dist/time-list-CW2OOCPT.js.map +1 -0
- package/dist/time-lock-A2MZ3MP2.js +2 -0
- package/dist/time-lock-A2MZ3MP2.js.map +1 -0
- package/dist/time-proof-ZLRY6ZVZ.js +2 -0
- package/dist/time-proof-ZLRY6ZVZ.js.map +1 -0
- package/dist/time-status-XQLRCYF6.js +2 -0
- package/dist/time-status-XQLRCYF6.js.map +1 -0
- package/dist/time-unlock-KNMGQ3TK.js +2 -0
- package/dist/time-unlock-KNMGQ3TK.js.map +1 -0
- package/dist/update-IYMIV34T.js +2 -0
- package/dist/update-IYMIV34T.js.map +1 -0
- package/dist/version-7IHVNLWY.js +2 -0
- package/dist/version-7IHVNLWY.js.map +1 -0
- package/dist/whoami-WIHSRTUN.js +2 -0
- package/dist/whoami-WIHSRTUN.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import t from'chalk';async function n(r){let i=((await d(`/api/v1/collab/list?folder=${encodeURIComponent(r)}`,{authenticated:true})).collaborators||[]).map(e=>({email:e.email,user:e.username,role:t.hex("#7C4DFF")(e.role),joined:c(e.joined_at),active:e.last_active?c(e.last_active):t.dim("never")}));console.log(a(i,[{key:"email",label:"Email"},{key:"user",label:"User"},{key:"role",label:"Role"},{key:"joined",label:"Joined"},{key:"active",label:"Last Active"}]));}export{n as default};//# sourceMappingURL=collab-list-722OEBJQ.js.map
|
|
2
|
+
//# sourceMappingURL=collab-list-722OEBJQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/collab/collab-list.ts"],"names":["collabList","folder","rows","apiGet","c","chalk","formatRelative","renderTable"],"mappings":"qNAaA,eAAOA,CAAAA,CAAkCC,EAA+B,CAEtE,IAAMC,IADO,MAAMC,CAAAA,CAA0C,8BAA8B,kBAAA,CAAmBF,CAAM,CAAC,CAAA,CAAA,CAAI,CAAE,cAAe,IAAK,CAAC,GAC7H,aAAA,EAAiB,IAAI,GAAA,CAAIG,CAAAA,GAAM,CAChD,KAAA,CAAOA,CAAAA,CAAE,MACT,IAAA,CAAMA,CAAAA,CAAE,SACR,IAAA,CAAMC,CAAAA,CAAM,IAAI,SAAS,CAAA,CAAED,EAAE,IAAI,CAAA,CACjC,OAAQE,CAAAA,CAAeF,CAAAA,CAAE,SAAS,CAAA,CAClC,MAAA,CAAQA,CAAAA,CAAE,YAAcE,CAAAA,CAAeF,CAAAA,CAAE,WAAW,CAAA,CAAIC,CAAAA,CAAM,IAAI,OAAO,CAC3E,EAAE,CAAA,CACF,OAAA,CAAQ,IAAIE,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,QAAS,KAAA,CAAO,OAAQ,CAAA,CAC/B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,QAAS,CAAA,CACjC,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,aAAc,CACxC,CAAC,CAAC,EACJ","file":"collab-list-722OEBJQ.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface Collaborator {\n email: string\n username: string\n role: string\n joined_at: string\n last_active: string | null\n}\n\nexport default async function collabList(folder: string): Promise<void> {\n const data = await apiGet<{ collaborators: Collaborator[] }>(`/api/v1/collab/list?folder=${encodeURIComponent(folder)}`, { authenticated: true })\n const rows = (data.collaborators || []).map(c => ({\n email: c.email,\n user: c.username,\n role: chalk.hex('#7C4DFF')(c.role),\n joined: formatRelative(c.joined_at),\n active: c.last_active ? formatRelative(c.last_active) : chalk.dim('never'),\n }))\n console.log(renderTable(rows, [\n { key: 'email', label: 'Email' },\n { key: 'user', label: 'User' },\n { key: 'role', label: 'Role' },\n { key: 'joined', label: 'Joined' },\n { key: 'active', label: 'Last Active' },\n ]))\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {e}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';async function o(e$1,i){let m=a(`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-ZMB22U2T.js.map
|
|
2
|
+
//# sourceMappingURL=collab-remove-ZMB22U2T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/collab/collab-remove.ts"],"names":["collabRemove","folder","options","spinner","createSpinner","apiPost","logSuccess"],"mappings":"4NAIA,eAAOA,EAAoCC,GAAAA,CAAgBC,CAAAA,CAA2C,CACpG,IAAMC,CAAAA,CAAUC,EAAc,CAAA,SAAA,EAAYF,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,GAAM,MAAM,CAAA,CAC7EE,CAAAA,CAAQ,OAAM,CACd,MAAME,EAAQ,uBAAA,CAAyB,CAAE,MAAA,CAAAJ,GAAAA,CAAQ,MAAOC,CAAAA,CAAQ,KAAM,EAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAChGC,EAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,QAAA,EAAWJ,CAAAA,CAAQ,KAAK,CAAA,OAAA,EAAUD,GAAM,GAAG,EACxD","file":"collab-remove-ZMB22U2T.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabRemove(folder: string, options: { email: string }): Promise<void> {\n const spinner = createSpinner(`Removing ${options.email} from \"${folder}\"...`)\n spinner.start()\n await apiPost('/api/v1/collab/remove', { folder, email: options.email }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Removed ${options.email} from \"${folder}\"`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {e}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import c from'inquirer';async function m(r,t){let{confirm:a$1}=await c.prompt([{type:"input",name:"confirm",message:`Type "${r}" to confirm ownership transfer to ${t.to}:`,validate:s=>s===r?true:"Type the exact folder name to confirm"}]);if(a$1!==r)return;let e$1=a(`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-56MH4IT6.js.map
|
|
2
|
+
//# sourceMappingURL=collab-transfer-56MH4IT6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/collab/collab-transfer.ts"],"names":["collabTransfer","folder","options","confirm","inquirer","v","spinner","createSpinner","apiPost","logSuccess"],"mappings":"oPAKA,eAAOA,CAAAA,CAAsCC,CAAAA,CAAgBC,EAAwC,CACnG,GAAM,CAAE,OAAA,CAAAC,GAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,OAAA,CACN,IAAA,CAAM,UACN,OAAA,CAAS,CAAA,MAAA,EAASH,CAAM,CAAA,mCAAA,EAAsCC,EAAQ,EAAE,CAAA,CAAA,CAAA,CACxE,QAAA,CAAWG,CAAAA,EAAcA,IAAMJ,CAAAA,CAAS,IAAA,CAAO,uCACjD,CAAC,CAAC,EACF,GAAIE,GAAAA,GAAYF,CAAAA,CAAQ,OAExB,IAAMK,GAAAA,CAAUC,CAAAA,CAAc,CAAA,2BAAA,EAA8BN,CAAM,QAAQC,CAAAA,CAAQ,EAAE,CAAA,GAAA,CAAK,CAAA,CACzFI,IAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,yBAAA,CAA2B,CAAE,MAAA,CAAAP,CAAAA,CAAQ,SAAA,CAAWC,CAAAA,CAAQ,EAAG,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACnGI,GAAAA,CAAQ,OAAA,EAAQ,CAChBG,EAAW,CAAA,cAAA,EAAiBR,CAAM,oBAAoBC,CAAAA,CAAQ,EAAE,EAAE,EACpE","file":"collab-transfer-56MH4IT6.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function collabTransfer(folder: string, options: { to: string }): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'input',\n name: 'confirm',\n message: `Type \"${folder}\" to confirm ownership transfer to ${options.to}:`,\n validate: (v: string) => v === folder ? true : 'Type the exact folder name to confirm',\n }])\n if (confirm !== folder) return\n\n const spinner = createSpinner(`Transferring ownership of \"${folder}\" to ${options.to}...`)\n spinner.start()\n await apiPost('/api/v1/collab/transfer', { folder, new_owner: options.to }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Ownership of \"${folder}\" transferred to ${options.to}`)\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
async function e(o){switch(o){case "bash":console.log("# Generate bash completion with: squidcloud completion bash > /etc/bash_completion.d/squidcloud"),console.log(`
|
|
2
|
+
_squidcloud_completions() {
|
|
3
|
+
local cur prev opts
|
|
4
|
+
COMPREPLY=()
|
|
5
|
+
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
6
|
+
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
7
|
+
opts="login logout whoami auth storage deploy sites scripts filereq time collab sign monitor logs doctor version config completion feedback update"
|
|
8
|
+
COMPREPLY=( $(compgen -W "\${opts}" -- \${cur}) )
|
|
9
|
+
return 0
|
|
10
|
+
}
|
|
11
|
+
complete -F _squidcloud_completions squidcloud
|
|
12
|
+
`);break;case "zsh":console.log("#compdef squidcloud"),console.log(`
|
|
13
|
+
_squidcloud() {
|
|
14
|
+
local line
|
|
15
|
+
_arguments -C \\
|
|
16
|
+
"-v[Show version]" \\
|
|
17
|
+
"--version[Show version]" \\
|
|
18
|
+
"--output[Output format]:format:(text json)" \\
|
|
19
|
+
"1: :(login logout whoami auth storage deploy sites scripts filereq time collab sign monitor logs doctor version config completion feedback update)" \\
|
|
20
|
+
"*::arg:->args"
|
|
21
|
+
case $line[1] in
|
|
22
|
+
auth) _arguments "2: :(status sessions revoke)" ;;
|
|
23
|
+
storage) _arguments "2: :(ls upload download cp mv rm mkdir cat info share unshare tag search diff clean)" ;;
|
|
24
|
+
sites) _arguments "2: :(list info open unpublish delete visibility rename rollback deploys logs analytics purge)" ;;
|
|
25
|
+
scripts) _arguments "2: :(list run logs validate init enable disable delete status cancel watch)" ;;
|
|
26
|
+
filereq) _arguments "2: :(list create info submissions export clear delete embed)" ;;
|
|
27
|
+
time) _arguments "2: :(lock unlock status list proof)" ;;
|
|
28
|
+
collab) _arguments "2: :(invite list remove activity leave transfer)" ;;
|
|
29
|
+
sign) _arguments "2: :(request status list cancel verify download)" ;;
|
|
30
|
+
monitor) _arguments "2: :(sites pipelines storage automations)" ;;
|
|
31
|
+
logs) _arguments "2: :(tail search export)" ;;
|
|
32
|
+
config) _arguments "2: :(list set get delete reset)" ;;
|
|
33
|
+
esac
|
|
34
|
+
}
|
|
35
|
+
compdef _squidcloud squidcloud
|
|
36
|
+
`);break;case "fish":console.log("complete -c squidcloud -f"),console.log('complete -c squidcloud -l output -r -f -a "text json"'),console.log('complete -c squidcloud -n "__fish_use_subcommand" -a "login logout whoami auth"'),console.log('complete -c squidcloud -n "__fish_use_subcommand" -a "storage deploy sites scripts filereq"'),console.log('complete -c squidcloud -n "__fish_use_subcommand" -a "time collab sign monitor logs"'),console.log('complete -c squidcloud -n "__fish_use_subcommand" -a "doctor version config completion feedback update"');break;case "powershell":console.log(`
|
|
37
|
+
Register-ArgumentCompleter -Native -CommandName 'squidcloud' -ScriptBlock {
|
|
38
|
+
param($wordToComplete, $commandAst, $cursorPosition)
|
|
39
|
+
$commands = @('login', 'logout', 'whoami', 'auth', 'storage', 'deploy', 'sites', 'scripts', 'filereq', 'time', 'collab', 'sign', 'monitor', 'logs', 'doctor', 'version', 'config', 'completion', 'feedback', 'update')
|
|
40
|
+
$commandAst.CommandElements | Select-Object -Skip 1 | ForEach-Object { $wordToComplete = $_ }
|
|
41
|
+
$commands | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) }
|
|
42
|
+
}
|
|
43
|
+
`);break;default:console.error(`Unknown shell: ${o}. Supported: bash, zsh, fish, powershell`),process.exit(1);}}export{e as default};//# sourceMappingURL=completion-IF3NB7PB.js.map
|
|
44
|
+
//# sourceMappingURL=completion-IF3NB7PB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/util/completion.ts"],"names":["completion","shell"],"mappings":"AAGA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA8B,CACrE,OAAQA,CAAAA,EACN,KAAK,MAAA,CACH,OAAA,CAAQ,GAAA,CAAI,iGAAiG,CAAA,CAC7G,QAAQ,GAAA,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAWjB,CAAA,CACK,MACF,KAAK,KAAA,CACH,QAAQ,GAAA,CAAI,qBAAqB,CAAA,CACjC,OAAA,CAAQ,GAAA,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAwBjB,CAAA,CACK,MACF,KAAK,MAAA,CACH,QAAQ,GAAA,CAAI,2BAA2B,CAAA,CACvC,OAAA,CAAQ,GAAA,CAAI,uDAAuD,CAAA,CACnE,OAAA,CAAQ,IAAI,iFAAiF,CAAA,CAC7F,OAAA,CAAQ,GAAA,CAAI,6FAA6F,CAAA,CACzG,OAAA,CAAQ,GAAA,CAAI,sFAAsF,CAAA,CAClG,OAAA,CAAQ,GAAA,CAAI,yGAAyG,CAAA,CACrH,MACF,KAAK,YAAA,CACH,QAAQ,GAAA,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAOjB,CAAA,CACK,MACF,QACE,OAAA,CAAQ,KAAA,CAAM,CAAA,eAAA,EAAkBA,CAAK,CAAA,wCAAA,CAA0C,CAAA,CAC/E,OAAA,CAAQ,IAAA,CAAK,CAAC,EAClB,CACF","file":"completion-IF3NB7PB.js","sourcesContent":["import { program } from 'commander'\nimport { logRaw } from '../../lib/output/logger.js'\n\nexport default async function completion(shell: string): Promise<void> {\n switch (shell) {\n case 'bash':\n console.log('# Generate bash completion with: squidcloud completion bash > /etc/bash_completion.d/squidcloud')\n console.log(`\n_squidcloud_completions() {\n local cur prev opts\n COMPREPLY=()\n cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n prev=\"\\${COMP_WORDS[COMP_CWORD-1]}\"\n opts=\"login logout whoami auth storage deploy sites scripts filereq time collab sign monitor logs doctor version config completion feedback update\"\n COMPREPLY=( $(compgen -W \"\\${opts}\" -- \\${cur}) )\n return 0\n}\ncomplete -F _squidcloud_completions squidcloud\n`)\n break\n case 'zsh':\n console.log('#compdef squidcloud')\n console.log(`\n_squidcloud() {\n local line\n _arguments -C \\\\\n \"-v[Show version]\" \\\\\n \"--version[Show version]\" \\\\\n \"--output[Output format]:format:(text json)\" \\\\\n \"1: :(login logout whoami auth storage deploy sites scripts filereq time collab sign monitor logs doctor version config completion feedback update)\" \\\\\n \"*::arg:->args\"\n case $line[1] in\n auth) _arguments \"2: :(status sessions revoke)\" ;;\n storage) _arguments \"2: :(ls upload download cp mv rm mkdir cat info share unshare tag search diff clean)\" ;;\n sites) _arguments \"2: :(list info open unpublish delete visibility rename rollback deploys logs analytics purge)\" ;;\n scripts) _arguments \"2: :(list run logs validate init enable disable delete status cancel watch)\" ;;\n filereq) _arguments \"2: :(list create info submissions export clear delete embed)\" ;;\n time) _arguments \"2: :(lock unlock status list proof)\" ;;\n collab) _arguments \"2: :(invite list remove activity leave transfer)\" ;;\n sign) _arguments \"2: :(request status list cancel verify download)\" ;;\n monitor) _arguments \"2: :(sites pipelines storage automations)\" ;;\n logs) _arguments \"2: :(tail search export)\" ;;\n config) _arguments \"2: :(list set get delete reset)\" ;;\n esac\n}\ncompdef _squidcloud squidcloud\n`)\n break\n case 'fish':\n console.log('complete -c squidcloud -f')\n console.log('complete -c squidcloud -l output -r -f -a \"text json\"')\n console.log('complete -c squidcloud -n \"__fish_use_subcommand\" -a \"login logout whoami auth\"')\n console.log('complete -c squidcloud -n \"__fish_use_subcommand\" -a \"storage deploy sites scripts filereq\"')\n console.log('complete -c squidcloud -n \"__fish_use_subcommand\" -a \"time collab sign monitor logs\"')\n console.log('complete -c squidcloud -n \"__fish_use_subcommand\" -a \"doctor version config completion feedback update\"')\n break\n case 'powershell':\n console.log(`\nRegister-ArgumentCompleter -Native -CommandName 'squidcloud' -ScriptBlock {\n param($wordToComplete, $commandAst, $cursorPosition)\n $commands = @('login', 'logout', 'whoami', 'auth', 'storage', 'deploy', 'sites', 'scripts', 'filereq', 'time', 'collab', 'sign', 'monitor', 'logs', 'doctor', 'version', 'config', 'completion', 'feedback', 'update')\n $commandAst.CommandElements | Select-Object -Skip 1 | ForEach-Object { $wordToComplete = $_ }\n $commands | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) }\n}\n`)\n break\n default:\n console.error(`Unknown shell: ${shell}. Supported: bash, zsh, fish, powershell`)\n process.exit(1)\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"config-7G24FXQJ.js"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b}from'./chunk-LWB2J3KU.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';async function t(o){b().delete(o),g(`Config ${o} deleted`);}export{t as default};//# sourceMappingURL=config-delete-VSIFFODZ.js.map
|
|
2
|
+
//# sourceMappingURL=config-delete-VSIFFODZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/util/config-delete.ts"],"names":["configDelete","key","getConfig","logSuccess"],"mappings":"oGAGA,eAAOA,CAAAA,CAAoCC,CAAAA,CAA4B,CACtDC,CAAAA,EAAU,CAClB,MAAA,CAAOD,CAAG,CAAA,CACjBE,CAAAA,CAAW,CAAA,OAAA,EAAUF,CAAG,CAAA,QAAA,CAAU,EACpC","file":"config-delete-VSIFFODZ.js","sourcesContent":["import { getConfig } from './config.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function configDelete(key: string): Promise<void> {\n const config = getConfig()\n config.delete(key)\n logSuccess(`Config ${key} deleted`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b}from'./chunk-LWB2J3KU.js';import'./chunk-THMWE2I6.js';import {f as f$1,m}from'./chunk-QT7R3AXE.js';async function f(o){let i=b().get(o);if(f$1()){m({[o]:i});return}console.log(String(i??""));}export{f as default};//# sourceMappingURL=config-get-DDNSM5EH.js.map
|
|
2
|
+
//# sourceMappingURL=config-get-DDNSM5EH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/util/config-get.ts"],"names":["configGet","key","value","getConfig","isJsonMode","logJSON"],"mappings":"6GAIA,eAAOA,CAAAA,CAAiCC,CAAAA,CAA4B,CAElE,IAAMC,CAAAA,CADSC,CAAAA,EAAU,CACJ,GAAA,CAAIF,CAAG,CAAA,CAC5B,GAAIG,GAAAA,GAAc,CAChBC,CAAAA,CAAQ,CAAE,CAACJ,CAAG,EAAGC,CAAM,CAAC,CAAA,CACxB,MACF,CACA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAOA,CAAAA,EAAS,EAAE,CAAC,EACjC","file":"config-get-DDNSM5EH.js","sourcesContent":["import { getConfig } from './config.js'\nimport { logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nexport default async function configGet(key: string): Promise<void> {\n const config = getConfig()\n const value = config.get(key)\n if (isJsonMode()) {\n logJSON({ [key]: value })\n return\n }\n console.log(String(value ?? ''))\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b}from'./chunk-LWB2J3KU.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import r from'inquirer';async function i(){let{confirm:t}=await r.prompt([{type:"confirm",name:"confirm",message:"Reset all configuration to defaults?",default:false}]);t&&(b().clear(),g("Configuration reset to defaults"));}export{i as default};//# sourceMappingURL=config-reset-ZFMP4J5H.js.map
|
|
2
|
+
//# sourceMappingURL=config-reset-ZFMP4J5H.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/util/config-reset.ts"],"names":["configReset","confirm","inquirer","getConfig","logSuccess"],"mappings":"4HAIA,eAAOA,CAAAA,EAAoD,CACzD,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,sCAAA,CACT,OAAA,CAAS,KACX,CAAC,CAAC,CAAA,CACGD,CAAAA,GACLE,GAAU,CAAE,KAAA,EAAM,CAClBC,CAAAA,CAAW,iCAAiC,CAAA,EAC9C","file":"config-reset-ZFMP4J5H.js","sourcesContent":["import inquirer from 'inquirer'\nimport { getConfig } from './config.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function configReset(): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: 'Reset all configuration to defaults?',\n default: false,\n }])\n if (!confirm) return\n getConfig().clear()\n logSuccess('Configuration reset to defaults')\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b}from'./chunk-LWB2J3KU.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';async function f(t,o){let r=b(),i=o==="true"?true:o==="false"?false:isNaN(Number(o))?o:Number(o);r.set(t,i),g(`Config ${t} set to ${o}`);}export{f as default};//# sourceMappingURL=config-set-O6JKOGGN.js.map
|
|
2
|
+
//# sourceMappingURL=config-set-O6JKOGGN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/util/config-set.ts"],"names":["configSet","key","value","config","getConfig","parsed","logSuccess"],"mappings":"oGAGA,eAAOA,CAAAA,CAAiCC,CAAAA,CAAaC,CAAAA,CAA8B,CACjF,IAAMC,CAAAA,CAASC,CAAAA,EAAU,CACnBC,CAAAA,CAAkBH,IAAU,MAAA,CAAS,IAAA,CAAOA,CAAAA,GAAU,OAAA,CAAU,MAAS,KAAA,CAAM,MAAA,CAAOA,CAAK,CAAC,EAAoBA,CAAAA,CAAhB,MAAA,CAAOA,CAAK,CAAA,CAClHC,EAAO,GAAA,CAAIF,CAAAA,CAAKI,CAAM,CAAA,CACtBC,EAAW,CAAA,OAAA,EAAUL,CAAG,CAAA,QAAA,EAAWC,CAAK,EAAE,EAC5C","file":"config-set-O6JKOGGN.js","sourcesContent":["import { getConfig } from './config.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function configSet(key: string, value: string): Promise<void> {\n const config = getConfig()\n const parsed: unknown = value === 'true' ? true : value === 'false' ? false : !isNaN(Number(value)) ? Number(value) : value\n config.set(key, parsed)\n logSuccess(`Config ${key} set to ${value}`)\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-MKRWNV2T.js';import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {e}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {h as h$1,i,f,m,g,c,b}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.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$2=d?h.resolve(d):process.cwd(),r=a("Analyzing project...");r.start();let t=await F(a$2);t.type==="invalid"&&(r.fail(),h$1(`No deployable content found at ${a$2}. Provide an HTML file or folder containing HTML files.`),process.exit(1)),t.type==="codebase"&&!t.hasIndexHtml&&(r.warn(),i("No index.html found at root. Scanning one level deep for entry point...")),r.text="Uploading files...";let l={source:a$2,type:t.type,slug:e$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$1(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(`${o.file_count} files \xB7 ${o.deploy_time_ms}ms`)}`);}catch(o){throw r.fail(),o}}
|
|
2
|
+
export{L as default};//# sourceMappingURL=deploy-WK3VAA7D.js.map
|
|
3
|
+
//# sourceMappingURL=deploy-WK3VAA7D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/deploy/detector.ts","../src/commands/deploy/index.ts"],"names":["detectProject","targetPath","resolved","path","stat","fs","walk","dir","entries","entry","fullPath","totalFiles","htmlFiles","hasIndexHtml","f","deploy","target","options","deployPath","spinner","createSpinner","project","logError","logWarn","deployOptions","isAllowedFile","allowedFiles","ignoredFiles","progressBar","cliProgress","chalk","formData","uploadedCount","filePath","relativePath","content","blob","result","apiPost","siteUrl","clipboard","isJsonMode","logJSON","logSuccess","copied","muted","err"],"mappings":"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","file":"deploy-WK3VAA7D.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nexport type DeployType = 'single-file' | 'codebase' | 'invalid'\n\nexport interface DetectedProject {\n type: DeployType\n rootPath: string\n hasIndexHtml: boolean\n htmlFiles: string[]\n totalFiles: number\n}\n\nexport async function detectProject(targetPath: string): Promise<DetectedProject> {\n const resolved = path.resolve(targetPath)\n const stat = fs.statSync(resolved)\n\n if (stat.isFile()) {\n const ext = path.extname(resolved).toLowerCase()\n if (ext === '.html') {\n return {\n type: 'single-file',\n rootPath: resolved,\n hasIndexHtml: true,\n htmlFiles: [resolved],\n totalFiles: 1,\n }\n }\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n }\n\n if (stat.isDirectory()) {\n const htmlFiles: string[] = []\n let totalFiles = 0\n\n function walk(dir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n totalFiles++\n if (entry.name.endsWith('.html')) {\n htmlFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(resolved)\n\n if (htmlFiles.length === 0) {\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles }\n }\n\n const hasIndexHtml = htmlFiles.some(f => path.basename(f).toLowerCase() === 'index.html')\n\n return {\n type: 'codebase',\n rootPath: resolved,\n hasIndexHtml,\n htmlFiles,\n totalFiles,\n }\n }\n\n return { type: 'invalid', rootPath: resolved, hasIndexHtml: false, htmlFiles: [], totalFiles: 0 }\n}\n","import path from 'node:path'\nimport fs from 'node:fs'\nimport { detectProject, isAllowedFile } from '../../lib/deploy/index.js'\nimport { apiPost, apiUpload } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logError, logInfo, logJSON, logWarn } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport { formatBytes } from '../../lib/utils/format.js'\nimport clipboard from 'clipboardy'\nimport chalk from 'chalk'\nimport { copied, muted } from '../../lib/output/brand.js'\nimport cliProgress from 'cli-progress'\n\nexport default async function deploy(target?: string, options?: {\n name?: string\n env?: string\n preview?: boolean\n noWait?: boolean\n force?: boolean\n output?: string\n}): Promise<void> {\n const deployPath = target ? path.resolve(target) : process.cwd()\n\n const spinner = createSpinner('Analyzing project...')\n spinner.start()\n\n const project = await detectProject(deployPath)\n\n if (project.type === 'invalid') {\n spinner.fail()\n logError(`No deployable content found at ${deployPath}. Provide an HTML file or folder containing HTML files.`)\n process.exit(1)\n }\n\n if (project.type === 'codebase' && !project.hasIndexHtml) {\n spinner.warn()\n logWarn('No index.html found at root. Scanning one level deep for entry point...')\n }\n\n spinner.text = 'Uploading files...'\n\n const deployOptions: Record<string, unknown> = {\n source: deployPath,\n type: project.type,\n slug: options?.name,\n environment: options?.env || (options?.preview ? 'preview' : 'production'),\n force: options?.force || false,\n }\n\n if (project.type === 'codebase') {\n const files: { path: string; content: string }[] = []\n const allowedFiles: string[] = []\n const ignoredFiles: string[] = []\n\n function walk(dir: string): void {\n const entries = fs.readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {\n walk(fullPath)\n }\n } else if (entry.isFile()) {\n if (isAllowedFile(entry.name)) {\n allowedFiles.push(fullPath)\n } else {\n ignoredFiles.push(fullPath)\n }\n }\n }\n }\n\n walk(project.rootPath)\n\n if (!options?.force && project.type === 'codebase') {\n spinner.text = 'Computing diff...'\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${chalk.hex('#7C4DFF')('▸')} Uploading |${chalk.hex('#7C4DFF')('{bar}')}| {percentage}% | {value}/{total} files | {speed}`,\n barCompleteChar: '█',\n barIncompleteChar: '░',\n hideCursor: true,\n })\n\n progressBar.start(allowedFiles.length, 0)\n\n const formData = new FormData()\n let uploadedCount = 0\n\n for (const filePath of allowedFiles) {\n const relativePath = path.relative(project.rootPath, filePath)\n const content = fs.readFileSync(filePath)\n const blob = new Blob([content])\n formData.append('files', blob, relativePath)\n uploadedCount++\n progressBar.update(uploadedCount)\n }\n\n progressBar.stop()\n spinner.stop()\n\n deployOptions.files = formData\n }\n\n if (project.type === 'single-file') {\n const content = fs.readFileSync(project.rootPath, 'utf-8')\n deployOptions.htmlContent = content\n }\n\n spinner.text = 'Deploying to SquidCloud...'\n spinner.start()\n\n try {\n const result = await apiPost<{\n url: string\n deploy_id: string\n file_count: number\n deploy_time_ms: number\n }>('/api/v1/deploy', deployOptions, { authenticated: true })\n\n spinner.succeed()\n\n const siteUrl = result.url || `https://squidcloud.vercel.app/sites/${options?.name || result.deploy_id}`\n\n try {\n await clipboard.write(siteUrl)\n } catch {\n // clipboard not available\n }\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n\n logSuccess(`Deployed successfully!`)\n console.log(` ${chalk.hex('#4FC3F7')(siteUrl)} ${copied('')}`)\n if (result.file_count) {\n console.log(` ${muted(`${result.file_count} files · ${result.deploy_time_ms}ms`)}`)\n }\n } catch (err) {\n spinner.fail()\n throw err\n }\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d as d$1}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {f,m as m$1,l as l$1}from'./chunk-QT7R3AXE.js';import {m,l}from'./chunk-C5KZCYJ4.js';import e from'chalk';async function d(m$2){let t=[];parseInt(process.version.slice(1),10)>=20?t.push({name:"Node.js Version",status:"pass",message:`${process.version} (20+ required)`}):t.push({name:"Node.js Version",status:"fail",message:`${process.version} \u2014 upgrade to 20+`});let o=await m();if(o){let a=o.device_fingerprint===l();t.push({name:"Auth Session",status:a?"pass":"warn",message:a?`Authenticated as ${o.user.email}`:"Device fingerprint mismatch \u2014 may need re-login"});}else t.push({name:"Auth Session",status:"warn",message:"Not authenticated \u2014 run `squidcloud login`"});try{await d$1("/api/health"),t.push({name:"Network",status:"pass",message:"Connected to SquidCloud API"});}catch{t.push({name:"Network",status:"fail",message:"Cannot reach SquidCloud API"});}if(m$2?.security){t.push({name:"Device Fingerprint",status:"pass",message:l().slice(0,16)+"..."});try{let a=await d$1("/api/auth/ssp/security-check",{authenticated:!0});t.push({name:"Server Security",status:"pass",message:"All checks passed"});}catch{t.push({name:"Server Security",status:"warn",message:"Could not verify all security checks"});}}if(f()){m$1({checks:t});return}l$1(""),l$1(e.bold(" SquidCloud Diagnostics")),l$1(e.dim(" \u2500\u2500\u2500".repeat(10))),l$1("");for(let a of t){let p=a.status==="pass"?e.green("\u2713"):a.status==="warn"?e.yellow("\u26A0"):e.red("\u2717");l$1(` ${p} ${e.bold(a.name)}`),l$1(` ${e.dim(a.message)}`),l$1("");}l$1(e.bold(" Environment")),l$1(e.dim(" \u2500\u2500\u2500".repeat(10))),l$1(""),l$1(` ${e.dim("Platform:")} ${process.platform} ${process.arch}`),l$1(` ${e.dim("Node:")} ${process.version}`),l$1(` ${e.dim("CWD:")} ${process.cwd()}`),l$1("");}export{d as default};//# sourceMappingURL=doctor-C7TZGTCO.js.map
|
|
2
|
+
//# sourceMappingURL=doctor-C7TZGTCO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/util/doctor.ts"],"names":["doctor","options","checks","session","loadSession","fpMatch","computeDeviceFingerprint","apiGet","securityInfo","isJsonMode","logJSON","logRaw","chalk","check","icon"],"mappings":"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","file":"doctor-C7TZGTCO.js","sourcesContent":["import envinfo from 'envinfo'\nimport chalk from 'chalk'\nimport { loadSession } from '../../lib/auth/session.js'\nimport { computeDeviceFingerprint } from '../../lib/auth/fingerprint.js'\nimport { apiGet } from '../../lib/api/client.js'\nimport { logSuccess, logError, logInfo, logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nexport default async function doctor(options?: { security?: boolean }): Promise<void> {\n const checks: { name: string; status: 'pass' | 'fail' | 'warn'; message: string }[] = []\n\n // Node version check\n const nodeMajor = parseInt(process.version.slice(1), 10)\n if (nodeMajor >= 20) {\n checks.push({ name: 'Node.js Version', status: 'pass', message: `${process.version} (20+ required)` })\n } else {\n checks.push({ name: 'Node.js Version', status: 'fail', message: `${process.version} — upgrade to 20+` })\n }\n\n // Auth check\n const session = await loadSession()\n if (session) {\n const fpMatch = session.device_fingerprint === computeDeviceFingerprint()\n checks.push({\n name: 'Auth Session',\n status: fpMatch ? 'pass' : 'warn',\n message: fpMatch ? `Authenticated as ${session.user.email}` : 'Device fingerprint mismatch — may need re-login',\n })\n } else {\n checks.push({ name: 'Auth Session', status: 'warn', message: 'Not authenticated — run `squidcloud login`' })\n }\n\n // Network connectivity\n try {\n await apiGet('/api/health')\n checks.push({ name: 'Network', status: 'pass', message: 'Connected to SquidCloud API' })\n } catch {\n checks.push({ name: 'Network', status: 'fail', message: 'Cannot reach SquidCloud API' })\n }\n\n if (options?.security) {\n checks.push({\n name: 'Device Fingerprint',\n status: 'pass',\n message: computeDeviceFingerprint().slice(0, 16) + '...',\n })\n try {\n const securityInfo = await apiGet('/api/auth/ssp/security-check', { authenticated: true })\n checks.push({ name: 'Server Security', status: 'pass', message: 'All checks passed' })\n } catch {\n checks.push({ name: 'Server Security', status: 'warn', message: 'Could not verify all security checks' })\n }\n }\n\n if (isJsonMode()) {\n logJSON({ checks })\n return\n }\n\n logRaw('')\n logRaw(chalk.bold(' SquidCloud Diagnostics'))\n logRaw(chalk.dim(' ───'.repeat(10)))\n logRaw('')\n\n for (const check of checks) {\n const icon = check.status === 'pass' ? chalk.green('✓') : check.status === 'warn' ? chalk.yellow('⚠') : chalk.red('✗')\n logRaw(` ${icon} ${chalk.bold(check.name)}`)\n logRaw(` ${chalk.dim(check.message)}`)\n logRaw('')\n }\n\n logRaw(chalk.bold(' Environment'))\n logRaw(chalk.dim(' ───'.repeat(10)))\n logRaw('')\n logRaw(` ${chalk.dim('Platform:')} ${process.platform} ${process.arch}`)\n logRaw(` ${chalk.dim('Node:')} ${process.version}`)\n logRaw(` ${chalk.dim('CWD:')} ${process.cwd()}`)\n logRaw('')\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {j}from'./chunk-QT7R3AXE.js';import r from'open';async function i(){let o="https://squidcloud.vercel.app/feedback";j(`Opening ${o} in your browser...`),await r(o);}
|
|
2
|
+
export{i as default};//# sourceMappingURL=feedback-QUGQAWZB.js.map
|
|
3
|
+
//# sourceMappingURL=feedback-QUGQAWZB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/util/feedback.ts"],"names":["feedback","url","logInfo","open"],"mappings":"wDAGA,eAAOA,CAAAA,EAAiD,CACtD,IAAMC,CAAAA,CAAM,wCAAA,CACZC,CAAAA,CAAQ,CAAA,QAAA,EAAWD,CAAG,CAAA,mBAAA,CAAqB,CAAA,CAC3C,MAAME,CAAAA,CAAKF,CAAG,EAChB","file":"feedback-QUGQAWZB.js","sourcesContent":["import open from 'open'\nimport { logInfo } from '../../lib/output/logger.js'\n\nexport default async function feedback(): Promise<void> {\n const url = 'https://squidcloud.vercel.app/feedback'\n logInfo(`Opening ${url} in your browser...`)\n await open(url)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {g}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g as g$1}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.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=a("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-2ERBEAEY.js.map
|
|
2
|
+
//# sourceMappingURL=forms-clear-2ERBEAEY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/forms/forms-clear.ts"],"names":["formsClear","id","confirm","inquirer","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"2PAKA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA2B,CAClE,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,EAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,sEAAA,CACT,OAAA,CAAS,KACX,CAAC,CAAC,CAAA,CACF,GAAI,CAACD,CAAAA,CAAS,OACd,IAAME,CAAAA,CAAUC,CAAAA,CAAc,yBAAyB,CAAA,CACvDD,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAU,iBAAiBL,CAAE,CAAA,YAAA,CAAA,CAAgB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC1EG,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,GAAAA,CAAW,yBAAyB,EACtC","file":"forms-clear-2ERBEAEY.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiDelete } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function formsClear(id: string): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: 'Delete ALL submissions for this file request? This cannot be undone.',\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner('Clearing submissions...')\n spinner.start()\n await apiDelete(`/api/v1/forms/${id}/submissions`, { authenticated: true })\n spinner.succeed()\n logSuccess('All submissions cleared')\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {e}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {f,m,g}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';async function a(r,c){let e$1=a$1(`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-3ONGTRQZ.js.map
|
|
2
|
+
//# sourceMappingURL=forms-create-3ONGTRQZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/forms/forms-create.ts"],"names":["formsCreate","name","options","spinner","createSpinner","result","apiPost","isJsonMode","logJSON","logSuccess"],"mappings":"uOAKA,eAAOA,CAAAA,CAAmCC,CAAAA,CAAcC,CAAAA,CAA8C,CACpG,IAAMC,IAAUC,GAAAA,CAAc,CAAA,uBAAA,EAA0BH,CAAI,CAAA,IAAA,CAAM,CAAA,CAClEE,GAAAA,CAAQ,OAAM,CACd,IAAME,CAAAA,CAAS,MAAMC,CAAAA,CAAqC,eAAA,CAAiB,CACzE,IAAA,CAAAL,CAAAA,CACA,MAAA,CAAQC,CAAAA,EAAS,MACnB,CAAA,CAAG,CAAE,cAAe,IAAK,CAAC,CAAA,CAG1B,GAFAC,GAAAA,CAAQ,OAAA,GAEJI,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAM,CAAA,CACd,MACF,CACAI,CAAAA,CAAW,CAAA,cAAA,EAAiBR,CAAI,CAAA,WAAA,EAAcI,CAAAA,CAAO,EAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAAG,EACxE","file":"forms-create-3ONGTRQZ.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess, logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\n\nexport default async function formsCreate(name: string, options?: { folder?: string }): Promise<void> {\n const spinner = createSpinner(`Creating file request \"${name}\"...`)\n spinner.start()\n const result = await apiPost<{ id: string; url: string }>('/api/v1/forms', {\n name,\n folder: options?.folder,\n }, { authenticated: true })\n spinner.succeed()\n\n if (isJsonMode()) {\n logJSON(result)\n return\n }\n logSuccess(`File request \"${name}\" created (${result.id.slice(0, 8)})`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {g}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g as g$1}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import s from'inquirer';async function p(t){let e=(await(await import('./client-FRNT7PEB.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=a("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-CKLGD52U.js.map
|
|
2
|
+
//# sourceMappingURL=forms-delete-CKLGD52U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/forms/forms-delete.ts"],"names":["formsDelete","id","formName","confirm","inquirer","v","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"2PAKA,eAAOA,CAAAA,CAAmCC,CAAAA,CAA2B,CAEnE,IAAMC,CAAAA,CAAAA,CADO,KAAA,CAAO,aAAa,sBAAyB,CAAA,EAAG,MAAA,CAAmC,CAAA,cAAA,EAAiBD,CAAE,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACxH,IAAA,CAAK,IAAA,CAErB,CAAE,QAAAE,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,OAAO,CAAC,CACzC,KAAM,OAAA,CACN,IAAA,CAAM,UACN,OAAA,CAAS,CAAA,MAAA,EAASF,CAAQ,CAAA,8DAAA,CAAA,CAC1B,SAAWG,CAAAA,EAAcA,CAAAA,GAAMH,CAAAA,CAAW,IAAA,CAAO,gCACnD,CAAC,CAAC,CAAA,CACF,GAAIC,IAAYD,CAAAA,CAAU,OAE1B,IAAMI,CAAAA,CAAUC,CAAAA,CAAc,0BAA0B,CAAA,CACxDD,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAU,CAAA,cAAA,EAAiBP,CAAE,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC9DK,EAAQ,OAAA,EAAQ,CAChBG,IAAW,CAAA,cAAA,EAAiBP,CAAQ,WAAW,EACjD","file":"forms-delete-CKLGD52U.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiDelete } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function formsDelete(id: string): Promise<void> {\n const data = await (await import('../../lib/api/client.js')).apiGet<{ form: { name: string } }>(`/api/v1/forms/${id}`, { authenticated: true })\n const formName = data.form.name\n\n const { confirm } = await inquirer.prompt([{\n type: 'input',\n name: 'confirm',\n message: `Type \"${formName}\" to permanently delete this file request and all submissions:`,\n validate: (v: string) => v === formName ? true : 'Type the exact name to confirm',\n }])\n if (confirm !== formName) return\n\n const spinner = createSpinner('Deleting file request...')\n spinner.start()\n await apiDelete(`/api/v1/forms/${id}`, { authenticated: true })\n spinner.succeed()\n logSuccess(`File request \"${formName}\" deleted`)\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-C5KZCYJ4.js';import r from'chalk';import m from'clipboardy';async function a(i){let o=await d(`/api/v1/forms/${i}/embed`,{authenticated:true});try{await m.write(o.html);}catch{}console.log(o.html),console.log(r.dim(`
|
|
2
|
+
(copied to clipboard)`));}export{a as default};//# sourceMappingURL=forms-embed-4S46VDP4.js.map
|
|
3
|
+
//# sourceMappingURL=forms-embed-4S46VDP4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/forms/forms-embed.ts"],"names":["formsEmbed","id","data","apiGet","clipboard","chalk"],"mappings":"2IAKA,eAAOA,EAAkCC,CAAAA,CAA2B,CAClE,IAAMC,CAAAA,CAAO,MAAMC,CAAAA,CAAyB,CAAA,cAAA,EAAiBF,CAAE,CAAA,MAAA,CAAA,CAAU,CAAE,cAAe,IAAK,CAAC,CAAA,CAChG,GAAI,CACF,MAAMG,CAAAA,CAAU,MAAMF,CAAAA,CAAK,IAAI,EACjC,CAAA,KAAQ,CAER,CACA,OAAA,CAAQ,IAAIA,CAAAA,CAAK,IAAI,EACrB,OAAA,CAAQ,GAAA,CAAIG,EAAM,GAAA,CAAI;AAAA,qBAAA,CAAyB,CAAC,EAClD","file":"forms-embed-4S46VDP4.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport chalk from 'chalk'\nimport clipboard from 'clipboardy'\nimport { copied } from '../../lib/output/brand.js'\n\nexport default async function formsEmbed(id: string): Promise<void> {\n const data = await apiGet<{ html: string }>(`/api/v1/forms/${id}/embed`, { authenticated: true })\n try {\n await clipboard.write(data.html)\n } catch {\n // ignore\n }\n console.log(data.html)\n console.log(chalk.dim(`\\n(copied to clipboard)`))\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import n from'fs';import p from'path';async function m(t){let o=a("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-WGHH5TBF.js.map
|
|
2
|
+
//# sourceMappingURL=forms-export-WGHH5TBF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/forms/forms-export.ts"],"names":["formsExport","id","spinner","createSpinner","data","apiGet","filePath","path","fs","logSuccess"],"mappings":"kQAMA,eAAOA,CAAAA,CAAmCC,CAAAA,CAA2B,CACnE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,0BAA0B,CAAA,CACxDD,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,CAAAA,CAAO,MAAMC,CAAAA,CAAwB,CAAA,cAAA,EAAiBJ,CAAE,CAAA,OAAA,CAAA,CAAW,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAChGC,EAAQ,OAAA,EAAQ,CAChB,IAAMI,CAAAA,CAAWC,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAI,CAAG,CAAA,QAAA,EAAWN,CAAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,gBAAA,CAAkB,CAAA,CACrFO,CAAAA,CAAG,aAAA,CAAcF,CAAAA,CAAUF,CAAAA,CAAK,GAAA,CAAK,OAAO,CAAA,CAC5CK,CAAAA,CAAW,CAAA,YAAA,EAAeH,CAAQ,CAAA,CAAE,EACtC","file":"forms-export-WGHH5TBF.js","sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport { apiGet } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function formsExport(id: string): Promise<void> {\n const spinner = createSpinner('Exporting submissions...')\n spinner.start()\n const data = await apiGet<{ csv: string }>(`/api/v1/forms/${id}/export`, { authenticated: true })\n spinner.succeed()\n const filePath = path.join(process.cwd(), `filereq-${id.slice(0, 8)}-submissions.csv`)\n fs.writeFileSync(filePath, data.csv, 'utf-8')\n logSuccess(`Exported to ${filePath}`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {f,m,l}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import o from'chalk';async function a(m$1){let i=(await d(`/api/v1/forms/${m$1}`,{authenticated:true})).form;if(f()){m(i);return}l(""),l(` ${o.bold(i.name)}`),l(o.dim(" \u2500\u2500\u2500".repeat(8))),l(` ${o.bold("ID:")} ${i.id}`),l(` ${o.bold("Folder:")} ${i.folder||o.dim("none")}`),l(` ${o.bold("Submissions:")} ${i.submission_count}`),l(` ${o.bold("Spam Protection:")} ${i.spam_protection?o.green("on"):o.dim("off")}`),l(` ${o.bold("Active:")} ${i.is_active?o.green("yes"):o.yellow("no")}`),l(` ${o.bold("Embed:")} ${o.dim(i.embed_url)}`),l("");}export{a as default};//# sourceMappingURL=forms-info-OMXUOOBT.js.map
|
|
2
|
+
//# sourceMappingURL=forms-info-OMXUOOBT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/forms/forms-info.ts"],"names":["formsInfo","id","f","apiGet","isJsonMode","logJSON","logRaw","chalk"],"mappings":"yJAeA,eAAOA,CAAAA,CAAiCC,IAA2B,CAEjE,IAAMC,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAA6B,CAAA,cAAA,EAAiBF,GAAE,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC/E,IAAA,CAEf,GAAIG,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAC,CAAA,CACT,MACF,CAEAI,CAAAA,CAAO,EAAE,CAAA,CACTA,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAKL,CAAAA,CAAE,IAAI,CAAC,CAAA,CAAE,CAAA,CAChCI,EAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CACnCD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,KAAK,CAAC,CAAA,cAAA,EAAiBL,CAAAA,CAAE,EAAE,EAAE,CAAA,CACpDI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,UAAA,EAAaL,EAAE,MAAA,EAAUK,CAAAA,CAAM,GAAA,CAAI,MAAM,CAAC,CAAA,CAAE,CAAA,CAC7ED,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,cAAc,CAAC,CAAA,KAAA,EAAQL,CAAAA,CAAE,gBAAgB,CAAA,CAAE,EAClEI,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,kBAAkB,CAAC,CAAA,CAAA,EAAIL,CAAAA,CAAE,gBAAkBK,CAAAA,CAAM,KAAA,CAAM,IAAI,CAAA,CAAIA,CAAAA,CAAM,GAAA,CAAI,KAAK,CAAC,EAAE,CAAA,CACxGD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,UAAA,EAAaL,EAAE,SAAA,CAAYK,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,CAAAA,CAAM,MAAA,CAAO,IAAI,CAAC,CAAA,CAAE,CAAA,CACrGD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,QAAQ,CAAC,cAAcA,CAAAA,CAAM,GAAA,CAAIL,CAAAA,CAAE,SAAS,CAAC,CAAA,CAAE,CAAA,CACtEI,CAAAA,CAAO,EAAE,EACX","file":"forms-info-OMXUOOBT.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\n\ninterface FormDetail {\n id: string\n name: string\n folder: string | null\n submission_count: number\n spam_protection: boolean\n is_active: boolean\n embed_url: string\n}\n\nexport default async function formsInfo(id: string): Promise<void> {\n const data = await apiGet<{ form: FormDetail }>(`/api/v1/forms/${id}`, { authenticated: true })\n const f = data.form\n\n if (isJsonMode()) {\n logJSON(f)\n return\n }\n\n logRaw('')\n logRaw(` ${chalk.bold(f.name)}`)\n logRaw(chalk.dim(' ───'.repeat(8)))\n logRaw(` ${chalk.bold('ID:')} ${f.id}`)\n logRaw(` ${chalk.bold('Folder:')} ${f.folder || chalk.dim('none')}`)\n logRaw(` ${chalk.bold('Submissions:')} ${f.submission_count}`)\n logRaw(` ${chalk.bold('Spam Protection:')} ${f.spam_protection ? chalk.green('on') : chalk.dim('off')}`)\n logRaw(` ${chalk.bold('Active:')} ${f.is_active ? chalk.green('yes') : chalk.yellow('no')}`)\n logRaw(` ${chalk.bold('Embed:')} ${chalk.dim(f.embed_url)}`)\n logRaw('')\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {b}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import o from'chalk';async function s(){let r=((await d("/api/v1/forms",{authenticated:true})).forms||[]).map(e=>({id:o.dim(e.id.slice(0,8)),name:o.hex("#4FC3F7")(e.name),folder:o.dim(e.folder||"-"),submissions:String(e.submission_count),created:b(e.created_at),active:e.is_active?o.green("yes"):o.yellow("no")}));console.log(a(r,[{key:"id",label:"ID"},{key:"name",label:"Name"},{key:"folder",label:"Folder"},{key:"submissions",label:"Submissions"},{key:"created",label:"Created"},{key:"active",label:"Active"}]));}export{s as default};//# sourceMappingURL=forms-list-ZRKQXGLM.js.map
|
|
2
|
+
//# sourceMappingURL=forms-list-ZRKQXGLM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/forms/forms-list.ts"],"names":["formsList","rows","apiGet","f","chalk","formatDate","renderTable"],"mappings":"qNAcA,eAAOA,CAAAA,EAAkD,CAEvD,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAA8B,eAAA,CAAiB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACtE,KAAA,EAAS,EAAC,EAAG,GAAA,CAAIC,CAAAA,GAAM,CACxC,EAAA,CAAIC,CAAAA,CAAM,GAAA,CAAID,CAAAA,CAAE,EAAA,CAAG,KAAA,CAAM,EAAG,CAAC,CAAC,CAAA,CAC9B,IAAA,CAAMC,CAAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAED,CAAAA,CAAE,IAAI,CAAA,CACjC,MAAA,CAAQC,CAAAA,CAAM,IAAID,CAAAA,CAAE,MAAA,EAAU,GAAG,CAAA,CACjC,WAAA,CAAa,MAAA,CAAOA,CAAAA,CAAE,gBAAgB,CAAA,CACtC,OAAA,CAASE,CAAAA,CAAWF,CAAAA,CAAE,UAAU,CAAA,CAChC,OAAQA,CAAAA,CAAE,SAAA,CAAYC,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAA,CAAIA,EAAM,MAAA,CAAO,IAAI,CAC9D,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,IAAIE,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,IAAA,CAAM,KAAA,CAAO,IAAK,CAAA,CACzB,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,EAC7B,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,QAAS,CAAA,CACjC,CAAE,GAAA,CAAK,aAAA,CAAe,KAAA,CAAO,aAAc,CAAA,CAC3C,CAAE,IAAK,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CACnC,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,QAAS,CACnC,CAAC,CAAC,EACJ","file":"forms-list-ZRKQXGLM.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatDate } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface FormInfo {\n id: string\n name: string\n folder: string\n submission_count: number\n created_at: string\n is_active: boolean\n}\n\nexport default async function formsList(): Promise<void> {\n const data = await apiGet<{ forms: FormInfo[] }>('/api/v1/forms', { authenticated: true })\n const rows = (data.forms || []).map(f => ({\n id: chalk.dim(f.id.slice(0, 8)),\n name: chalk.hex('#4FC3F7')(f.name),\n folder: chalk.dim(f.folder || '-'),\n submissions: String(f.submission_count),\n created: formatDate(f.created_at),\n active: f.is_active ? chalk.green('yes') : chalk.yellow('no'),\n }))\n console.log(renderTable(rows, [\n { key: 'id', label: 'ID' },\n { key: 'name', label: 'Name' },\n { key: 'folder', label: 'Folder' },\n { key: 'submissions', label: 'Submissions' },\n { key: 'created', label: 'Created' },\n { key: 'active', label: 'Active' },\n ]))\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import {f,m}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import e from'chalk';async function u(n,b){let t=await d(`/api/v1/forms/${n}/submissions`,{authenticated:true});if(f()){m(t.submissions);return}let l=(t.submissions||[]).map(i=>({id:e.dim(i.id.slice(0,8)),file:i.file_name,submitted:c(i.submitted_at),name:i.submitter_name||e.dim("-"),email:i.submitter_email||e.dim("-")}));console.log(a(l,[{key:"id",label:"ID"},{key:"file",label:"File"},{key:"submitted",label:"Submitted"},{key:"name",label:"Name"},{key:"email",label:"Email"}]));}export{u as default};//# sourceMappingURL=forms-submissions-K7W7XYPR.js.map
|
|
2
|
+
//# sourceMappingURL=forms-submissions-K7W7XYPR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/forms/forms-submissions.ts"],"names":["formsSubmissions","id","options","data","apiGet","isJsonMode","logJSON","rows","s","chalk","formatRelative","renderTable"],"mappings":"+NAgBA,eAAOA,CAAAA,CAAwCC,CAAAA,CAAYC,EAA8C,CACvG,IAAMC,CAAAA,CAAO,MAAMC,CAAAA,CAAsC,CAAA,cAAA,EAAiBH,CAAE,CAAA,YAAA,CAAA,CAAgB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACnH,GAAII,CAAAA,EAAW,CAAG,CAChBC,CAAAA,CAAQH,CAAAA,CAAK,WAAW,EACxB,MACF,CACA,IAAMI,CAAAA,CAAAA,CAAQJ,CAAAA,CAAK,WAAA,EAAe,EAAC,EAAG,GAAA,CAAIK,CAAAA,GAAM,CAC9C,EAAA,CAAIC,CAAAA,CAAM,IAAID,CAAAA,CAAE,EAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,EAC9B,IAAA,CAAMA,CAAAA,CAAE,SAAA,CACR,SAAA,CAAWE,CAAAA,CAAeF,CAAAA,CAAE,YAAY,CAAA,CACxC,IAAA,CAAMA,CAAAA,CAAE,cAAA,EAAkBC,CAAAA,CAAM,GAAA,CAAI,GAAG,CAAA,CACvC,KAAA,CAAOD,CAAAA,CAAE,eAAA,EAAmBC,CAAAA,CAAM,GAAA,CAAI,GAAG,CAC3C,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,GAAA,CAAIE,CAAAA,CAAYJ,EAAM,CAC5B,CAAE,GAAA,CAAK,IAAA,CAAM,KAAA,CAAO,IAAK,EACzB,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,WAAA,CAAa,KAAA,CAAO,WAAY,CAAA,CACvC,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAQ,CACjC,CAAC,CAAC,EACJ","file":"forms-submissions-K7W7XYPR.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport { logJSON } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\n\ninterface Submission {\n id: string\n submitted_at: string\n file_name: string\n file_size: number\n submitter_name: string\n submitter_email: string\n}\n\nexport default async function formsSubmissions(id: string, options?: { output?: string }): Promise<void> {\n const data = await apiGet<{ submissions: Submission[] }>(`/api/v1/forms/${id}/submissions`, { authenticated: true })\n if (isJsonMode()) {\n logJSON(data.submissions)\n return\n }\n const rows = (data.submissions || []).map(s => ({\n id: chalk.dim(s.id.slice(0, 8)),\n file: s.file_name,\n submitted: formatRelative(s.submitted_at),\n name: s.submitter_name || chalk.dim('-'),\n email: s.submitter_email || chalk.dim('-'),\n }))\n console.log(renderTable(rows, [\n { key: 'id', label: 'ID' },\n { key: 'file', label: 'File' },\n { key: 'submitted', label: 'Submitted' },\n { key: 'name', label: 'Name' },\n { key: 'email', label: 'Email' },\n ]))\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import {a as a$1}from'./chunk-6TS5Y27A.js';import {e}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {j,k,a as a$2,g}from'./chunk-QT7R3AXE.js';import {m,a as a$3,b,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-C5KZCYJ4.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$3();l=e$2,i=s,t=b(),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=a("Authenticating with SquidCloud...");s.start();try{let e=await N(u.email,u.password);s.succeed(),console.log(a$1()),k(`Welcome to SquidCloud, ${a$2(e.user.username)}!`),g(`Authenticated as ${e.user.email} (${e.user.plan})`);}catch(e){throw s.fail(),e}}export{Q as default};//# sourceMappingURL=login-JJ7YHQB5.js.map
|
|
2
|
+
//# sourceMappingURL=login-JJ7YHQB5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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":"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","file":"login-JJ7YHQB5.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"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {e}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import {o}from'./chunk-C5KZCYJ4.js';async function i(){let o$1=a("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-PS2XK3GB.js.map
|
|
2
|
+
//# sourceMappingURL=logout-PS2XK3GB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/auth/logout.ts"],"names":["logout","spinner","createSpinner","apiPost","clearSession","logSuccess"],"mappings":"oOAKA,eAAOA,CAAAA,EAA+C,CACpD,IAAMC,GAAAA,CAAUC,EAAc,qBAAqB,CAAA,CACnDD,GAAAA,CAAQ,KAAA,EAAM,CACd,GAAI,CACF,MAAME,EAAQ,sBAAA,CAAwB,EAAC,CAAG,CAAE,aAAA,CAAe,CAAA,CAAK,CAAC,EACnE,MAAQ,CAER,CACA,MAAMC,CAAAA,GACNH,GAAAA,CAAQ,OAAA,EAAQ,CAChBI,CAAAA,CAAW,yBAAyB,EACtC","file":"logout-PS2XK3GB.js","sourcesContent":["import { clearSession } from '../../lib/auth/session.js'\nimport { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function logout(): Promise<void> {\n const spinner = createSpinner('Revoking session...')\n spinner.start()\n try {\n await apiPost('/api/auth/ssp/revoke', {}, { authenticated: true })\n } catch {\n // Proceed with local cleanup regardless\n }\n await clearSession()\n spinner.succeed()\n logSuccess('Logged out successfully')\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import n from'fs';import p from'path';async function a(){let o=a$1("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-55G3COYK.js.map
|
|
2
|
+
//# sourceMappingURL=logs-export-55G3COYK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/logs/logs-export.ts"],"names":["logsExport","spinner","createSpinner","data","apiGet","filePath","path","fs","logSuccess"],"mappings":"yQAMA,eAAOA,CAAAA,EAAmD,CACxD,IAAMC,CAAAA,CAAUC,GAAAA,CAAc,mBAAmB,EACjDD,CAAAA,CAAQ,KAAA,EAAM,CACd,IAAME,CAAAA,CAAO,MAAMC,EAA0B,qBAAA,CAAuB,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC3FH,EAAQ,OAAA,EAAQ,CAChB,IAAMI,CAAAA,CAAWC,CAAAA,CAAK,IAAA,CAAK,QAAQ,GAAA,EAAI,CAAG,CAAA,gBAAA,EAAmB,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAA,CAC/EC,CAAAA,CAAG,aAAA,CAAcF,CAAAA,CAAUF,CAAAA,CAAK,KAAA,CAAO,OAAO,CAAA,CAC9CK,CAAAA,CAAW,CAAA,YAAA,EAAeH,CAAQ,CAAA,CAAE,EACtC","file":"logs-export-55G3COYK.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 logsExport(): Promise<void> {\n const spinner = createSpinner('Exporting logs...')\n spinner.start()\n const data = await apiGet<{ jsonl: string }>('/api/v1/logs/export', { authenticated: true })\n spinner.succeed()\n const filePath = path.join(process.cwd(), `squidcloud-logs-${Date.now()}.jsonl`)\n fs.writeFileSync(filePath, data.jsonl, 'utf-8')\n logSuccess(`Exported to ${filePath}`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import 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-5QCEBZ6W.js.map
|
|
2
|
+
//# sourceMappingURL=logs-search-5QCEBZ6W.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/logs/logs-search.ts"],"names":["logsSearch","query","options","params","rows","apiGet","l","formatRelative","chalk","renderTable"],"mappings":"qNAaA,eAAOA,CAAAA,CAAkCC,CAAAA,CAAeC,CAAAA,CAAyD,CAC/G,IAAMC,GAAAA,CAAS,IAAI,eAAA,CAAgB,CAAE,CAAA,CAAGF,CAAM,CAAC,CAAA,CAC3CC,CAAAA,EAAS,IAAA,EAAMC,GAAAA,CAAO,GAAA,CAAI,MAAA,CAAQD,CAAAA,CAAQ,IAAI,CAAA,CAC9CA,CAAAA,EAAS,EAAA,EAAIC,GAAAA,CAAO,GAAA,CAAI,IAAA,CAAMD,CAAAA,CAAQ,EAAE,CAAA,CAG5C,IAAME,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAA6B,CAAA,oBAAA,EAAuBF,GAAM,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACrF,IAAA,EAAQ,EAAC,EAAG,GAAA,CAAIG,CAAAA,GAAM,CACvC,EAAA,CAAIC,CAAAA,CAAeD,CAAAA,CAAE,SAAS,CAAA,CAC9B,KAAA,CAAOA,CAAAA,CAAE,KAAA,GAAU,OAAA,CAAUE,CAAAA,CAAM,GAAA,CAAI,QAAG,CAAA,CAAIF,CAAAA,CAAE,KAAA,GAAU,MAAA,CAASE,CAAAA,CAAM,MAAA,CAAO,QAAG,CAAA,CAAIA,CAAAA,CAAM,GAAA,CAAI,QAAG,CAAA,CACpG,IAAA,CAAMA,CAAAA,CAAM,GAAA,CAAIF,CAAAA,CAAE,IAAA,EAAQ,GAAG,CAAA,CAC7B,OAAA,CAASA,CAAAA,CAAE,OAAA,EAAS,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,EAAK,EACtC,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,GAAA,CAAIG,CAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,IAAA,CAAM,KAAA,CAAO,MAAO,CAAA,CAC3B,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,EAAG,CAAA,CAC1B,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,SAAA,CAAW,KAAA,CAAO,SAAU,CACrC,CAAC,CAAC,EACJ","file":"logs-search-5QCEBZ6W.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface LogEntry {\n id: string\n timestamp: string\n level: string\n type: string\n message: string\n}\n\nexport default async function logsSearch(query: string, options?: { from?: string; to?: string }): Promise<void> {\n const params = new URLSearchParams({ q: query })\n if (options?.from) params.set('from', options.from)\n if (options?.to) params.set('to', options.to)\n\n const data = await apiGet<{ logs: LogEntry[] }>(`/api/v1/logs/search?${params}`, { authenticated: true })\n const rows = (data.logs || []).map(l => ({\n ts: formatRelative(l.timestamp),\n level: l.level === 'error' ? chalk.red('●') : l.level === 'warn' ? chalk.yellow('●') : chalk.dim('●'),\n type: chalk.dim(l.type || '-'),\n message: l.message?.slice(0, 80) || '',\n }))\n console.log(renderTable(rows, [\n { key: 'ts', label: 'Time' },\n { key: 'level', label: '' },\n { key: 'type', label: 'Type' },\n { key: 'message', label: 'Message' },\n ]))\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {a}from'./chunk-NDB6KXYI.js';import {m}from'./chunk-C5KZCYJ4.js';import {WebSocket}from'ws';import e from'chalk';async function $(r){let l=await m();l||(console.error("Not authenticated"),process.exit(1));let c=a().replace(/^http/,"ws"),a$1=r?.filter?`?filter=${encodeURIComponent(r.filter)}`:"",t=new WebSocket(`${c}/api/v1/logs/tail${a$1}`,{headers:{Authorization:`Bearer ${l.access_token}`}});console.log(e.dim(`Streaming live logs...${r?.filter?` (filter: ${r.filter})`:""} (Ctrl+C to stop)`)),console.log(""),t.on("message",s=>{try{let o=JSON.parse(s.toString()),m=e.dim(new Date(o.timestamp).toLocaleTimeString()),f=o.level==="error"?e.red("error"):o.level==="warn"?e.yellow("warn"):o.level==="info"?e.hex("#4FC3F7")("info"):e.dim(o.level||"log"),g=o.type?e.dim(`[${o.type}]`):"",p=o.message||"";console.log(`${m} ${f} ${g} ${p}`);}catch{console.log(s.toString());}}),t.on("error",s=>{console.error(e.red(`WebSocket error: ${s.message}`)),process.exit(1);}),t.on("close",()=>{console.log(e.dim(`
|
|
2
|
+
Connection closed`)),process.exit(0);}),process.on("SIGINT",()=>{t.close(),process.exit(0);});}export{$ as default};//# sourceMappingURL=logs-tail-OYLJ5EOM.js.map
|
|
3
|
+
//# sourceMappingURL=logs-tail-OYLJ5EOM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/logs/logs-tail.ts"],"names":["logsTail","options","session","loadSession","apiBase","getApiBase","filterParam","ws","WebSocket","chalk","data","e","ts","level","type","msg","err"],"mappings":"wHAKA,eAAOA,EAAgCC,CAAAA,CAA8C,CACnF,IAAMC,CAAAA,CAAU,MAAMC,GAAY,CAC7BD,CAAAA,GAAW,QAAQ,KAAA,CAAM,mBAAmB,CAAA,CAAG,OAAA,CAAQ,IAAA,CAAK,CAAC,GAElE,IAAME,CAAAA,CAAUC,GAAW,CAAE,OAAA,CAAQ,QAAS,IAAI,CAAA,CAC5CC,GAAAA,CAAcL,CAAAA,EAAS,MAAA,CAAS,CAAA,QAAA,EAAW,mBAAmBA,CAAAA,CAAQ,MAAM,CAAC,CAAA,CAAA,CAAK,EAAA,CAClFM,EAAK,IAAIC,SAAAA,CAAU,CAAA,EAAGJ,CAAO,CAAA,iBAAA,EAAoBE,GAAW,GAAI,CACpE,OAAA,CAAS,CAAE,aAAA,CAAe,CAAA,OAAA,EAAUJ,EAAQ,YAAY,CAAA,CAAG,CAC7D,CAAC,CAAA,CAED,OAAA,CAAQ,IAAIO,CAAAA,CAAM,GAAA,CAAI,yBAAyBR,CAAAA,EAAS,MAAA,CAAS,aAAaA,CAAAA,CAAQ,MAAM,CAAA,CAAA,CAAA,CAAM,EAAE,CAAA,iBAAA,CAAmB,CAAC,EACxH,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA,CAEdM,CAAAA,CAAG,GAAG,SAAA,CAAYG,CAAAA,EAAiB,CACjC,GAAI,CACF,IAAMC,EAAI,IAAA,CAAK,KAAA,CAAMD,EAAK,QAAA,EAAU,EAC9BE,CAAAA,CAAKH,CAAAA,CAAM,GAAA,CAAI,IAAI,IAAA,CAAKE,CAAAA,CAAE,SAAS,CAAA,CAAE,kBAAA,EAAoB,CAAA,CACzDE,CAAAA,CAAQF,EAAE,KAAA,GAAU,OAAA,CAAUF,CAAAA,CAAM,GAAA,CAAI,OAAO,CAAA,CACnDE,EAAE,KAAA,GAAU,MAAA,CAASF,EAAM,MAAA,CAAO,MAAM,EACxCE,CAAAA,CAAE,KAAA,GAAU,MAAA,CAASF,CAAAA,CAAM,GAAA,CAAI,SAAS,EAAE,MAAM,CAAA,CAAIA,EAAM,GAAA,CAAIE,CAAAA,CAAE,OAAS,KAAK,CAAA,CAC1EG,CAAAA,CAAOH,CAAAA,CAAE,IAAA,CAAOF,CAAAA,CAAM,IAAI,CAAA,CAAA,EAAIE,CAAAA,CAAE,IAAI,CAAA,CAAA,CAAG,CAAA,CAAI,GAC3CI,CAAAA,CAAMJ,CAAAA,CAAE,OAAA,EAAW,EAAA,CACzB,OAAA,CAAQ,GAAA,CAAI,GAAGC,CAAE,CAAA,CAAA,EAAIC,CAAK,CAAA,CAAA,EAAIC,CAAI,IAAIC,CAAG,CAAA,CAAE,EAC7C,CAAA,KAAQ,CACN,OAAA,CAAQ,IAAIL,CAAAA,CAAK,QAAA,EAAU,EAC7B,CACF,CAAC,CAAA,CAEDH,CAAAA,CAAG,EAAA,CAAG,OAAA,CAAUS,CAAAA,EAAe,CAC7B,QAAQ,KAAA,CAAMP,CAAAA,CAAM,IAAI,CAAA,iBAAA,EAAoBO,CAAAA,CAAI,OAAO,CAAA,CAAE,CAAC,CAAA,CAC1D,OAAA,CAAQ,IAAA,CAAK,CAAC,EAChB,CAAC,CAAA,CAEDT,EAAG,EAAA,CAAG,OAAA,CAAS,IAAM,CACnB,OAAA,CAAQ,GAAA,CAAIE,CAAAA,CAAM,GAAA,CAAI;AAAA,iBAAA,CAAqB,CAAC,EAC5C,OAAA,CAAQ,IAAA,CAAK,CAAC,EAChB,CAAC,EAED,OAAA,CAAQ,EAAA,CAAG,SAAU,IAAM,CACzBF,EAAG,KAAA,EAAM,CACT,QAAQ,IAAA,CAAK,CAAC,EAChB,CAAC,EACH","file":"logs-tail-OYLJ5EOM.js","sourcesContent":["import { WebSocket } from 'ws'\nimport chalk from 'chalk'\nimport { loadSession } from '../../lib/auth/session.js'\nimport { getApiBase } from '../../lib/api/cert-pin.js'\n\nexport default async function logsTail(options?: { filter?: string }): Promise<void> {\n const session = await loadSession()\n if (!session) { console.error('Not authenticated'); process.exit(1) }\n\n const apiBase = getApiBase().replace(/^http/, 'ws')\n const filterParam = options?.filter ? `?filter=${encodeURIComponent(options.filter)}` : ''\n const ws = new WebSocket(`${apiBase}/api/v1/logs/tail${filterParam}`, {\n headers: { Authorization: `Bearer ${session.access_token}` },\n })\n\n console.log(chalk.dim(`Streaming live logs...${options?.filter ? ` (filter: ${options.filter})` : ''} (Ctrl+C to stop)`))\n console.log('')\n\n ws.on('message', (data: Buffer) => {\n try {\n const e = JSON.parse(data.toString())\n const ts = chalk.dim(new Date(e.timestamp).toLocaleTimeString())\n const level = e.level === 'error' ? chalk.red('error') :\n e.level === 'warn' ? chalk.yellow('warn') :\n e.level === 'info' ? chalk.hex('#4FC3F7')('info') : chalk.dim(e.level || 'log')\n const type = e.type ? chalk.dim(`[${e.type}]`) : ''\n const msg = e.message || ''\n console.log(`${ts} ${level} ${type} ${msg}`)\n } catch {\n console.log(data.toString())\n }\n })\n\n ws.on('error', (err: Error) => {\n console.error(chalk.red(`WebSocket error: ${err.message}`))\n process.exit(1)\n })\n\n ws.on('close', () => {\n console.log(chalk.dim('\\nConnection closed'))\n process.exit(0)\n })\n\n process.on('SIGINT', () => {\n ws.close()\n process.exit(0)\n })\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {l}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.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-XUW4BMBQ.js.map
|
|
2
|
+
//# sourceMappingURL=monitor-XUW4BMBQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/monitor/monitor.ts"],"names":["monitor","d","apiGet","logRaw","chalk"],"mappings":"qJAWA,eAAOA,GAAgD,CAErD,IAAMC,GADO,MAAMC,CAAAA,CAAqC,4BAA6B,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC7F,UAEfC,CAAAA,CAAO,EAAE,EACTA,CAAAA,CAAOC,CAAAA,CAAM,KAAK,gCAAgC,CAAC,EACnDD,CAAAA,CAAOC,CAAAA,CAAM,IAAI,sBAAA,CAAQ,MAAA,CAAO,EAAE,CAAC,CAAC,EACpCD,CAAAA,CAAO,EAAE,EACTA,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,CAAA,CACjCD,CAAAA,CAAO,CAAA,IAAA,EAAOF,EAAE,KAAA,CAAM,OAAO,IAAIA,CAAAA,CAAE,KAAA,CAAM,KAAK,CAAA,QAAA,CAAU,CAAA,CACpDA,EAAE,KAAA,CAAM,QAAA,CAAW,GAAGE,CAAAA,CAAO,CAAA,IAAA,EAAOC,EAAM,MAAA,CAAO,CAAA,EAAA,EAAKH,EAAE,KAAA,CAAM,QAAQ,WAAW,CAAC,CAAA,CAAE,EACxFE,CAAAA,CAAO,EAAE,EACTA,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,WAAW,CAAC,CAAA,CAAE,CAAA,CACrCD,EAAO,CAAA,IAAA,EAAOF,CAAAA,CAAE,UAAU,OAAO,CAAA,CAAA,EAAIA,EAAE,SAAA,CAAU,KAAK,CAAA,QAAA,CAAU,CAAA,CAC5DA,EAAE,SAAA,CAAU,OAAA,CAAU,GAAGE,CAAAA,CAAO,CAAA,IAAA,EAAOC,EAAM,GAAA,CAAI,CAAA,EAAA,EAAKH,EAAE,SAAA,CAAU,OAAO,UAAU,CAAC,CAAA,CAAE,EAC1FE,CAAAA,CAAO,EAAE,EACTA,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,SAAS,CAAC,CAAA,CAAE,CAAA,CACnCD,EAAO,CAAA,IAAA,EAAOF,CAAAA,CAAE,QAAQ,WAAW,CAAA,MAAA,CAAQ,EACvCA,CAAAA,CAAE,OAAA,CAAQ,SAAW,CAAA,EAAGE,CAAAA,CAAO,OAAOC,CAAAA,CAAM,MAAA,CAAO,KAAKH,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,SAAA,CAAW,CAAC,CAAA,CAAE,CAAA,CAC5FE,EAAO,EAAE,CAAA,CACTA,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,aAAa,CAAC,EAAE,CAAA,CACvCD,CAAAA,CAAO,OAAOF,CAAAA,CAAE,WAAA,CAAY,OAAO,CAAA,CAAA,EAAIA,CAAAA,CAAE,YAAY,KAAK,CAAA,QAAA,CAAU,EAChEA,CAAAA,CAAE,WAAA,CAAY,QAAU,CAAA,EAAGE,CAAAA,CAAO,OAAOC,CAAAA,CAAM,GAAA,CAAI,KAAKH,CAAAA,CAAE,WAAA,CAAY,OAAO,CAAA,QAAA,CAAU,CAAC,EAAE,CAAA,CAC9FE,CAAAA,CAAO,EAAE,EACX","file":"monitor-XUW4BMBQ.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logRaw } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\n\ninterface DashboardData {\n sites: { total: number; healthy: number; degraded: number }\n pipelines: { total: number; healthy: number; failing: number }\n storage: { total_files: number; total_size: number; warnings: number }\n automations: { total: number; healthy: number; failing: number }\n}\n\nexport default async function monitor(): Promise<void> {\n const data = await apiGet<{ dashboard: DashboardData }>('/api/v1/monitor/dashboard', { authenticated: true })\n const d = data.dashboard\n\n logRaw('')\n logRaw(chalk.bold(' SquidCloud Monitor Dashboard'))\n logRaw(chalk.dim(' ───'.repeat(12)))\n logRaw('')\n logRaw(` ${chalk.bold('Sites')}`)\n logRaw(` ${d.sites.healthy}/${d.sites.total} healthy`)\n if (d.sites.degraded > 0) logRaw(` ${chalk.yellow(` ${d.sites.degraded} degraded`)}`)\n logRaw('')\n logRaw(` ${chalk.bold('Pipelines')}`)\n logRaw(` ${d.pipelines.healthy}/${d.pipelines.total} healthy`)\n if (d.pipelines.failing > 0) logRaw(` ${chalk.red(` ${d.pipelines.failing} failing`)}`)\n logRaw('')\n logRaw(` ${chalk.bold('Storage')}`)\n logRaw(` ${d.storage.total_files} files`)\n if (d.storage.warnings > 0) logRaw(` ${chalk.yellow(` ${d.storage.warnings} warnings`)}`)\n logRaw('')\n logRaw(` ${chalk.bold('Automations')}`)\n logRaw(` ${d.automations.healthy}/${d.automations.total} healthy`)\n if (d.automations.failing > 0) logRaw(` ${chalk.red(` ${d.automations.failing} failing`)}`)\n logRaw('')\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.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-C5KZCYJ4.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-TSO65I6U.js.map
|
|
2
|
+
//# sourceMappingURL=monitor-automations-TSO65I6U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/monitor/monitor-automations.ts"],"names":["monitorAutomations","rows","apiGet","a","formatRelative","chalk","renderTable"],"mappings":"4NAYA,eAAOA,CAAAA,EAA2D,CAEhE,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAA4C,6BAAA,CAA+B,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAClG,WAAA,EAAe,EAAC,EAAG,GAAA,CAAIC,CAAAA,GAAM,CAC9C,IAAA,CAAMA,CAAAA,CAAE,KACR,IAAA,CAAMA,CAAAA,CAAE,WAAaC,CAAAA,CAAeD,CAAAA,CAAE,UAAU,CAAA,CAAIE,CAAAA,CAAM,IAAI,OAAO,CAAA,CACrE,KAAM,CAAA,EAAA,CAAIF,CAAAA,CAAE,aAAe,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA,CAC1C,MAAA,CAAQA,CAAAA,CAAE,MAAA,GAAW,SAAA,CAAYE,EAAM,KAAA,CAAM,QAAG,EAAIF,CAAAA,CAAE,MAAA,GAAW,WAAaE,CAAAA,CAAM,GAAA,CAAI,QAAG,CAAA,CAAIA,CAAAA,CAAM,IAAI,QAAG,CAC9G,EAAE,CAAA,CACF,OAAA,CAAQ,IAAIC,GAAAA,CAAYL,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,YAAa,CAAA,CACnC,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,YAAa,CAAA,CACnC,CAAE,GAAA,CAAK,MAAA,CAAQ,MAAO,SAAU,CAAA,CAChC,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,EAAG,CAC7B,CAAC,CAAC,EACJ","file":"monitor-automations-TSO65I6U.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface AutomationHealth {\n name: string\n status: 'healthy' | 'erroring' | 'dormant'\n last_fired: string | null\n success_rate: number\n}\n\nexport default async function monitorAutomations(): Promise<void> {\n const data = await apiGet<{ automations: AutomationHealth[] }>('/api/v1/monitor/automations', { authenticated: true })\n const rows = (data.automations || []).map(a => ({\n name: a.name,\n last: a.last_fired ? formatRelative(a.last_fired) : chalk.dim('never'),\n rate: `${(a.success_rate * 100).toFixed(0)}%`,\n status: a.status === 'healthy' ? chalk.green('●') : a.status === 'erroring' ? chalk.red('●') : chalk.dim('○'),\n }))\n console.log(renderTable(rows, [\n { key: 'name', label: 'Automation' },\n { key: 'last', label: 'Last Fired' },\n { key: 'rate', label: 'Success' },\n { key: 'status', label: '' },\n ]))\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import {c}from'./chunk-G4JU7IUC.js';import'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import t from'chalk';async function 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-OPCTGGRR.js.map
|
|
2
|
+
//# sourceMappingURL=monitor-pipelines-OPCTGGRR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/monitor/monitor-pipelines.ts"],"names":["monitorPipelines","rows","apiGet","p","formatRelative","chalk","renderTable"],"mappings":"qNAYA,eAAOA,CAAAA,EAAyD,CAE9D,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAwC,2BAAA,CAA6B,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EAC5F,SAAA,EAAa,EAAC,EAAG,GAAA,CAAIC,IAAM,CAC5C,IAAA,CAAMA,EAAE,IAAA,CACR,IAAA,CAAMA,EAAE,QAAA,CAAWC,CAAAA,CAAeD,EAAE,QAAQ,CAAA,CAAIE,EAAM,GAAA,CAAI,OAAO,EACjE,IAAA,CAAM,MAAA,CAAOF,EAAE,QAAQ,CAAA,CACvB,OAAQA,CAAAA,CAAE,MAAA,GAAW,UAAYE,CAAAA,CAAM,KAAA,CAAM,QAAG,CAAA,CAAIF,CAAAA,CAAE,SAAW,UAAA,CAAaE,CAAAA,CAAM,OAAO,QAAG,CAAA,CAAIA,EAAM,GAAA,CAAI,QAAG,CACjH,CAAA,CAAE,CAAA,CACF,QAAQ,GAAA,CAAIC,CAAAA,CAAYL,EAAM,CAC5B,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,UAAW,CAAA,CACjC,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,UAAW,CAAA,CACjC,CAAE,IAAK,MAAA,CAAQ,KAAA,CAAO,UAAW,CAAA,CACjC,CAAE,IAAK,QAAA,CAAU,KAAA,CAAO,EAAG,CAC7B,CAAC,CAAC,EACJ","file":"monitor-pipelines-OPCTGGRR.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatRelative } from '../../lib/utils/format.js'\nimport chalk from 'chalk'\n\ninterface PipelineHealth {\n name: string\n status: 'healthy' | 'degraded' | 'failing'\n last_run: string | null\n runs_24h: number\n}\n\nexport default async function monitorPipelines(): Promise<void> {\n const data = await apiGet<{ pipelines: PipelineHealth[] }>('/api/v1/monitor/pipelines', { authenticated: true })\n const rows = (data.pipelines || []).map(p => ({\n name: p.name,\n last: p.last_run ? formatRelative(p.last_run) : chalk.dim('never'),\n runs: String(p.runs_24h),\n status: p.status === 'healthy' ? chalk.green('●') : p.status === 'degraded' ? chalk.yellow('●') : chalk.red('●'),\n }))\n console.log(renderTable(rows, [\n { key: 'name', label: 'Pipeline' },\n { key: 'last', label: 'Last Run' },\n { key: 'runs', label: '24h Runs' },\n { key: 'status', label: '' },\n ]))\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {a}from'./chunk-THMWE2I6.js';import'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import t from'chalk';async function o(){let i=((await d("/api/v1/monitor/sites",{authenticated:true})).sites||[]).map(e=>({slug:e.slug,uptime:`${(e.uptime*100).toFixed(1)}%`,checked:e.last_check?new Date(e.last_check).toLocaleTimeString():"-",response:`${e.response_time_ms}ms`,status:e.status==="healthy"?t.green("\u25CF healthy"):e.status==="degraded"?t.yellow("\u25CF degraded"):t.red("\u25CF down")}));console.log(a(i,[{key:"slug",label:"Site"},{key:"uptime",label:"Uptime"},{key:"checked",label:"Last Check"},{key:"response",label:"Response"},{key:"status",label:"Status"}]));}export{o as default};//# sourceMappingURL=monitor-sites-OLSGE4V2.js.map
|
|
2
|
+
//# sourceMappingURL=monitor-sites-OLSGE4V2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/monitor/monitor-sites.ts"],"names":["monitorSites","rows","apiGet","s","chalk","renderTable"],"mappings":"iLAYA,eAAOA,CAAAA,EAAqD,CAE1D,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAgC,uBAAA,CAAyB,CAAE,cAAe,IAAK,CAAC,CAAA,EAChF,KAAA,EAAS,EAAC,EAAG,IAAIC,CAAAA,GAAM,CACxC,IAAA,CAAMA,CAAAA,CAAE,IAAA,CACR,MAAA,CAAQ,IAAIA,CAAAA,CAAE,MAAA,CAAS,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,IACtC,OAAA,CAASA,CAAAA,CAAE,UAAA,CAAa,IAAI,IAAA,CAAKA,CAAAA,CAAE,UAAU,CAAA,CAAE,kBAAA,EAAmB,CAAI,GAAA,CACtE,QAAA,CAAU,CAAA,EAAGA,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAC/B,MAAA,CAAQA,CAAAA,CAAE,MAAA,GAAW,SAAA,CAAYC,EAAM,KAAA,CAAM,gBAAW,CAAA,CAAID,CAAAA,CAAE,MAAA,GAAW,UAAA,CAAaC,EAAM,MAAA,CAAO,iBAAY,CAAA,CAAIA,CAAAA,CAAM,GAAA,CAAI,aAAQ,CACvI,CAAA,CAAE,CAAA,CACF,OAAA,CAAQ,GAAA,CAAIC,CAAAA,CAAYJ,CAAAA,CAAM,CAC5B,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,MAAO,CAAA,CAC7B,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,QAAS,CAAA,CACjC,CAAE,IAAK,SAAA,CAAW,KAAA,CAAO,YAAa,CAAA,CACtC,CAAE,GAAA,CAAK,WAAY,KAAA,CAAO,UAAW,CAAA,CACrC,CAAE,GAAA,CAAK,QAAA,CAAU,MAAO,QAAS,CACnC,CAAC,CAAC,EACJ","file":"monitor-sites-OLSGE4V2.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport chalk from 'chalk'\n\ninterface SiteHealth {\n slug: string\n uptime: number\n last_check: string\n response_time_ms: number\n status: 'healthy' | 'degraded' | 'down'\n}\n\nexport default async function monitorSites(): Promise<void> {\n const data = await apiGet<{ sites: SiteHealth[] }>('/api/v1/monitor/sites', { authenticated: true })\n const rows = (data.sites || []).map(s => ({\n slug: s.slug,\n uptime: `${(s.uptime * 100).toFixed(1)}%`,\n checked: s.last_check ? new Date(s.last_check).toLocaleTimeString() : '-',\n response: `${s.response_time_ms}ms`,\n status: s.status === 'healthy' ? chalk.green('● healthy') : s.status === 'degraded' ? chalk.yellow('● degraded') : chalk.red('● down'),\n }))\n console.log(renderTable(rows, [\n { key: 'slug', label: 'Site' },\n { key: 'uptime', label: 'Uptime' },\n { key: 'checked', label: 'Last Check' },\n { key: 'response', label: 'Response' },\n { key: 'status', label: 'Status' },\n ]))\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {d}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import {l}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import e from'chalk';async function t(){let r=(await d("/api/v1/monitor/storage",{authenticated:true})).health;l(""),l(e.bold(" Storage Health Report")),l(e.dim(" \u2500\u2500\u2500".repeat(10))),l(` ${e.bold("Broken Shares:")} ${r.broken_shares>0?e.red(r.broken_shares):e.green("0")}`),l(` ${e.bold("Orphaned Files:")} ${r.orphaned_files>0?e.yellow(r.orphaned_files):e.green("0")}`),l(` ${e.bold("Corrupted:")} ${r.corrupted_uploads>0?e.red(r.corrupted_uploads):e.green("0")}`),l(` ${e.bold("Near Limit:")} ${r.near_limit_folders>0?e.yellow(r.near_limit_folders):e.green("0")}`),l(` ${e.bold("Stale (90d):")} ${r.stale_files_90d>0?e.yellow(r.stale_files_90d):e.green("0")}`),l("");}export{t as default};//# sourceMappingURL=monitor-storage-CVFXC3ZS.js.map
|
|
2
|
+
//# sourceMappingURL=monitor-storage-CVFXC3ZS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/monitor/monitor-storage.ts"],"names":["monitorStorage","h","apiGet","logRaw","chalk"],"mappings":"qJAYA,eAAOA,CAAAA,EAAuD,CAE5D,IAAMC,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAkC,yBAAA,CAA2B,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACxF,MAAA,CAEfC,CAAAA,CAAO,EAAE,CAAA,CACTA,CAAAA,CAAOC,CAAAA,CAAM,IAAA,CAAK,yBAAyB,CAAC,CAAA,CAC5CD,CAAAA,CAAOC,CAAAA,CAAM,GAAA,CAAI,sBAAA,CAAQ,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,CACpCD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,gBAAgB,CAAC,QAAQH,CAAAA,CAAE,aAAA,CAAgB,CAAA,CAAIG,CAAAA,CAAM,GAAA,CAAIH,CAAAA,CAAE,aAAa,CAAA,CAAIG,EAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CACrHD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,iBAAiB,CAAC,CAAA,IAAA,EAAOH,CAAAA,CAAE,cAAA,CAAiB,CAAA,CAAIG,CAAAA,CAAM,MAAA,CAAOH,EAAE,cAAc,CAAA,CAAIG,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CAC1HD,EAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,YAAY,CAAC,CAAA,SAAA,EAAYH,CAAAA,CAAE,iBAAA,CAAoB,EAAIG,CAAAA,CAAM,GAAA,CAAIH,CAAAA,CAAE,iBAAiB,CAAA,CAAIG,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CAC7HD,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,IAAA,CAAK,aAAa,CAAC,WAAWH,CAAAA,CAAE,kBAAA,CAAqB,CAAA,CAAIG,CAAAA,CAAM,MAAA,CAAOH,CAAAA,CAAE,kBAAkB,CAAA,CAAIG,EAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CAClID,CAAAA,CAAO,CAAA,EAAA,EAAKC,CAAAA,CAAM,KAAK,cAAc,CAAC,CAAA,OAAA,EAAUH,CAAAA,CAAE,eAAA,CAAkB,CAAA,CAAIG,CAAAA,CAAM,MAAA,CAAOH,EAAE,eAAe,CAAA,CAAIG,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA,CAAE,CAAA,CAC5HD,CAAAA,CAAO,EAAE,EACX","file":"monitor-storage-CVFXC3ZS.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { logRaw } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\n\ninterface StorageHealth {\n broken_shares: number\n orphaned_files: number\n corrupted_uploads: number\n near_limit_folders: number\n stale_files_90d: number\n}\n\nexport default async function monitorStorage(): Promise<void> {\n const data = await apiGet<{ health: StorageHealth }>('/api/v1/monitor/storage', { authenticated: true })\n const h = data.health\n\n logRaw('')\n logRaw(chalk.bold(' Storage Health Report'))\n logRaw(chalk.dim(' ───'.repeat(10)))\n logRaw(` ${chalk.bold('Broken Shares:')} ${h.broken_shares > 0 ? chalk.red(h.broken_shares) : chalk.green('0')}`)\n logRaw(` ${chalk.bold('Orphaned Files:')} ${h.orphaned_files > 0 ? chalk.yellow(h.orphaned_files) : chalk.green('0')}`)\n logRaw(` ${chalk.bold('Corrupted:')} ${h.corrupted_uploads > 0 ? chalk.red(h.corrupted_uploads) : chalk.green('0')}`)\n logRaw(` ${chalk.bold('Near Limit:')} ${h.near_limit_folders > 0 ? chalk.yellow(h.near_limit_folders) : chalk.green('0')}`)\n logRaw(` ${chalk.bold('Stale (90d):')} ${h.stale_files_90d > 0 ? chalk.yellow(h.stale_files_90d) : chalk.green('0')}`)\n logRaw('')\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {e}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';async function n(e$1){let c=a(`Cancelling run ${e$1.slice(0,8)}...`);c.start(),await e(`/api/v1/scripts/runs/${e$1}/cancel`,{},{authenticated:true}),c.succeed(),g(`Run ${e$1.slice(0,8)} cancelled`);}export{n as default};//# sourceMappingURL=scripts-cancel-OR2UFFC3.js.map
|
|
2
|
+
//# sourceMappingURL=scripts-cancel-OR2UFFC3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/scripts/scripts-cancel.ts"],"names":["scriptsCancel","runId","spinner","createSpinner","apiPost","logSuccess"],"mappings":"4NAIA,eAAOA,EAAqCC,GAAAA,CAA8B,CACxE,IAAMC,CAAAA,CAAUC,CAAAA,CAAc,kBAAkBF,GAAAA,CAAM,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,GAAA,CAAK,CAAA,CACtEC,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,CAAA,qBAAA,EAAwBH,GAAK,CAAA,OAAA,CAAA,CAAW,EAAC,CAAG,CAAE,cAAe,IAAK,CAAC,EACjFC,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,OAAOJ,GAAAA,CAAM,KAAA,CAAM,EAAG,CAAC,CAAC,YAAY,EACjD","file":"scripts-cancel-OR2UFFC3.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function scriptsCancel(runId: string): Promise<void> {\n const spinner = createSpinner(`Cancelling run ${runId.slice(0, 8)}...`)\n spinner.start()\n await apiPost(`/api/v1/scripts/runs/${runId}/cancel`, {}, { authenticated: true })\n spinner.succeed()\n logSuccess(`Run ${runId.slice(0, 8)} cancelled`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {g}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g as g$1}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';import s from'inquirer';async function c(e){let{confirm:p}=await s.prompt([{type:"input",name:"confirm",message:`Type "${e}" to permanently delete this pipeline:`,validate:n=>n===e?true:"Type the exact name to confirm"}]);if(p!==e)return;let t=a(`Deleting "${e}"...`);t.start(),await g(`/api/v1/scripts/${e}`,{authenticated:true}),t.succeed(),g$1(`Pipeline "${e}" deleted`);}export{c as default};//# sourceMappingURL=scripts-delete-HMHBIL4G.js.map
|
|
2
|
+
//# sourceMappingURL=scripts-delete-HMHBIL4G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/scripts/scripts-delete.ts"],"names":["scriptsDelete","name","confirm","inquirer","v","spinner","createSpinner","apiDelete","logSuccess"],"mappings":"2PAKA,eAAOA,CAAAA,CAAqCC,CAAAA,CAA6B,CACvE,GAAM,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAI,MAAMC,EAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,OAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,CAAA,MAAA,EAASF,CAAI,CAAA,sCAAA,CAAA,CACtB,QAAA,CAAWG,CAAAA,EAAcA,CAAAA,GAAMH,CAAAA,CAAO,IAAA,CAAO,gCAC/C,CAAC,CAAC,CAAA,CACF,GAAIC,CAAAA,GAAYD,CAAAA,CAAM,OAEtB,IAAMI,CAAAA,CAAUC,CAAAA,CAAc,CAAA,UAAA,EAAaL,CAAI,CAAA,IAAA,CAAM,CAAA,CACrDI,CAAAA,CAAQ,KAAA,GACR,MAAME,CAAAA,CAAU,CAAA,gBAAA,EAAmBN,CAAI,CAAA,CAAA,CAAI,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAClEI,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,GAAAA,CAAW,CAAA,UAAA,EAAaP,CAAI,WAAW,EACzC","file":"scripts-delete-HMHBIL4G.js","sourcesContent":["import inquirer from 'inquirer'\nimport { apiDelete } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function scriptsDelete(name: string): Promise<void> {\n const { confirm } = await inquirer.prompt([{\n type: 'input',\n name: 'confirm',\n message: `Type \"${name}\" to permanently delete this pipeline:`,\n validate: (v: string) => v === name ? true : 'Type the exact name to confirm',\n }])\n if (confirm !== name) return\n\n const spinner = createSpinner(`Deleting \"${name}\"...`)\n spinner.start()\n await apiDelete(`/api/v1/scripts/${name}`, { authenticated: true })\n spinner.succeed()\n logSuccess(`Pipeline \"${name}\" deleted`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {e}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';async function o(i){let t=a(`Disabling "${i}"...`);t.start(),await e(`/api/v1/scripts/${i}/disable`,{},{authenticated:true}),t.succeed(),g(`Pipeline "${i}" disabled`);}export{o as default};//# sourceMappingURL=scripts-disable-ABFUD34Y.js.map
|
|
2
|
+
//# sourceMappingURL=scripts-disable-ABFUD34Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/scripts/scripts-disable.ts"],"names":["scriptsDisable","name","spinner","createSpinner","apiPost","logSuccess"],"mappings":"4NAIA,eAAOA,CAAAA,CAAsCC,CAAAA,CAA6B,CACxE,IAAMC,EAAUC,CAAAA,CAAc,CAAA,WAAA,EAAcF,CAAI,CAAA,IAAA,CAAM,CAAA,CACtDC,CAAAA,CAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,CAAA,gBAAA,EAAmBH,CAAI,CAAA,QAAA,CAAA,CAAY,EAAC,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC5EC,CAAAA,CAAQ,OAAA,EAAQ,CAChBG,CAAAA,CAAW,CAAA,UAAA,EAAaJ,CAAI,YAAY,EAC1C","file":"scripts-disable-ABFUD34Y.js","sourcesContent":["import { apiPost } from '../../lib/api/client.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\n\nexport default async function scriptsDisable(name: string): Promise<void> {\n const spinner = createSpinner(`Disabling \"${name}\"...`)\n spinner.start()\n await apiPost(`/api/v1/scripts/${name}/disable`, {}, { authenticated: true })\n spinner.succeed()\n logSuccess(`Pipeline \"${name}\" disabled`)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-ON3YIMVG.js';import'./chunk-6TS5Y27A.js';import {e}from'./chunk-RWWBBPEJ.js';import'./chunk-NDB6KXYI.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import'./chunk-C5KZCYJ4.js';async function s(t){let e$1=a(`Enabling "${t}"...`);e$1.start(),await e(`/api/v1/scripts/${t}/enable`,{},{authenticated:true}),e$1.succeed(),g(`Pipeline "${t}" enabled`);}export{s as default};//# sourceMappingURL=scripts-enable-VMRAPULS.js.map
|
|
2
|
+
//# sourceMappingURL=scripts-enable-VMRAPULS.js.map
|